连线方式
ARDUINO UNO --> 8266(使用软串口连接)
数字端口8(RX) --> TX
数字端口9(TX) --> RX
3V3 --> VCC
GND --> GND
GND --> CHPD
实现方式
想让ARDUINO UNO使用MQTT连接到ONENET,最简单的办法是直接使用ARDUINO IDE或者MICROPYTHON烧录8266,然后ARDUINO UNO通过软串口监听8266的通信。
那么今天来说8266透传的方式,主要还是把具体的逻辑说一下,以便更好地理解MQTT协议的优势。
后面代码的逻辑如下:
1、先用数组形式定义MQTT的协议内容,这个主要是为了方便后面用十六进制方式向ONENET服务器发送数据
2、ARDUINO通过软串口打开8266的透传模式
3、发送MQTT协议
具体代码
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 9); // RX, TX
void (* resetFunc) () = 0;
int v_w_test=0;
int v_w_cnt=0;
int v_w_test_result=0;
int v_w_transfer=0;
int v_w_transfer_result=0;
int v_s_c=0;
int i=0;
int j=0;
int k=0;
unsigned char uart_Receive_Buff [ 80 ]; //定义缓冲buff
unsigned int uart_Receive_Index = 0; //收到的字节实际长度
char Serial_val; // 储存接受数据
unsigned char Serial_val1; // 储存接受数据
String Serial_str="" ; //设置一个空的字符串,用于打印串口输出结果
unsigned char data[42] = {
0x10, //上线报头
0x28, //后面的字符数以十六进制表示
0x00,0x04,0x4D,0x51,0x54,0x54, //固定的发送MQTT字符
0x04,0xC2, //固定
0x00,0x78, //上线时间120秒,后面通过心跳来保持这个链接
0x00,0x09,//设备ID长度
0x35,0x36,0x33,0x33,0x32,0x38,0x30,0x37,0x**, //设备ID
0x00,0x06, //产品ID长度
0x32,0x37,0x38,0x36,0x30,0x**, //产品ID
0x00,0x09, //鉴权长度
0x6D,0x71,0x74,0x74,0x62,0x31,0x30,0x32,0x** //鉴权ID
}; //模块上线
unsigned char data_1[2] = {
0xC0,0x00 }; //心跳,发送内容是固定的