本文基本公開了如何移植MQTT物聯網協議到STM32平臺上,並結合GPRS模塊(SIM800C/SIM900A/SIM868等)實現publish和訂閱topic從onenet,阿里雲,百度雲等。
一、代碼適用範圍
1. 設備端:
- 主控芯片爲STM32F103C8T6,但是兼容所有STM32芯片中。
- 通信模塊爲sim800c或sim868,代碼兼容,868多個GPS 使能代碼和獲取GPS信息及解析代碼。
- 主控與通信模塊連接4個引腳:GPS使能,GPRS使能,及串口3 TXD和RXD。串口3用於通信。
2. 服務器:
- 支持onenet
- 支持aliyun
- 支持baiduyun
3. 手機端:
- 小程序:目前已開發onenet,獲取數據流,數據點,topic訂閱與發佈,控制終端等功能。aliyun,baiduyun待開發。
- app:用開源標準的mqtt 協議 apk。
二、MQTT 物聯網協議使用
1. MQTT協議簡介:
MQTT(消息隊列遙測傳輸) 是基於 TCP/IP 協議棧而構建的,已成爲 IoT 通信的標準。
初識 MQTT IBM簡介的很好:我就不多分享了,有興趣的可以參考鏈接:
https://www.ibm.com/developerworks/cn/iot/iot-mqtt-why-good-for-iot/index.html
2. 分享一個很好用的mqtt庫:Paho
設備端的mqtt協議移植,就是參考https://github.com/eclipse/paho.mqtt.embedded-c移植而來。
整體移植過程:
下載src源碼:https://github.com/eclipse/paho.mqtt.embedded-c/tree/master/MQTTPacket/src
添加到keil工程中。
添加onenet、aliyun、baiduyun等調試接口,以及sim模塊,at指令控制部分,調試代碼。
調試過程過於複雜且消耗時間,這裏就不詳細說明了。
這裏貼一張移植後的目錄結構圖:
測試aliyun,baiduyun,onenet驗證皆OK。
設備端驗證代碼publish 穩定,測試三天未掉線。
3. 以onenet爲例:
設備端連接onenet:只需修改:如下部分即可。分別對應onenet服務器端的設備id,產品id和api-key。
4. 小程序demo
源程序實現如下功能:
- 添加設備
- 二維碼識別獲取設備id
- 顯示繼電器狀態
- 獲取設備數據流
- 發送topic
- 遠程控制繼電器
小程序需要修改部分:
- appid:修改爲自己申請小程序後,生成的appid。
- master-apikey,改爲onenet創建產品後生成的master-apikey即可。
然後就可以編譯測試。
如有疑問,歡迎評論或私聊詳聊。