NBIoT與MQTT的完美組合
407

一、情境說明

      NBIoT 資料傳輸量直接反應於費用上,使用 MQTT 傳送感測器與控制 DSI2598 可以降低傳輸量並且提高傳輸效率。
 

二、硬體材料

  • DSI2598

  • SHT11 (or DHT22)

  • NeoPixel(WS2812) 8pcs 環形LED

  • 3D 列印外殼(可在此取得)

  • M3 螺絲

 

三、程式碼

程式碼放置於 Github 歡迎有興趣研究者自由取用。

相依 Arduino Library

  • DHT sensor library

  • Adafruit NeoPixel

 

四、程式說明

DSI2598_TemperatureBox_Ideaschain.ino

主程式,固定週期讀取感測器數據並且上傳 Ideaschain

 

bc26.cpp

BC26 NBIOT module 函式庫。

bool BC26Init(long baudrate, const char *apn, int band)

初始化 BC26 

  • baudrate: ATmega328p 與 BC26 之間溝通的鮑率。建議先手動將 BC26 設定鮑率固定

  • apn: 電信服務商APN,每間電信公司皆會有所不同。

  • band: NBIOT頻段,每間電信公司皆會有所不同。

bool BC26ConnectMQTTServer(const char *host, const char *user, const char *key, int port)

連線 MQTT Broker/Server

  • host: MQTT Server domain name or IP address, ideaschain 為 "iiot.ideaschain.com.tw"

  • user: MQTT Server 登入使用者帳號。ideaschain 可於裝置頁簽中找到

  • key: MQTT Server 登入金鑰。ideaschain 為不填

  • port: MQTT TCP 連接埠,通常為 1883

bool BC26MQTTPublish(const char *topic, char *msg, int qos)

發布 MQTT 訊息

  • topic: MQTT topic 字串 , ideaschain 為 "v1/devices/me/telemetry"

  • msg: 訊息內容字串

  • qos: MQTT QOS,通常為 0

int getBC26CSQ(void)

取得BC26模組訊號強度。

bool BC26MQTTSubscribe(const char *topic, int qos, void (*callback)(char *msg))

訂閱 MQTT 訊息

  • topic: MQTT topic 字串 

  • qos: MQTT QOS,通常為 0

  • callback: 帶入 callback function,當此 Topic 有訊息進來時要做的動作。

void BC26ProcSubs(void)

檢查 subs topic 是否有資料進來,有就會自動跳到 callback function執行,來達到接近事件驅動的效果。此函式必須放在主迴圈中經常性執行。

 

bc26.h

函式庫的標頭檔,包含原型宣告以及定義等。

 

五、補充資料

進一步資料請參閱附件說明手冊與程式碼。


TOP