基于STM32F1 的ATK-ESP8266模块 连接阿里云物联网平台
总结一下之前学习的内容。想通过ESP8266连接上阿里云物联网平台上创建的设备。
用ESP8266连接阿里云,本质上就是开启ESP8266的透传模式,发送MQTT报文。所谓MQTT报文,就是符合MQTT协议的一串16进制数据,我们通过透传模式发送相应的数据即报文,就会有相应的结果产生。
如何学习MQTT报文
这里推荐一个视频,对MQTT协议及其报文进行了详细的讲解。
https://www.bilibili.com/video/av65909330?p=31
就是在这个视频的介绍下,我对MQTT协议及相关报文有所了解。
接下来就是连接阿里云的具体步骤:
首先就是创建一个阿里云账号,在物联网平台建立自己的设备,这里网上都有很多资料,不在赘述。
可看视频https://www.bilibili.com/video/BV16E41147uZ?p=4
建立好设备后,获取设备的三元组,并进行相关处理,得到阿里云服务器地址,客户端ID,用户名和密码。
{ "ProductKey": "xxxxxxx", "DeviceName": "xxxx", "DeviceSecret": "xxxxxxxxxxxxxxxxx" } 阿里云服务器地址(华东2) : *.iot-as-mqtt.cn-shanghai.aliyuncs.com:1883 *表示自己账号的ProductKey注意替换 客户端ID : *|securemode=3,signmethod=hmacsha1| *代表设备名称 注意替换 用户名 : *&# *代表设备名称 #代表ProductKey 注意替换 密码 : 用DeviceSecret做为秘钥对clientId*deviceName*productKey#进行hnacsha1加密后的结果 *代表设备名称 #代表ProductKey 注意替换 hnacsha1加密在线计算网站: http://encode.chahuo.com/
这些处理好之后就是写代码开启ESP8266的透传模式,这里我是在正点原子的STM32F1 ATK-ESP8266代码基础上修改的。直接用AT指令集。
while(atk_8266_send_cmd("ATE0","OK",20));//关闭回显 while(atk_8266_send_cmd("AT+CWMODE_CUR=1","OK",20)); //设为客户端模式 while(atk_8266_send_cmd("AT+CWJAP_CUR=\"自己的WIFI名称\",\"密码\"","OK",20)); //连接WIFI while(atk_8266_send_cmd("AT+CIPSTART=\"TCP\",\"自己的ProductKey.iot-as-mqtt.cn-shanghai.aliyuncs.com\",1883","OK",20)); //TCP连接 while(atk_8266_send_cmd("AT+CIPMODE=1","OK",20)); //打开透传模式 while(atk_8266_send_cmd("AT+CIPSEND",">",20)); //开始传输数据
之后就是发送MQTT报文了,有专门构筑各种报文的函数,详见下载地址。
http://链接:https://pan.baidu.com/s/1IC4GQ47u_owB35SKWpUExQ
提取码:x5c7
上述的代码修改都是在mqtt.c这个文件里面对应的修改,并且esp8266模块直接插在atk module槽中,然后编译下载程序,紧接着打开串口调试助手,并且打开串口,等待几分钟,然后显示屏上就会显示mqtt连接成功之类的字眼
就可以在阿里云物联网平台看到自己的设备上线了
最后就是说我们在平台上创建的设备的功能是订阅的作用,主题topic的话直接用系统自带的(看程序就明白了),还有就是我们这个教程是对于开发板和平台直接的连接和交流的
微信扫码关注
更新实时通知