>纯新手,慢慢学。。
代码地址:https://github.com/klren0312/stm32_wifi
使用的器件:
- STM32F103CBT6 单片机
- ESP8266-01S wifi模块
- SHT20温湿度
使用的Node.js服务端:
- net模块
- express
- node-mysql
文章列表:
- [搭建简易的物联网服务端和客户端-STM32(一)](http://www.jianshu.com/p/233ce211446f)
- [搭建简易的物联网服务端和客户端-Nodejs_net(二)](http://www.jianshu.com/p/289683c96346)
- [搭建简易的物联网服务端和客户端-Nodejs_mysql(三)](http://www.jianshu.com/p/3ec5b5ec53a5)
- [搭建简易的物联网服务端和客户端-net+mysql(四)](http://www.jianshu.com/p/80eff97e39b6)
- [搭建简易的物联网服务端和客户端-第一次融合(五)](http://www.jianshu.com/p/16799e256e0a)
- [搭建简易的物联网服务端和客户端-Nodejs_express服务(六)](http://www.jianshu.com/p/462144651ee8)
- [搭建简易的物联网服务端和客户端-ECharts数据显示(七)](http://www.jianshu.com/p/855d7fc25d10)
- [搭建简易的物联网服务端和客户端-整合(八)](http://www.jianshu.com/p/e8ab20c70b5f)
- [搭建简易的物联网服务端和客户端-Maibu显示(九)](http://www.jianshu.com/p/54af2d858908)
- [搭建简易的物联网服务端和客户端-DCloud手机端(十)](http://www.jianshu.com/p/61f236902b8b)
- [搭建简易的物联网服务端和客户端-第一次增补(十一)](http://www.jianshu.com/p/9f19445453a7)
- [搭建简易的物联网服务端和客户端-第二次增补(十二)](http://www.jianshu.com/p/bf0103f3b783)
- [搭建简易的物联网服务端和客户端-数据库功能增加(十三)](http://www.jianshu.com/p/b88704af9ac5)
- [搭建简易的物联网服务端和客户端-微博接口(十四)](http://www.jianshu.com/p/82591f02530a)
- [搭建简易的物联网服务端和客户端-微博发送信息(十五)](http://www.jianshu.com/p/340110f5de8d)
- [搭建简易的物联网服务端和客户端-蓝牙控制(十六)](http://www.jianshu.com/p/273ecb73ac9b)
- [搭建简易的物联网服务端和客户端-Cortana控制(十七)](http://www.jianshu.com/p/6a60c48eefe5)
- [搭建简易的物联网服务端和客户端-Nodejs_PM2(十八)](http://www.jianshu.com/p/74d4a58eeb3d)
- [搭建简易的物联网服务端和客户端-邮件通知(十九)](http://www.jianshu.com/p/2a17b2bd57cb)
# 一、单片机相关代码(只提供网络相关代码)
## 1.esp8266相关配置代码
1)esp8266.h(宏定义一些AT指令)
```
\#define AT "AT\r\n" //测试esp8266是否工作正常
\#define CWMODE "AT+CWMODE=3\r\n" //设置wifi模块的模式,3为STA+AP模式
\#define RST "AT+RST\r\n" //重启
\#define CIFSR "AT+CIFSR\r\n" //查看ip
\#define CWJAP "AT+CWJAP=\"nb\",\"123456789\"\r\n" // 设置要连接的无线路由器的 ssid 和 password
\#define CIPSTART "AT+CIPSTART=\"TCP\",\"119.29.201.31\",4001\r\n" //设置服务器IP和端口
\#define CIPMODE0 "AT+CIPMODE=0\r\n" //非透传模式
\#define CIPMODE1 "AT+CIPMODE=1\r\n" //透传模式
\#define CIPSEND "AT+CIPSEND\r\n" //发送
\#define CIPSTATUS "AT+CIPSTATUS\r\n" //网络状态查询
extern void ESP8266_Rst(void);
extern void ESP8266_Init(void);
```
2)esp8266.c(两个配置函数)
```
/**
* @brief ESP8266硬件复位
**/
void ESP8266_Rst(void)
{
GPIO\_InitTypeDef GPIO\_InitStructure;
//Pb5--对应ESP8266的reset引脚;
RCC\_APB2PeriphClockCmd(RCC\_APB2Periph\_GPIOB, ENABLE);
GPIO\_InitStructure.GPIO\_Pin = GPIO\_Pin\_5;
GPIO\_InitStructure.GPIO\_Speed = GPIO\_Speed\_50MHz;
GPIO\_InitStructure.GPIO\_Mode = GPIO\_Mode\_Out\_PP;
GPIO\_Init(GPIOB, &GPIO\_InitStructure);
GPIO\_ResetBits(GPIOB,GPIO\_Pin\_5);
mDelay(100);
GPIO\_SetBits(GPIOB,GPIO\_Pin\_5);
mDelay(100);
}
/*
* @brief ESP8266模块初始化
*/
void ESP8266_Init(void)
{
ESP8266_Rst();
\#if 1
SendCmd(AT, "OK", 1000); //模块有效性检查
SendCmd(CWMODE, "OK", 1000); //模块工作模式
SendCmd(RST, "OK", 2000); //模块重置
SendCmd(CIFSR, "OK", 1000); //查询网络信息
SendCmd(CWJAP, "OK", 2000); //配置需要连接的WIFI热点SSID和密码
SendCmd(CIPSTART, "OK", 2000); //TCP连接
SendCmd(CIPMODE1, "OK", 1000); //配置透传模式
SendCmd(CIPSEND, ">", 1000); //进入透传模式
USART2_Clear();
\#endif
}
```
3)usart2.c中的SendCmd函数(USART2串口发送AT命令使用)
```
void SendCmd(char* cmd, char* result, int timeOut)
{
while(1)
{
USART2_Clear();
USART2_Write(USART2, (unsigned char *)cmd, strlen((const char *)cmd));
mDelay(timeOut);
printf("%s %d cmd:%s,rsp:%s\n", \_\_func\_\_, \_\_LINE\_\_, cmd, usart2\_rcv\_buf);
if((NULL != strstr((const char *)usart2\_rcv\_buf, result))) //判断是否有预期的结果
{
break;
}
else
{
mDelay(100);
}
}
}
```
## 2.拼接发送字符串代码
1)获取温湿度(sht20代码就不放出来了)
```
/* 获取温湿度 */
SHT2x\_MeasureHM(SHT20\_Measurement\_T\_HM, &temp);
mDelay(500);
SHT2x\_MeasureHM(SHT20\_Measurement\_RH\_HM, &humi);
/* 转化为字符串形式 */
sprintf(tempStr, "%d", temp);
sprintf(humiStr, "%d", humi);
```
2)拼接代码(拼接成json格式)
```
/**
* @brief 拼接
* @param pkt 缓存指针
* @param dsid1 数据流1ID
* @param val1 字符串形式的数据点1的值
* @param dsid2 数据流2ID
* @param val2 字符串形式的数据点2的值
* @retval 整个包的长度
*/
uint32\_t HTTP\_NewPostPacket(char *pkt, char *dsid1, char *val1, char *dsid2, char *val2)
{
char dataBuf[50] = {0};
char lenBuf[10] = {0};
*pkt = 0;
sprintf(dataBuf, "{\"%s\":\"%s\",\"%s\":\"%s\"}", dsid1, val1, dsid2, val2);
sprintf(lenBuf, "%d", strlen(dataBuf));
strcat(pkt, dataBuf);
return strlen(pkt);
}
```
# 二、Node.js相关代码
## 1.TCP服务端代码
```
var net = require('net')
net.createServer(function(socket){
socket.on('data',function(data){//接受处理
console.log('got:',data.toString());//打印接收到的数据
socket.write('I have received') //接受后回复
});
socket.write('Ready to receive your message!')//客户端连接成功后回复
}).listen(4001);
```
# 三、结果截图
## 1.服务端打印的信息截图
![服务端打印的信息截图](https://leanote.com/api/file/getImage?fileId=58cb384aab64417ac3007b02)
## 2.客户端串口输出的信息截图
![客户端串口输出的信息截图](https://leanote.com/api/file/getImage?fileId=58cb384aab64417ac3007b01)
>服务端慢慢完善中,一步一步记录学习
2017.3.17
# 四、Nodejs TCP 服务端和客户端
>用客户端模拟STM32发送过来的字符串。主要是为了解决对字符串的处理。
## 1.客户端代码
```
const net = require('net')
const client = net.connect({port:4001},() => {//向服务端发送
console.log("connected to server!");
client.write("{\"tem\":\"20\",\"hum\":\"80\"}");
});
client.on('data',(data) => {//从服务端接受
console.log(data.toString());
client.end();
});
client.on('end',() => {//断开连接
console.log('disconnected from server');
})
```
发送的字符串是json格式:`"{"tem":"20","hum":"80"}"`
## 3.服务端代码
```
var net = require('net')
net.createServer(function(socket){
socket.on('data',function(data){//接受服务端数据
console.log('got:',data.toString());
var text = JSON.parse(data.toString());//将接收到的字符串转换成json对象
console.log(text);//获取json对象
console.log(text.tem);//获取tem的值
});
socket.on('end',function(data){
console.log('end');
});
socket.write('Ready to receive your message!')
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
使用的器件: STM32F103CBT6 单片机 ESP8266-01S wifi模块 SHT20温湿度 使用的Node.js服务端: net模块 express node-mysql 该资源内项目源码是个人的课程设计作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 -------- -------------------------------------------------------------------------------------------------------
资源推荐
资源详情
资源评论
收起资源包目录
基于stm32 + esp8266 与 nodejs 服务端通信 (546个子文件)
ringbuffer.__i 536B
edpdemo.__i 527B
cjson.__i 519B
gpio.__i 506B
stm32f103.uvgui.admin007 74KB
stmf10x-demo.uvgui.admin007 71KB
H5201A237_0326211256.apk 7.98MB
H5201A237_0326205658.apk 7.98MB
H5201A237_0326205304.apk 7.98MB
H5201A237_0326200816.apk 7.98MB
onenetdemo.axf 333KB
stmf10x-demo.axf 302KB
onenetdemo.uvgui_xufang.bak 72KB
onenetdemo_uvproj.bak 19KB
onenetdemo_uvopt.bak 18KB
startup_stm32f10x_ld.s.bak 12KB
onenetdemo_sct.Bak 464B
keilkilll.bat 372B
keilkilll.bat 372B
ASCII_12.bin 0B
ASCII_10.bin 0B
bg.bmp 2KB
counter_bg.bmp 2KB
counter_icon.bmp 158B
underline.bmp 70B
stm32f10x_tim.c 104KB
stm32f10x_tim.c 104KB
stm32f10x_tim.c 104KB
stm32f10x_flash.c 59KB
stm32f10x_flash.c 59KB
stm32f10x_flash.c 59KB
stm32f10x_rcc.c 49KB
stm32f10x_rcc.c 49KB
stm32f10x_rcc.c 49KB
stm32f10x_adc.c 45KB
stm32f10x_adc.c 45KB
stm32f10x_adc.c 45KB
stm32f10x_i2c.c 43KB
stm32f10x_i2c.c 43KB
stm32f10x_i2c.c 43KB
stm32f10x_can.c 43KB
stm32f10x_can.c 43KB
stm32f10x_can.c 43KB
stm32f10x_usart.c 36KB
stm32f10x_usart.c 36KB
stm32f10x_usart.c 36KB
system_stm32f10x.c 35KB
system_stm32f10x.c 35KB
system_stm32f10x.c 35KB
stm32f10x_fsmc.c 34KB
stm32f10x_fsmc.c 34KB
stm32f10x_fsmc.c 34KB
stm32f10x_spi.c 29KB
stm32f10x_spi.c 29KB
stm32f10x_spi.c 29KB
stm32f10x_dma.c 28KB
stm32f10x_dma.c 28KB
stm32f10x_dma.c 28KB
stm32f10x_sdio.c 27KB
stm32f10x_sdio.c 27KB
stm32f10x_sdio.c 27KB
stm32f10x_gpio.c 22KB
stm32f10x_gpio.c 22KB
stm32f10x_gpio.c 22KB
stm32f10x_dac.c 18KB
stm32f10x_dac.c 18KB
stm32f10x_dac.c 18KB
net_device.c 17KB
core_cm3.c 16KB
core_cm3.c 16KB
core_cm3.c 16KB
net_device.c 14KB
net_device.c 14KB
sht20.c 13KB
stm32f10x_cec.c 11KB
stm32f10x_cec.c 11KB
stm32f10x_cec.c 11KB
main.c 11KB
oled.c 10KB
i2c.c 10KB
onenet.c 9KB
hal_i2c.c 9KB
stm32f10x_pwr.c 8KB
stm32f10x_pwr.c 8KB
stm32f10x_pwr.c 8KB
usart.c 8KB
stm32f10x_rtc.c 8KB
stm32f10x_rtc.c 8KB
stm32f10x_rtc.c 8KB
btc.c 8KB
stm32f10x_bkp.c 8KB
stm32f10x_bkp.c 8KB
stm32f10x_bkp.c 8KB
misc.c 7KB
misc.c 7KB
misc.c 7KB
stm32f10x_exti.c 7KB
stm32f10x_exti.c 7KB
stm32f10x_exti.c 7KB
stm32f10x_it.c 6KB
共 546 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
机智的程序员zero
- 粉丝: 1945
- 资源: 4199
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功