作者:柯大
資料來源: 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