ESP8266透明串口转MQTT模块使用说明

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 ();

    }

}

 

}

 

 

posted @ 2023-09-02 18:09  cqmcu_yth  阅读(187)  评论(0编辑  收藏  举报