本文基本公開了如何移植MQTT物聯網協議到STM32平台上,並結合GPRS模塊(SIM800C/SIM900A/SIM868等)實現publish和訂閱topic從onenet,阿里雲,百度雲等。如果不想移植,可以在如下淘寶鏈接中直接購買源代碼,全部源碼+資料300,全部源碼+資料包售后500元。
物聯網開發板裸板只要168,套餐可自己搭配。
淘寶鏈接:https://item.taobao.com/item.htm?spm=a2126o.11854294.0.0.120c4831Ic87Zt&id=598106907055
配套物聯網開發板鏈接:https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.29e71debNLqzWg&id=583890254748
當然,也承接定制開發,價格跟需求難度及開發周期相關,具體可小窗博主或淘寶咨詢。
一、代碼適用范圍
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即可。
然后就可以編譯測試。
三、實現效果
1. 設備端:
上電,開機設備初始化,聯網,tft屏顯示二維碼。
2. 服務器端:
onenet/aliyun/baiduyun起到數據接收與轉發作用。
3. 手機端:
打開小程序,顯示添加設備頁面。
點擊添加設備后,會出現二維碼掃描頁面,掃描設備上的二維碼后,即可出現控制頁面:
點擊按鈕即可控制設備端的繼電器開關,從而控制led或電機或風扇等的開關。
如有疑問,歡迎評論或淘寶詳聊。