ESP8266上传阿里云平台超详解附带stm32代码
一、开发工具准备
-
esp8266
-
MQTT固件
-
安信可串口调试助手
-
wifi烧录工具
安信可官网:
https://docs.ai-thinker.com/
开发工具下载:
https://docs.ai-thinker.com/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%B72
固件烧录工具
串口调试助手
AT指令使用事例
https://docs.ai-thinker.com/esp8266/examples/at_demo
二、固件烧录
需要下载mqtt固件才能连接阿里云
mqtt固件下载:
https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB
硬件接线
ESP8266-01S | USB转TTL |
VCC | VCC |
RXD | TXD |
TXD | RXD |
GND | GND |
IO0 | GND |
三、AT指令
初始配置和验证
ESP-01s出厂波特率正常是115200, 注意:AT指令,控制类都要加回车,数据传输时不加回车 上电后,通过串口输出一串系统开机信息,购买的部分模块可能电压不稳,导致乱码,以准ready
测试通信及模块功能是否正常
上电后发送AT指令
发送AT指令,返回结果一般都是AT指令加+返回状态
//指令
AT
//结果
AT
OK
配置成115200波特率
//指令
AT+UART=115200,8,1,0,0
//结果
AT+UART=115200,8,1,0,0
OK
入网设置
设置工作模式
//指令
AT+CWMODE=3 //1. 是station(设备)模式
//2. 是AP(路由)模式
//3. 是双模
OK //结果
//结果
AT+CWMODE=3
OK
以设备模式接入家中路由器配置
//指令
AT+CWJAP="iQOO","88888888"
//结果
AT+CWJAP="iQOO","88888888"
WIFI CONNECTED
WIFI GOT IP
OK
使能上电自动连接AP
//指令
AT+CWAUTOCONN=1
//结果
AT+CWAUTOCONN=1
OK
查询IP地址
//指令
AT+CIFSR
//结果
AT+CIFSR
+CIFSR:STAIP,"192.168.93.223"
+CIFSR:STAMAC,"34:94:54:8a:b6:83"
OK
连接TCP server
//指令,注意双引号逗号都要半角(英文)输入
AT+CIPSTART="TCP","api.seniverse.com",80
//结果
AT+CIPSTART="TCP","api.seniverse.com",80
CONNECT
OK
发送数据
AT+CIPSEND=4 // 设置即将发送数据的长度 (这里是4个字节)
>CLCA // 看到大于号后,输入消息,CLCA,不要带回车
Response :SEND OK //结果:成功
//注意,这种情况下,每次发送前都要先发送AT+CIPSEND=长度 的指令,再发数据!
透传
如果设置成透传,就有点像蓝牙模块的玩法
//指令开启透传模式
AT+CIPMODE=1
//结果
AT+CIPMODE=1
OK
//指令
AT+CIPSEND
//结果
AT+CIPSEND
OK
>
退出透传模式
+++ //在透传发送数据过程中,若识别到单独的⼀包数据 “+++”,则退出透传发送
GET请求
GET https://api.seniverse.com/v3/weather/daily.json?key=SaOaDLqgZPYeZREfM&location=beijing&language=zh-Hans&unit=c&start=0&days=5
四、生活物联网平台(飞燕平台)
1.创建产品和设备
创建项目名称
选择网关设备
选择蜂窝连接
添加定义功能
人机交互选择云智能APP
选择产品品牌
设备平板创建空白面板
创建ui界面,保存后退出
回到设备面板,选择刚刚创建界面
先获取模板
选择一个模板下载后上传说明书
在设备调试菜单新增测试设备ESP8266
找到物联网平台页面,可以看到创建了新的设备ESP8266,此时还没有激活,需要配置mqtt连接
2.配置mqtt连接
1.复位模块
发送AT+RST
注意还需要连接wifi
AT+CWMODE=1
AT+CWJAP="wifi","passward"
2.设置MQTT属性
发送AT+MQTTUSERCFG=0,1,"NULL","username","passward",0,0,""
//指令
AT+MQTTUSERCFG=0,1,"NULL","ESP8266&a18lHeoVMqB","30c793918d51850dc8d26af2f1fff03b03d96c1e0e9a7268fd1428fbf8564e49",0,0,""
//结果
AT+MQTTUSERCFG=0,1,"NULL","ESP8266&a18lHeoVMqB","30c793918d51850dc8d26af2f1fff03b03d96c1e0e9a7268fd1428fbf8564e49",0,0,""
OK
3.设置MQTT 客户端ID
上图客户端ID
发送AT+MQTTCLIENTID=0,"ClienID"
注意!!要在ID信息每一个”,“前加”\“进行转义!!!
//指令
AT+MQTTCLIENTID=0,"a18lHeoVMqB.ESP8266|securemode=2\,signmethod=hmacsha256\,timestamp=1735974385152|"
//结果
AT+MQTTCLIENTID=0,"a18lHeoVMqB.ESP8266|securemode=2\,signmethod=hmacsha256\,timestamp=1735974385152|"
OK
单片机发送还需对'\'进行转义
4.设置域名
上图域名
AT+MQTTCONN=0,"域名",1883,1
//指令
AT+MQTTCONN=0,"a18lHeoVMqB.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1
//结果
AT+MQTTCONN=0,"a18lHeoVMqB.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1
+MQTTCONNECTED:0,1,"a18lHeoVMqB.iot-as-mqtt.cn-shanghai.aliyuncs.com","1883","",1
OK
注意输出结果可能错误,
AT+MQTTCONN=0,"a18lHeoVMqB.iot-as-mqtt.cn-shanghai.aliyuncs.com",1883,1
+MQTTDISCONNECTED:0
ERROR
这个界面可能会刷新,重新前面配置
5.数据上报
发送AT+MQTTPUB=0,"发布topic","Json格式内容",1,0
json数据格式:{\"params\":{\"标识符\":你想要设置的数值}}
//指令
AT+MQTTPUB=0,"/sys/a18lHeoVMqB/ESP8266/thing/event/property/post","{\"params\":{\"humidity\":10}}",1,0
//结果
AT+MQTTPUB=0,"/sys/a18lHeoVMqB/ESP8266/thing/event/property/post","{\"params\":{\"humidity\":10}}",1,0
OK
如果多个属性,用逗号分隔,并且需要对','进行转义; 如:
AT+MQTTPUB=0,"/sys/a18lHeoVMqB/ESP8266/thing/event/property/post","{\"params\":{\"humidity\":100\,\"temperature\":17}}",1,0
stm32发送注意加"\"进行转义,注意3个'\\\'
printf("AT+MQTTPUB=0,\"/sys/a1b9cm1kjYq/esp8266/thing/event/property/post\",\"{\\\"params\\\":{\\\"LEDSwitch\\\":1}}\",1,0\r\n");
printf("AT+MQTTPUB=0,\"/sys/a1b9cm1kjYq/esp8266/thing/event/property/post\",\"{\\\"params\\\":{\\\"humidity\\\":%.1f\\\,\\\"temperature\\\":%.1f}}\",1,0\r\n", humidity, temperature);
3.连接APP
回到人机交互页面下载配网二维码,智能云APP扫描二维码
点击云智能APP开关,可以收到消息
4.运行效果
五、资料获取
代码部分展示
采用面向对象编程,移植性强,采用串口空闲中断+DMA进行数据接受效率高
https://m.tb.cn/h.T7p93MW?tk=nlFwebfRE22 MF3543
作者:ryh~