初级会员
- 积分
- 199
- 金钱
- 199
- 注册时间
- 2017-5-4
- 在线时间
- 80 小时
|
最近在研究物联网,看了下华为的云端服务,和其他家都差不多都大同小异。支持4种连接方式1、MQTT 2、LwM2M/COAP 3、HTTP 4、自定义对于嵌入式系统来说,前两种是主要的连接方式。花了1周时间差不多把MQTT整明白了,这里分享给大家。先做个简要说明:
1、硬件平台用的是ST官放STM32F769Discovery开发板 16M的外挂SDRAM 64M的外接FLASH 还有一块MIPI接口的液晶屏(据说是iPhone4S用的)
2、操作系统选用的是FreeRTOS,主要是用的人多还免费,文件少移植简单,网上大把教程
3、LWIP的移植参考原子教程,先把无操作系统的部分移植好,然后在进行有操作系统的移植,主要就是sys_arch.c文件的修改,具体参考我的代码
4、STM32F769Discovery的网卡PHY用的是LAN8742,这个是LAN8720的升级版,不需要做任何修改直接使用。
5、MQTT协议栈移植的是paho的mqtt协议栈 源码地址 https://github.com/eclipse/paho.mqtt.embedded-c
6、华为云MQTT服务器连接时需要进行SHA256鉴权,方法是用HMAC_SHA256算法,以时间戳为密钥对产品的secret进行加密。secret是创建设备是自己设置的密码,时间戳如果选择不验证的话可以固定。具体看代码
7、目前所有云平台的MQTT传输几乎都是传输JSON数据,对于嵌入式系统而言可以用CJSON来实现,移植也非常简单,只提供内存分配和释放函数即可
8、华为云端我创建的产品是华为自带模板里的水表模型(懒得自己创建了),实现了设备侧属性实时上报、应用侧命令下发、设备侧命令应答的功能。
9、代码具有很强的实用性,支持网线的热拔插,MQTT服务器断线自动重连,经过长时间测试通信稳定。
目前资源有限,只能用以太网有线连接,后面实际应用可以使用无线WIFI模块等。MQTT这块算是可以了吧,接着研究COAP,有兴趣的朋友可以一起讨论
|
|