【NB-IoT】DSI2598開發板之物聯網建置與應用

HowardWu發佈於2020-03-25 09:57:40

瀏覽46401

回覆0

最後編輯於2024-10-31 19:01:21

作者:柯大

資料來源: https://makerpro.cc/2019/12/unboxing-nb-iot-dsi2598-and-application/

為因應進入萬物連網的物聯網時代到臨,對於裝置省電、長距離傳輸資料的需求,低功耗通訊廣域網路(Low Power Wide Area Network, LPWAN)因應而生,LPWAN由於不要求複雜的影音、大資料傳輸、即時訊息等,是萬物聯網最具體的實現。發展上主要以從使用的無線電頻段分成非授權頻段(Unlicense Band) 的LoRaWAN、Sigfox與使用授權頻段(License Band)由3GPP主導的NB-IoT技術,2017年國內三大電信業已投入物聯網NB-I oT通訊設備佈建及基地台更新。

由於NB-IoT使用電信級網路,所以對於網路品質、訊息安全都有高度的保障,而3GPP在 2017年發表R14版本的技術規範,對NB-IT產品可以更完善地支援大規模連接、減少隨機接入衝突,並增強NB-IoT技術的移動性服務連續性(Mobility and service cont、定位(Positioning)、多點傳送(Multicast)、移動性與inuity)、新的功率消耗模式(New Power Class)、降低功率消耗與延遲性(Power consumption and latency reduction),讓NB-IoT的技術競爭力更為完整。NB-IOT的核心特點如下:

  •  海量連接:每基地台可達10萬裝置連接。
  • 超低功耗:獨特PSM可提供長時電池供電。
  • 深度覆蓋:能實現比 GSM 高20db的覆蓋增益。
  • 低成本:低速率低功耗低頻寬帶來的是低成本優勢。

NB-IoT優勢(Source

資策會數位服務創新研究所(以下簡稱「服創所」),為了協助創新應用開發端經由開發板設計應用產品,可藉由雛型產生過程的設計、電路製作過程,可更快速利用IoT開發板搭配小量製造商媒合,加速量產進程,以國內晶片大廠聯發科技股份有限公司(Mediatek,簡稱「聯發科」) MT2625全頻段NB-IoT晶片催生了「DSI 2598」NB-IoT量產導向的物聯網國產開發板,該開發板結合了聯發科MT2625晶片(由Quectel包裝成BC26/BC6模組)及Microchip(ATMEL) ATMEGA328P MCU晶片,有助於物聯網產品加速導入NB-IoT通訊功能。

Mediatek的MT2625晶片的IoT應用情境(圖片來源:聯發科)

「DSI 2598」NB-IoT開發板提供Arduino Nano ATMEGA328P GPIO、I2C、UART、PWM、SPI、ADC等多項輸出入介面,以簡單易學的Arduino IDE 為開發環境為主,是國內首款Arduino-based NB-IoT開發板,以Arduino IDE為主要的程式開發環境,讓開發者可以更輕易的開發各項物聯網應用雛型。

「DSI 2598」NB-IoT開發板應用架構示意圖 (圖片來源:資策會)

「DSI 2598」NB-IoT開發板的硬體主要以Arduino Nano ATMEGA 328 MCU為主,並將MCU Pin8、Pin9直接連接至MT2625(BC26/BC66)NB-IoT模組的UART介面(Tx/Rx)做為通訊傳輸使用,其餘MCU接腳均大部份接出使用,以提供開發者可以繼承原Arduino Nano I/O使用。

DSI2598開發板硬體資料規格(圖片來源:作者提供)

對照原始ATMEGA 328P可用腳位圖如下:

ATMEGA 328P可用腳位圖(Source

其中D8、D9 Pin 已被佔用為SoftwareSerial UART用做ATMEGA 328連接BC26/B66 NB-IoT模組 UART0。DSI 2598一代將ATMEGA 328P腳位接出圖如下:

第一代DSI 2598腳位功能說明(圖片來源:資策會)

DSI2598二代為了更精簡開發板硬體大小,僅接出SPI:D10、D11、D12、D13,I2C:A4、A5(可用為Analog類比輸入用,GPIO:D2(可用為硬體中斷使用)、D3,另5V、3.3V為便利不同感測器的電壓需求,均接出提供使用,Vin:可外接電池供電(可接3.3V~5V供電)。開發模組搭配方便黏貼於模組內部,不占空間的,訊號強度可達3dB~8dB。

第二代DSI 2598腳位功能說明

資策會服創所為了讓所有開發者可以將NB-IoT的應用快速商品化,特別將「DSI 2598」NB-IoT開發板所有的硬體設計開放資源提供下載,網址:https://t.ly/XGYEV

硬體設計開源資料包括:SMT打件用座標檔、開發版Bom表資料、電路板原理圖、PCB Layout,並提供小量製造商媒合資料於資策會官網 ideas Hatch供參考:https://www.ideas-hatch.com

現在讓我們開始來體驗「DSI 2598」NB-IoT開發板,我們只要按照下列步驟一步一步進行,將可順利使用開發板。

一、安裝Arduino IDE環境及DSI 2598 NB-IoT硬體連接

前置步驟1:安裝Arduino IDS 1.8.5版本。
前置步驟2:安裝CH341SER驅動軟體。
前置步驟3:燒錄模組與DSI2598接線。
前置步驟4:如使用DSI 2598二代開發板,可略過此三項步驟。
前置步驟5:程式碼下載:https://t.ly/DKkB2,下載後解壓DSI2598_ATcommand.ino。

二、開發板基礎設定:模組檢查及頻段設定及APN設定

1. 打開DSI2598_ATcommand.ino,並至Arduino的Tool->Port中找到USB模組的COM PORT編號,可至控制台確認。
2. 選擇Tool->Board->Arduino Nano,然後按下 Upload(Ctrl+U),將程式燒錄上傳至DSI2598。

DSI2598_ATcommand.ino 程式碼如下:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

#include <SoftwareSerial.h>

SoftwareSerial mySerial(8, 9);

String data = "";

void setup() {

// put your setup code here, to run once:

Serial.begin(115200);

mySerial.begin(9600);

}

 

void loop() {

// put your main code here, to run repeatedly:

while (mySerial.available()){ //Check if there is an available byte to read,

delay(10); //Delay added to make thing stable

char c = mySerial.read(); //Conduct a serial read

if (c == '\n') {break;} //Exit the loop when the "" is detected after the word

data += c; //Shorthand for data = data + c

}

 

if (data.length() > 0) { // 判斷data內有值在更換

data.trim();

delay(100);

Serial.println(data);

}

data = "";

 

while (Serial.available()){ //Check if there is an available byte to read,

delay(10); //Delay added to make thing stable

char c = Serial.read(); //Conduct a serial read

if (c == '\n') {break;} //Exit the loop when the "" is detected after the word

data += c; //Shorthand for data = data + c

}

 

if (data.length() > 0) { // 判斷data內有值在更換

data.trim();

delay(100);

// Serial.println(data);

mySerial.println(data);

}

data = "";

}

3. 打開Serial monitor,在上方輸入欄中輸入AT指令,可先輸入「AT」,查看模組是否有回覆「OK」。

4. 輸入ATI指令,查看模組廠商、型號及韌體版本。

5. Sim卡狀態查詢:AT+CPIN?
回覆:READY,表示有找到SIM卡。
回覆:ERROR,表示沒有SIM卡。

6. 頻寬設定:AT+QBAND=1,8。
本測試使用的是中華電信NB-IoT的服務,使用的頻段是Band8。

7. 設定啟用APN:AT+QGACT=1,1,”apn”,”internet.iot”。
中華電信NB-IoT服務的AP N :“internet.iot”。
遠傳電信APN:”nbiot”。
台灣大哥大APN:”twm.nbiot”。

8. 設定預設註冊APN:AT+QCGDEFCONT=”IP”,”internet.iot“。

9. 啟動網路:AT+CGATT=1。
回覆:OK,表示正常啟動網路。
回覆:ERROR,表明模組剛開機,SIM卡尚未準備好,請等待片刻。若仍然ERROR,很可能是SIM卡有異常。

10. 儲存設定值:AT&W。
回覆:OK,表示正常啟動網路。

11. 確認是否成功聯網:AT+QLEDMODE=1
此指令的功能是讓二代板的NB標示LED燈開始閃爍,作為是否聯網的標的。
閃爍頻率快:未聯網
閃爍頻率慢:已連網

12. 重新啟動模組:AT+QRST=1。

三、模組連網啟動及狀態查詢測試

1. 啟動NB-IoT模組:AT+CFUN=1。
回覆:+OK。
AT+CFUN=0:表示網路未啟動。
AT+CFUN=11:表示啟動模組網,注意:還沒回覆”OK”前,不能下其他指令,是否入網還要等待+CEREG指令的確認。

2. 查詢模組功能狀態:AT+CFUN?
回覆: +CFUN:0表示模組功能未打開,若返回:+CFUN:1則表示功能已打開,似查看手機是否處於處於飛行或關機狀態。

3. 設定連接基地台啟動:AT+CSON=1。
回覆:+OK。
4. 查詢網路是否啟動:AT+CGATT?。
回覆:+CGATT:1。
0:表示網路未啟動。
1:表示網路已啟動,注意,等於1表示僅打開網路功能,但是否入網還要等待+CEREG指令的確認。

5. 查詢APN網路是否已註冊狀態:AT+CEREG?
回覆:+CEREG= 0,1,表示已經進入APN的網域。
回覆:+CEREG= 0,2,表示已經尚未註冊入APN的網域。
回覆:+CEREG= 0,0,表示沒有SIM卡。

6. 訊號強度查詢:AT+CESQ。
回覆:+CESQ : xx, 0, 255, 255, 255。
xx:0~99,0 :未有訊號,99 :找不到訊號。

7. IP查詢:AT+CGPADDR=1。
回覆:OK:尚未找到IP。
回覆::+CGPADDR: 1,IP(四位):表示已有IP。
說明:若設定期間連上網路會自動回傳IP位址。
+IP : IP位址(四位)

8. PING遠端伺服器:AT+QPING= <contextID>,<host>。
Ping 中華電信DNS主機IP,回覆如下:

9. 查詢目前信號值:AT+CSQ。
回覆:+CSQ: 16,0。
+CSQ格式如下: +CSQ:, ,欄位的含義為:
參數說明:
99:表示網路未知,或者網路未附著。如果模組關閉了自動附著功能,需要啟動模組網路才能獲取到正確的信號值。
0 :表示信號品質為-113dBm或者以下,信號非常差。
1 :表示信號品質為-111dBm。
2~30:對應信號值為-109dBm到-53dBm。
31:對應信號值為-51dBm或者更高。
值:0~7,若等於99表示未知或未附著到網路。
CSQ中的rssi與dBm換算公式如下:dBm = rssi*2 – 113,例如,當rssi等於30時,
對應dBm為-53dBm