目录
单片机控制ESP8266连接阿里云物联平台
需要了解的新知识点
MQTT(一种基于TCP实现的应用层网络通信协议)
CJSON(json是一种数据格式,C语言实现的)
AT指令(使用MQTT固件的)
MQTT协议简介
【腾讯文档】MQTTMQTThttps://docs.qq.com/doc/DQUxLVEdyeG1PV0RG
订阅和发布
MQTT是基于topic来发布消息的,发布者在发布消息时需要指定该消息发布在哪个topic下。
topic最容易的理解方式是文件夹路径。如果有成千上万的不同类型的文件要保存,为了合理放置这些文件,需要创建一系列有层次性的文件夹来管理它们。发布消息就好比把文件保存到不同的文件夹下。
和文件夹类似,topic有主题级别,各级别之间是以斜杠(/)来分隔的。
例如: rensanning/home/room1/light/brightness 就有5个级别。
第1层:用户
第2层:场所
第3层:位置
第4层:物件
第5层:数据指标
/sys/k0snmQNV0Hn/${deviceName}/thing/event/property/post
cJSON简介
云平台搭建
注册和登录
第一步,先找到阿里云平台官网。
点击右上角的注册登录完成之后,进行实名认证,任选一种认证方式。
认证完成之后找到左上角的三条横杠(或者首页左上角的产品),
实例的开通和创建
然后找到物联网然后右侧找到物联网平台
点进去然后点击管理控制台第一次用会让你开通物联网平台,然后点击开通
进去之后点击我已阅读那个服务协议然后点击立即开通会提示购买成功,
2021年07.30之前开通的公共实例是永久,此时间之后开通的是公共实例试用
然后点击管理控制台,会进入到实例概览界面,如果没有公共实例就先等阿里云给创建好,然后点开通公共实例点击开通的时候会有一个类似警告的说明然后点我已理解以上内容然后点确认开通.
产品和设备的创建
后期可直接从此网址进入
开通好之后,点进去左侧找到设备管理,点产品
创建产品
输入产品名称,现在做项目的时候是点击自定义品类,标准品类后期看具体需求
然后节点类型:普通设备(灯开关,温湿度,二氧化碳浓度等等显示类和控制类的都是选择直连设备),网关设备就选网关设备,看后期具体需求
联网方式首选WiFi如果需要别的协议就选对应的,数据格式最常用的就是JSON,然后校验级别默认弱校验,认证方式默认设备密钥,产品描述可以自己添加对该产品的描述。
产品创建成功后,你可以选择前往添加设备,可以选择查看产品详情等。
也可以返回产品列表点查看,查看自己的产品所有信息。
添加设备
然后在左侧导航栏选择设备管理>设备,在设备列表中添加页下点击添加设备。
在弹出的对话框内选择你之前创建的产品名称,并填写DeviceName为你自己起的名字(比如智能温湿度可以写smartTemperature1,备注名称为“智能温湿度01号”(也就是你自己对设备的一个备注。
点击确定之后点击完成。确定后可以在设备详情页中看到增加的设备。如果有多个设备,也可按上述方法继续添加。
功能定义
发布上线
确认完成之后点发布上线
MQTTFX工具使用
发布和订阅
订阅
发布
{"id": "123","version": "1.0","params": {"temperature": {"value": 12.34},"Humidity": {"value": 56.78}},"method": "thing.event.property.post"}
{
"id": "123",
"version": "1.0",
"params": {
"temperature": {
"value": 11.22
},
"Humidity": {
"value": 12.34
}
},
"method": "thing.event.property.post"
}
MQTT固件烧录
资料中或者官网找到固件压缩包并解压
以下为官网固件下载地址
AT固件汇总 | 安信可科技https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB
ESP8266 SDK发布 | 安信可科技https://docs.ai-thinker.com/esp8266/sdk
找到烧录工具并打开
开发板上将WIFI模块切换为下载模式串口连接8266,在设备管理器中查看usb端口号
选择固件程序配置地址,点击烧录程序
亲~~~,别忘了拨回运行模式哦。只拨S4开关,其他不用动
最好自己验证一下
AT指令验证
打开串口调试助手,按顺序发送AT指令给WIFI模组,记得替换自己的参数
1.AT+RST //测试
2.AT+CWMODE=1 //设置模式
3.AT+CWJAP="WiFi名字","WiFi密码" //连接路由器
4.AT+CIPSNTPCFG=1,8,"ntp1.aliyun.com" //配置 MQTT 用户属性
5.AT+MQTTUSERCFG=0,1,"NULL","username","passwd",0,0,"" //
6.AT+MQTTCLIENTID=0,"clientId" //clientId第二个参数注意每个逗号前加分隔符“\”
7.AT+MQTTCONN=0,"mqttHostUrl",1883,1 //自己的Url
8.AT+MQTTSUB=0,"订阅的主题",1 //订阅的主题可在云端设备的“自定义Topic列表”复制进去
9.AT+MQTTPUB=0,"/sys/k0snmQNV0Hn/E001/thing/event/property/post","{\"id\":\"123\"\,\"version\":\"1.0\"\,\"params\":{\"temperature\":{\"value\":11.11}\,\"Humidity\":{\"value\":22.22}}\,\"method\":\"thing.event.property.post\"}",0,0
AT+MQTTPUB=0,"/sys/k0snmQNV0Hn/E001/thing/event/property/post","{\"id\":\"123\"\,\"version\":\"1.0\"\,\"params\":{\"temperature\":{\"value\":11.11}\,\"Humidity\":{\"value\":22.22}}\,\"method\":\"thing.event.property.post\"}",0,0
注意:订阅主题(替换自己的设备名字)
调试验证订阅
单片机控制ESP8266连接阿里云物联平台
思路梳理
程序需要改的地方
建议是基于昨天的工程进行修改
亲~~~~, 一定要改(里面信息是我的,哇呜)
如果是自己搭建,需注意以下问题
将温湿度上传至阿里云
MX配置
代码编写
1.添加SHT20代码到工程
2、定义变量接收温湿度
3、外部引用
4、因为json解析需要使用堆空间
5、编写代码;注意:控制必须实时,上报可以定时(可自己实现时间片轮转)
if(USART5_RxCounter==1)
{
Ali_Yun_GetRCV();
USART5_RxCounter=0;
memset(USART5_RxBuff,0,sizeof(USART5_RxBuff));
printf("JIAYU\r\n");
}
HAL_Delay(5);
time++;
BSP_SHT20_GetData();
if(time == 100)
{
sprintf(message,"AT+MQTTPUB=0,\"/sys/k0snmQNV0Hn/E001/thing/event/property/post\",\"{\\\"id\\\":\\\"123\\\"\\,\\\"version\\\":\\\"1.0\\\"\\,\\\"params\\\":{\\\"temperature\\\":{\\\"value\\\":%.2f}\\,\\\"Humidity\\\":{\\\"value\\\":%.2f}}\\,\\\"method\\\":\\\"thing.event.property.post\\\"}\",0,0",T,H);
ESP8266_USART("%s\r\n", message);
time=0;
HAL_Delay(20);
USART5_RxCounter=0;
memset(USART5_RxBuff,0,sizeof(USART5_RxBuff));
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » day02(单片机高级)单片机控制ESP8266连接阿里云
发表评论 取消回复