NBIOT與RF通訊模組
409

一、情境說明

      偵測/布局場域大,但手邊NBIoT數量不夠該怎麼辦?可運用主從資料傳輸方式,將NBIoT當成集中的收發資料站。

 

二、硬體材料

  • DSI2598

  • 光敏電阻

  • Arduino UNO *2

  • RF通訊模組*2

 

三、程式碼

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

相依 Arduino Library

  • nRF24L01 Series library

 

四、程式說明

DSI2598_RF.ino

主程式,裝置A固定週期讀取感測器數據並經由nRF24L01模組傳送給裝置B,再由DSI2598統一上傳至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