当前位置:   article > 正文

STC8: 编写机智云通讯协议配合ESP8266模块连接机智云平台——实现温度采集上报和控制两路LED_机智云上报温度数据怎么加入小数

机智云上报温度数据怎么加入小数

目录

一、创建产品和数据点

二、给通讯模块烧写机智云固件

三、编写单片机程序与ESP8266-01模块通讯

四、用官方App调试

五、完整工程文件下载


毕业设计是实现一个可以远程访问控制的装置,手头有个STC8(STC8A8K64S4A12)的开发板和ESP8266-01模块。了解各大云平台之后,发现大多云平台都是MQTT协议直接接入,或者提供SDK包。

一开始直接入手连接阿里云平台,但可惜并不容易。原因有三点:

①首先是STC8毕竟是51单片机,用不了阿里云提供的SDK包,Keil C51只支持ANSI C;

②用不了SDK包还可以手撸MQTT,可惜MQTT库没发现适合51单片机的,自己写的话太费力;

③可以采用支持MQTT协议AT指令的WiFi模块,很可惜ESP8266没有MQTT的AT指令集,看官网貌似是ESP32支持MQTT协议AT指令。

于是,打算先连接机智云平台练练手。之后打算购买阿里云推荐的支持MQTT协议AT指令的EMW3080模块连接阿里云。


一、创建产品和数据点

机智云平台的设备接入方式比较特殊,采用的是先给通讯模块烧机智云的固件,然后单片机通过机智云设置的通讯协议与通讯模块通讯,通讯模块自行与机智云服务器通讯。

首先第一步,在机智云平台创建一个产品,产品分类随便选,填一个喜欢的产品名称。通讯方式采用WiFi方式(ESP8266-01模块),数据传输方式指的是单片机与ESP8266模块通讯时,上传是每次上传所有数据点(定长),还是每次可上传任意部分数据点(变长),根据个人测试,选择定长方案即可,变长方案做成后云端显示不正确(目前不清楚什么原因);功耗类型选择正常。

下一步,在产品中添加数据点,我做的是控制两个LED+实时读取DS18B20温度传感器温度数据+在超出单片机设置的温度上下限后,接收高温or低温报警信息。

需要注意的的是,机智云中数值型数据用的是无符号整数来表示,比如我设置的DS18B20温度是 -55 ~ 125,步长 0.125 ,那么温度是 -55 时,数据值应当是 0 ,温度是 125 时,数据值为 (125 - (-55)) / 0.125 = 1440,这一定程度的减轻了单片机的计算量。一般读取传感器数据时,单片机内部用无符号整数存储及运算,也就可以直接传递给通讯模块而不用sprintf函数加工为float型。

二、给通讯模块烧写机智云固件

按照官方文件说明操作就可以了。

ESP8266-01 :8M Flash不能烧错,官方文档:http://docs.gizwits.com/zh-cn/deviceDev/ESP8266%E4%B8%B2%E5%8F%A3%E7%83%A7%E5%86%99%E8%AF%B4%E6%98%8E.html

 烧好固件后把模块先放一边,开始编写单片机程序与模块进行通讯。

三、编写单片机程序与ESP8266-01模块通讯

除去采集传感器数据、控制LED的程序,主要待完成

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/176297
推荐阅读
相关标签
  

闽ICP备14008679号