赞
踩
目录
毕业设计是实现一个可以远程访问控制的装置,手头有个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
烧好固件后把模块先放一边,开始编写单片机程序与模块进行通讯。
除去采集传感器数据、控制LED的程序,主要待完成
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。