使用STM32和ESP8266构建物联网体系的单片机上云流程优化
1.首先是给esp8266烧录MQTT固件
咳咳,首先当然是准备一个esp8266-01s和对应的烧录器啊qwq
选择好要烧录进去的固件-没有的话去安信可官网下载
然后配置好对应的选项
点击ERASE先进行擦除
再点击START进行烧录
//——————————————————-这里是分割线——————————————————
2.前往阿里云创建对应的产品和设备
点击创建产品
自己取个产品名称,品类选择自定义,其他的默认就好
点击前往添加
点击添加设备
给设备取个名
点击完成
回到产品,选择刚刚创建的点一下右边的查看
点功能定义
点击编辑草稿
点击添加自定义功能
功能名称自己定义,写什么都行,比如你要上传温度,这里就写温度
标识符就是你存放要上传的数据的变量名
数据类型就是你要上传的数据是什么类型的
取值范围就是上传的数据的值的大小范围
读写是设备能向云平台上传数据,云平台也能向设备下发数据
草稿编辑好了后点击左下角的发布上线
勾选确认和点击确定
回到设备点击查看
点击右上角的查看
记住这些三元符
再点击MQTT连接参数-查看
这些参数也要用上
然后
根据这些流程来-打开串口助手一个个试
这些参数都是MQTT连接参数里的,直接复制过来替换一下即可
这时候就可以看到设备在线了
//——————————————————-这里是分割线——————————————————
我们可以看到现在设备没有订阅任何一个topic
也就是说设备和云平台之间还不能实现数据的交互
物模型这的数据的值也是空的
(这个物模型就是根据之前在产品那编辑好的草稿发布后出现的)
这里插播一个小知识
发布:是指设备向云平台发送数据
订阅:是指云平台向设备发送数据
既然物模型的数据是空的,那么我们就去订阅物模型的相关topic
再次打开串口助手
首先是订阅设备属性设置和订阅云端响应时间上报
然后
上报设备参考格式
这里云平台也返回的对应的格式,告诉我们该怎么把数据上传上去
然后我们也照着格式发送数据
注意:这些参数都在之前的三元符里可以复制过来
注意sys后面的那两个参数,一个是设备密匙另一个就是设备名称
这个每个产品的都是不一样的,注意更改
上报数据时注意修改标识符,草稿里定义的是什么就写什么
ID号可以随便写嗷
这时候就可以看到数据已经上传上去了
点击监控运维-在线调试-在上面选择号对应的产品和设备
因为草稿里设置的是int类型且范围0~100
所以这里就只能下发0~100的整形数据
串口助手上也能看到云平台下发来的数据
这时候我们就已经完成了设备和云平台之间的交互了
//——————————————————-这里是分割线——————————————————
刚刚上面讲的是手动的云平台向设备下发数据
那有时候我们要设备a的数据通过云平台发给设备b该怎么搞呢,总不能一直手动发吧
这时候就要用到另一个东西了-云流转
点击规则引擎-云产品流转
再点击右上角的返回旧版
等等,我们先搞一下别的qwq
在产品那有一个自定义topic(云流转新版本我还没摸清楚qwq)
我们订阅一下自定义的topic并向云平台发送一个数据
因为自定义的topic没有规定规则也就是说理论上什么都能发
在日志服务那可以看到所有的数据的通信
这里就可以看到刚刚自定义topic上传的数据了
在设备topic列表里可以看到我们订阅了的topic,这里就有刚刚订阅的自定义topic
我们点击发送消息
串口助手上就能看到云平台下发的自定义的topic的数据了
回到刚刚的云流转
点击立即创建
自己取个规则名称,数据格式选择二进制(二进制只能勾选自定义类型的topic)
点击确认后再点击前往编辑
先编写SQL
字段写‘*’
Topic选择自定义
在选择好对应的产品和设备,topic选择自定义的发布
(这条的功能是选择好数据源:来自测试1产品data设备的自定义topic数据)
就是接收到设备上传的云平台的数据嘛
然后我们再来编写转发数据-点击添加操作
同理,这条的作用是向测试1产品的data设备的自定义订阅topic发送数据
就是向订阅了这条topic的设备下发数据嘛
最后的转发错误操作那条要是没有特殊需求的话可以不用管
返回到初始界面-点击启动
打开串口助手
再次向云平台发送一个数据
这时候云平台就会把我们上传的数据再次下发下来
我们在将其关掉-试着再发一次
这时候就没有返回的数据了
同理我们也可以根据上面的流程实现设备a上传数据给云平台,云平台再将数据下发给设备b了,只需要单片机对其进行一下处理就可以实现数据的远程通讯了
//——————————————————-这里是分割线——————————————————
刚刚讲的云流转是用于自定义topic的,那我要用其他类型的topic该怎么用呢?
其实步骤都差不多
点击新建
选择JSON格式(这是唯一和上面有区别的地方!!!)
编写SQL
这里和之前同样的道理,选择哪个产品哪个设备物模型的哪条发布topic的数据源
(因为之前的工程不知道扔哪了qwq所以选择的产品和设备可能会和上面的有些出入,各位看官借鉴一下就好不要完全照搬)
我们点击添加操作
同理,这里我们选择好对应的产品设备啥的就行
当全部都填写好了返回之前的页面
点击启动
然后打开串口助手
这时候我们用设备向云平台发送数据就可以看到数据呗云平台流转回来了
(因为我手上现在就一个esp8266-01s所以只能这样演示)
当然了,你设备a数据云流转给设备b也是同样的道理,在添加操作那选择设备b所对应的产品和设备即可
//—————————————————————————–
那STM32-ESP8266-阿里云之间该这么通讯呢
代码我已经封装好了,只需要在MQTT.h填上自己产品设备所对应的参数即可
打开工程
把设备三元符的前两个复制过去就好,剩下那个我们打开MQTT连接参数
有个叫passwd的复制过去替换好就可以了
然后
将剩下的几个参数复制过去即可
然后是设备标识符(就是你草稿里定义的那个标识符)
最后呢
我们在把wifi的名称和密码填上去(手机热点啥的也行)
注意:得2.4GHz频带的网络
将对应的参数填好并烧录在stm32里,然后通过串口跟esp8266连接即可
(具体的连接方式我代码里注释好了跟着接线就好)
当然了也可以自己打个底板用,省的接线啥的多麻烦啊
这里我是用ttl转usb来给mcu提供电源并烧录程序的
Esp8266-01s我直接插在了焊的排母上了
旁边的工具是拿来给esp8266-01s烧录固件并调试用的
我也封装好了两个函数
(不一定是说只能发整数,可以自己进行更改,这里我要先用于测试所以就随便写下)
这里分别发个物模型和自定义的数据上去
//——————————————————-这里是分割线——————————————————
那么发送没问题了接收怎么办
同样的我也封装好了两个函数
我们先来看看物模型的接收
先在云平台的在线调试向设备下发一个数据
从串口助手可以看到,下发的那个66已经提取出来了
那既然已经能提取出需要的数据了,各位看官还要怎么操作那不就洒洒水了嘛
我们再看向另一个接收函数
老样子,我们用云平台先下发各数据
随便向设备下发各数据
打开串口助手查看
下发的数据是不是也提取出来了呢
那么
将上面一整套结合起来,是不是就构建好了一套简单的物联网体系了呢qwq
代码还有所用到的工具都放在这了:TJGR510B
码字不易,还请各位看官支持一下\( ̄︶ ̄*\))咱这里就先谢过了哈
//——————————————————-这里是分割线——————————————————
到这后就结束了,有啥要补充的后面遇到了再回来写
撒花撒花~