arduino UNO通过AT指令控制esp8266连接WiFi及onenet云平台

写下这篇文章是为了记录我学习使用esp8266的过程。在本文中我们会使用AT指令通过MQTT协议连接onenet云平台

开篇必看

1)关于onenet MQTT设备创建

在设备连接onenet平台中,你又几个设备onenet就需要添加几个设备,就比如我有一个arduino端,一个QT端,还有一个测试端需要连接同一个onenet MQTT协议产品,就需要添加三个设备。

一个设备只能连接一个设备。

2)关于数据流

数据流是指你上传上云的数据名称及数据内容,在onenet云平台上你可以手动添加数据流模板。

当你上传上去的数据流名在模板中没有时,onenet云也会自动给你添加进数据流,这种情况在数据流模板中并不会显示,只会在数据流中显示。 

3)关于发布与发送

发送是指将数据上传到onenet云平台上,发送上云的数据会在云平台上显示,而发布并不相同,发布的数据并不会在云平台上显示,只会被订阅端接收,所以使用发布功能是一般有一个订阅设备,这个设备可以是其他不同的设备,也可以是发送的设备。

4)具体AT指令参考文档链接:https://pan.baidu.com/s/1KZ6ep3upJfXPYVoI1WWxSA 
提取码:flas

1、烧录AT固件

esp8266要使用MQTT需要烧录AT固件,目前市场上常用的是乐鑫官网及安信可官网的AT固件,不同的AT固件之间它们的AT指令可能有所差异。在本文中我们使用onenet官网上提供的MQTT固件来连接onenet。

烧录固件的工具可以使用乐鑫官网提供的烧录工具工具 | 乐鑫科技 (espressif.com),也可以使用安信可官网提供的烧录工具开发工具清单 | 安信可科技 (ai-thinker.com),具体烧录方式可以查看我的另一篇博客。http://t.csdn.cn/b41W3

固件资料可以在onenet官网下载,也可以点击我的链接下载

onenet官网固件资料:ESP8266 OneNET-MQTT接入固件 - 开发板专区 - OneNET设备云论坛 (10086.cn)

onenet MQTT固件资料:链接:https://pan.baidu.com/s/1KZ6ep3upJfXPYVoI1WWxSA 
提取码:flas

2、arduino连接esp8266

arduino unoesp8266
GNDGND
3,3VVCC
CH_PD3.3V
9RX
10TX

 3、arduino UNO 通过软串口AT控制esp8266连接WiFi

#include <SoftwareSerial.h>
SoftwareSerial mySerial(9,10); // RX, TX    //模拟一个软串口


void setup()
{
  
  Serial.begin(115200);//设置硬串口波特率
  mySerial.begin(115200);//设置8266的波特率为9600
  
  mySerial.println("AT+CWQAP");//断开wifi
  delay(200);  
  mySerial.println("AT+CWJAP=nova,22222222");//连接wifi,此为wifi ssid和密码
  delay(200);
  
}
void loop()
{
   if (mySerial.available())//获取从软串口读取有效的字节数
  {
    Serial.write(mySerial.read());//硬串口写软串口中读取的数据
  }
  if (Serial.available()) {//获取从硬串口读取有效的字节数
    mySerial.write(Serial.read());//软串口写硬串口中读取的数据
  }
}

将代码烧录进去,测试是否能连接上你的WiFi热点。之后进行下一步操作。

4、通过MQTT协议连接onenet云平台

onenet云平台创建产品添加设备可以参考我的博客:http://t.csdn.cn/Obt47

首先记录下你的产品ID,设备ID,和鉴权信息,

 

具体连接代如下:

#include <SoftwareSerial.h>
SoftwareSerial mySerial(9,10); // RX, TX    //模拟一个软串口


void setup()
{
  
  Serial.begin(115200);//设置硬串口波特率
  mySerial.begin(115200);//设置8266的波特率为9600
  
  mySerial.println("AT+CWQAP");//断开wifi
  delay(200);  
  mySerial.println("AT+CWJAP=nova,22222222");//连接wifi,此为wifi ssid和密码
  delay(200);
  mySerial.println("AT+IOTCFG=设备ID,产品ID,鉴权信息");//连接onenet平台,设备ID,产品ID,鉴权信息
  delay(200);

}
void loop()
{
   if (mySerial.available())//获取从软串口读取有效的字节数
  {
    Serial.write(mySerial.read());//硬串口写软串口中读取的数据
  }
  if (Serial.available()) {//获取从硬串口读取有效的字节数
    mySerial.write(Serial.read());//软串口写硬串口中读取的数据
  }

  
}

连接成功显示如下:

串口监视如下:

如果未连接成功,可以手动输入AT指令让其连接

5、arduino UNO与onenet之间进行信息传输

现先将代码附上:

  //发送temperature信息
  mySerial.print("AT+IOTSEND=0,temperature,");
  mySerial.println(111);
  delay(75);
  //发布temperature信息
  mySerial.print("AT+IOTPUB=temperature,");
  mySerial.println(Tem);
  delay(75);

 发送是指将信息发送到onenet云平台上并在数据流上显示

发布是指将信息发布出去,对应发布MQTT协议还有一个订阅功能,订阅就是监听设备发布的信息并将其接收,所以在使用发布功能的时候一般会有设备对齐进行订阅。

发送成功显示Send OK,发布成功显示Publish

6、关于订阅

订阅是MQTT协议中重要的组成部分。一个设备既可以当发布端,也可以当订阅端。

  mySerial.println("AT+IOTSUB=Controal");//订阅主题,主题名为DHC
  delay(200);

订阅成功会返回如下字段:

这时在发布数据就会有接收返回,数据入下:

 

7、总代码

#include <SoftwareSerial.h>
SoftwareSerial mySerial(9,10); // RX, TX    //模拟一个软串口


void setup()
{
  
  Serial.begin(115200);//设置硬串口波特率
  mySerial.begin(115200);//设置8266的波特率为9600
  
  mySerial.println("AT+CWQAP");//断开wifi
  delay(200);  
  mySerial.println("AT+CWJAP=nova,22222222");//连接wifi,此为wifi ssid和密码
  delay(200);
  mySerial.println("AT+IOTCFG=943135649,506581,222222");//连接onenet平台,设备ID,产品ID,鉴权信息
  delay(200);
}
void loop()
{
   if (mySerial.available())//获取从软串口读取有效的字节数
  {
    Serial.write(mySerial.read());//硬串口写软串口中读取的数据
  }
  if (Serial.available()) {//获取从硬串口读取有效的字节数
    mySerial.write(Serial.read());//软串口写硬串口中读取的数据
  }

  //发送temperature信息
  mySerial.print("AT+IOTSEND=0,temperature,");
  mySerial.println(111);
  delay(75);
  //发布temperature信息
  mySerial.print("AT+IOTPUB=temperature,");
  mySerial.println(Tem);
  delay(75);
  
}

  • 13
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值