ESP8266透明串口转MQTT模块使用说明
更新历史
日期 |
撰写 |
备注 |
2023.9.2 |
YTH |
|
|
|
|
目录
1 模块功能... 2
2 串口驱动... 2
3 快速验证功能... 3
3.1 模块默认功能:... 3
3.2 手机开启热点... 3
3.3 云端查看... 3
3.4 串口调试器... 4
4 修改ESP8266参数... 4
4.1 硬件环境准备... 4
4.2 PC连接WIFI路由 “TTT01-xxxx”... 4
4.3 登录ESP8266. 5
4.4 配置参数... 5
5 MCU编程参考... 6
1 模块功能
在ESP-01S模块基础上进行了程序升级,串口数据直接转MQTT传输,支持OneNET,百度云,腾讯云等,无需关注AT指令集。
2 串口驱动
如果已经安装了CH340驱动程序,跳过本步骤。
参考连接。
https://www.wch.cn/videos/ch340.html
3 快速验证功能
3.1 模块默认功能:
1)Dev->模块->(onenet 或者 终端):
数据格式例如: {“LED”:1}
2)(onenet 或者 终端) ->模块-> Dev:
主题例如: cmd/mb
数据格式例如: {“LED”:1}
3.2 手机开启热点
Ssid:easy
PWD:12345678
3.3 云端查看
1)登录OneNET
https://open.iot.10086.cn/passport/login/
用户名:R1XB67t5YWoSBF
密码: @yan123456
2) 进入测试项目
https://open.iot.10086.cn/develop/mqtt/product/#/device/list?pid=614404
3.4 串口调试器
4 修改ESP8266参数
4.1 硬件环境准备
如果配置了模块手机热点(请关闭手机热点),如果配置了模块连接路由器(请断电路由器)。
4.2 PC连接WIFI路由 “TTT01-xxxx”
这个动作可能需要比较长的等待。
4.3 登录ESP8266
HTTP:192.168.4.1
4.4 配置参数
序号 |
参数名 |
值 |
备注 |
1 |
串口参数 |
9600,19200,38400,115200 |
n,8,1 默认8个数据位,1个停止位,无校验位。 |
2 |
路由网络 |
|
不用中文,不留空格 |
3 |
路由密码 |
|
8位及以上 |
4 |
远程主机 |
|
|
5 |
远程端口 |
|
OneNET 旧版的为6002 |
6 |
用户ID |
|
参考各个云平台的要求。 |
7 |
用户名 |
|
|
8 |
用户密码 |
|
|
9 |
订阅主题 |
|
#为通配符 |
10 |
发布主题 |
|
没有通配符 |
11 |
心跳包 |
|
单位:毫秒 |
|
|
|
|
修改完参数,“保存参数”,模块会自动上电重启。
5 MCU编程参考
无需特殊操作,直接操控串口,注意数据格式为json格式。双引号要用转义字符“\”,例如Char myData[]=”{\“led\”:1}”
以下以51单片机为例,说明如何编程。
1) 发布数据
void SendByte(unsigned char ch) { SBUF=ch; While(TI==0); TI=0; }
void Publish(char *strPlayload) { char ch; While(1) { ch= *(strPlayload++) if(ch==0)break; SendByte (ch) } }
void main(void) { while(1) { char myData[]=”{\“led\”:1}” Publish(myData) }
}
|
2) 接收数据
#define MAX 100 unsigned char g_recvBuf[MAX]; int g_index; int g_OldIndex;
void Recv Clear (void) { g_index=0; g_OldIndex=0; }
void usart_isr()interrupt 4 { if(RI) { if(g_index<MAX) { g_recvBuf[g_index++]=SBUF; } RI=0; } }
int Recv_Ok(void) { If(g_index>0) { Delay(100); If(g_OldIndex!= g_index) { g_OldIndex= g_index; Return 1; } return 0;//100ms没有新数据接收,表示接收完成。 } return 1; } void ProgFun() { //对g_recvBuf进行处理
}
void main(void) { Recv Clear ();
while(1) { EA=1; ES=1; if(Recv_Ok()==0) { //接收数据处理。 ProgFun(); Recv Clear (); } }
}
|