STM32+ESP8266在新版ONENET上传温湿度信息及APP接收平台数据(物模型)
一、在ONENET创建产品
首先登陆OENENT云平台,直接在浏览器搜索ONENET即可
进入网站后是如下界面:
如果没有登录的话,右上角会有登录按钮,如果没有云平台账号的话,要先进行注册。登录后就可以进入上图的界面了。然后点击开发者中心,开始创建产品。
进入开发者中心后,出现如下界面:
点击左侧的产品开发,然后点击右上角处右创建产品
产品创建出现如下界面:产品品类可以随意选择,接入方式选择设备接入,产品名称可以自定义,节点类型选择直连设备,注意,接入协议要选择MQTT,然后数据类型的话,我选择的是物模型来接收的数据,所以用ONEJson,如果是选择数据流的话,数据协议可以更改为数据流。接入方式我用的是热点连接esp8266,所以选择了wifi,如果有用别的方式联网的话,可以按照自己的方式来。填写完以下信息后,我们的产品就算是创建完成了。
二、添加设备
产品创建完成后,要在产品里面添加设备,点击右侧的设备管理
添加设备:所属产品要选择我们刚创建的产品,设备名称可以根据自己喜好来,我们的温湿度数据就是通过这个设备来接收的。
填写完成后,点击确定,就出现了如下的界面了
产品创建完了,设备也可以了,接下来就是最后一步,添加物模型
添加设备成功后,点击左侧的产品开发,
然后在产品右侧,点击右侧蓝色小字:产品开发,进入下图界面
然后点击右侧蓝色方框,设置物模型 -> 添加自定义功能点->添加温度和湿度的物模型->保存
这样,我们云平台的操作就完成了,下面就来到了代码的环节。
三、代码编写
硬件: STM32F103C8T6最小系统板
ESP8266开发板
DHT11温湿度传感器
OLED屏幕
要实现STM32数据上传到云平台,首先要esp8266刷入AT固件,固件和代码资料都会在文章后面提供。
ESP8266输入固件的方法:通过flash工具和相对应的固件。下图展示的是flash程序和所需填写的内容,注意,还要选择相应的串口,我这里已经刷好了,就不再演示了。
输入AT固件后,通过串口助手,发送AT指令测试是否成功,具体如何操作,可以去B站观看UP主邢影不离i的视频,我的代码资料也是参考这位博主的。
【新版OneNet云平台】STM32+ESP8266上传数据,简单易上手!_哔哩哔哩_bilibili
成功刷入固件后,就进入我们stm32代码的编写了,我们的所有操作都是在stm32上的,只需要把ESP8266开发板的串口跟STM32连接好就行了。
接法如下:
STM32 ESP8266
A9 RX
A10 TX
G G
3V3 3V3
A0 RST
这样STM32就可以通过串口,将温湿度数据发送到ESP8266上,8266通过wifi将接收到的数据传送的ONENET平台上
然后说下代码需要修改的部分
esp8266.c文件上,要将WIFI_INFO中的信息改成自己的热点名称和密码,注意不要修改删除AT+CWJAP命令
然后在onenet.c中
将上述三个宏修改成自己的,产品ID和设备名称在云平台上点击设备管理 ->点击详情就可以看到了。然后AUTH_INFO可以通过云平台工具token生成。token的规程参考下图即可,其中et是指时间戳,可以在浏览器搜索时间戳,(时间戳(Unix timestamp)转换工具 – 在线工具 (tool.lu)),然后修改下方的时间即可。
说完token之后,继续往下翻,我这里是上传了两个DHT11的数据,所以json和sprintf这里有四个参数,读者可以根据自己的需要进行修改
注意:params后面的“temp”和"humi“这标识符要跟你在云平台创建的物模型的标识符一样,不然会接收不到数据
至此,我们onenet,c的代码也修改完了,最后修改一下MQTTKIT.C的代码即可
代码中的参数不动,将其中的文本修改成”$sys/产品ID/设备名称/thing/property/post格式即可
至此,代码需要修改的部分就完成了,其他后续的操作看各个外设跟STM32的接口进行修改即可。完成后的效果如下图
四、APP编写
如果你的设备可以发送数据到云平台了,那就可以编写一个app来在手机端进行接收数据了。
APP编写我用的是图形化界面的编程,MIT APP INVENTOR。(MIT App Inventor (gzjkw.net)),这个工具可以线上直接使用,无需下载,但是要注册(免费)。
登录完成后就进入如下界面
这是项目其中一部分的代码,要想让APP能连接上云平台,我们需要请求头和设备访问的网址,这部分资料通过运维监控组建下的API调试获取,选择物模型使用,设备属性最新数据查询,然后填入产品ID和设备名称就可以查询了。代码中的Accept和authorization数据要修改成自己查询得到的, 网址点击上方的查看API可以获取,如果你是参照我这个文档来的话,可以将下发的产品ID和设备名称修改成你的就行,至此,你的APP就可以成功连接上ONENET服务器了。
但是这里有一个问题,就是平台给的时间戳是一个小时,也就是说这个APP最大时间只能一个小时有效,我尝试过修改时间戳和修改里面的token值,都连接不上ONENET,只能根据查询到的时间戳才行,如果有哪位大佬能提供解决方法的话,感激不尽。
五、资料下载
这是第一次写文章,写的不好请嘴下留情,谢谢!
通过网盘分享的文件:CSDN资料.zip
链接: https://pan.baidu.com/s/1Ckfx-QGmb6OUO6__uxeyGw 提取码: 1234
作者:只是小白.