|

【NB-IoT】國產DSI2598開發板開箱評測

   
作者:Victor Sue

物聯網在近幾年有爆發之勢,大量普及的集合了許多因素,包括:晶片模組成本、終端設備、網路普及、應用服務、軟體技術等日趨完善有關,物聯網有「最後一哩」的難題。雖然用來收集與分析資料的雲端基礎架構早已就緒,但仍需要可用來連結大量裝置接上網路、且兼具傳輸距離、低功耗與低成本特性的LPWAN(Low-Power Wide-Area Network,低功率廣域網路)。

因此LPWAN有數種規格互相競逐,例如Lora、Sigfox、窄頻物聯網(Narrow Band-IoT, NB-IoT)等,NB-IoT亦稱為LTE Cat. NB1,為架構在行動通訊網路上的低功率廣域網路技術。可以使終端設備簡單有效地連接行動通訊網路,資料傳輸時具備行動通訊等級加密的可靠度,適合處理少量、不頻繁的雙向數據。

主流LPWAN規格比較 (圖片來源:Google)

在感測器軟硬體方面,可以透過Arduino建構快速原型的製作,其為一個基於易於使用的硬體和軟體的開源電子架構,並可從簡單感測應用轉變為物聯網應用,可穿戴設備等嵌入式產品,而且所有Arduino都是完全開源的,開發者能夠獨立構建它們並最終使產品適應其特定需求。

鑒於Arduino和NB-IoT在物聯網產品開發上的優勢,資策會推出了結合兩者優勢的開源物聯網開發板 – DSI2598 NB-IOT開發板,使用國產晶片聯發科的NB-IoT MT2625模組,搭配Arduino原廠MCUATMEGA328P,為國內首款的Arduino NB-IoT開發板,輔以Arduino IDE為主要的程式開發環境,讓雛形打造簡單容易。

這次有幸受邀針對 DSI2598 NB-IoT 開發板做測試,並撰寫其測評文章,官方的作法很開放,完全不干涉我如何撰寫文章的內容,若您對於這片DSI2598 NB-IoT 開發板開發板有興趣,可透過這個網址進行申請(申請核准後將另行通知領取)。

會員福利
1

免費電子報

2

會員搶先看

3

主題訂閱

4

好文收藏

Victor

Author: Victor

白天是系統廠網通產品的FW攻城獅,晚上是熬夜做專案的Maker,透過IoT應用在不同領域中。 專長 : FW ( MCU/Linux )、電路設計、感測器、無線傳輸 (Wi-Fi、BT/LE、Zigbee、LoRa、Sigfox)、智能音箱。

Share This Post On

25 Comments

  1. 您好,不好意思,
    想請問您BC26的板子目前只能做上傳資料的功能嗎?
    因為想做手機和電腦的無線控制,
    因此想知道BC26可不可以接收訊息?

    Post a Reply
  2. 我有申請到正在用,看來連線都正常了,不過我一直沒辦法順利下載那些PDF檔案(可能因為我都在學校的關係,不能隨便連結中國的網路),因此想是那些AT command、TCP(IP) command的說明書我都下載不成功

    有辦法email給我嗎: laisan86@gmail.com

    Post a Reply
  3. 您好詢問一下,目前我使用您的Source Code練習卻無法上傳資料至IDEAS Chain平台,AK、DID、SID已確認無誤,而Monitor並無明顯錯誤,但會有亂碼的情況發生(115200 baud)
    之後便採用AT Command手動方式進行連接,能與150.117.122.166(PORT:7789)進行連接,但在AT+QSOSEND傳送後,會有亂碼或是完全無reply的情況發生(連接並無斷線),而資料也沒有上傳成功。
    想詢問是否有遇過類似的解決方法,感謝您 !

    開發版 : DSI2598(第二代)
    網路狀態 : 已使用AT Command確認網路與取得IP
    錯誤異常 : 無法順利上傳資料至IDEAS Chain平台

    Post a Reply
  4. 您好,貴公司的DSI2598開發板我正與我指導教授討論是否購買與購買幾片中,這幾天就會寄予購物清單^^

    可否再請教您們一個問題,我使用紅外線物體偵測、兩片Arduino UNO R3、兩片LoRaRYLR890、1片NBIOT:SIM7020E。
    我將其分為傳送端與接收端:
    傳送端(Tx):
    1. 紅外線物體偵測器
    2. Arduino UNO R3
    3. LoRa:RYLR890
    4. LED

    接收端:(Rx):
    1. Arduino UNO R3
    2. LoRa:RYLR890
    3. NBIOT:SIM7020E
    4. LED

    我的目的是要做一套模擬智能路燈的概念,當Tx端之紅外線偵測到物體時除本身LED燈亮燈之外還能透過LoRa傳達亮燈資料訊息給Rx端,並再把訊息透過NBIOT傳給IFTTT,最後IFTTT把訊息傳至手機。

    但現在問題出在接收端之LED燈能夠確實亮燈,手機卻沒收到IFTTT之訊息。我推測是NBIOT的程式宣告部份發生了問題,而我檢查好幾日都查不到錯誤點,無計可施下只好請教NBIOT專業人士給予我寶貴建議!!!

    這是我的接收端程式碼:

    const int ledPin = 13;

    #include //引用SoftwareSerial函式庫
    SoftwareSerial LoRa(10, 11); //RX ,TX
    SoftwareSerial NBIOT(3, 4); //RX ,TX

    void setup() { //輸出入宣告區

    pinMode(ledPin, OUTPUT);

    Serial.begin(9600); //設鮑率為9600
    NBIOT.begin(9600);
    LoRa.begin(57600); //設LoRa傳輸率為57600

    pinMode(9, OUTPUT); //設Pin 9() 為輸出
    digitalWrite(9, HIGH); //設Pin 9為高電位
    delay(300); //延遲0.3毫秒

    LoRa.println(“AT+NETWORKID=12”); //把網路號碼設為12
    delay(300);
    LoRa.println(“AT+NETWORKID?”); //詢問網路號碼
    delay(300);

    LoRa.println(“AT+ADDRESS=34”); //把裝置號碼設為34
    delay(300);
    LoRa.println(“AT+ADDRESS?”); //詢問裝置號碼
    delay(300);

    //while(LoRa.available()){ //把累積的回應全部印出來
    // Serial.println(“ok”);
    // Serial.write(LoRa.read());
    //}
    }

    void loop() {
    String rxData, lengthChar; //宣告rxData,lengthChar為字串
    char rxByte, state = 0;
    int k, header = 0, tail=0, strLength, payloadLength;
    if (LoRa.available()){

    while(LoRa.available()){ //讀取字串 (如果BaudRate太低,while迴圈內應加入適當的delay)
    rxByte = LoRa.read();
    rxData += rxByte;
    }
    Serial.println(“\n \nRx AT command:”); //印出原始command字串
    Serial.println(rxData);

    if (rxData.startsWith(“+RCV=”)) { //判斷字串頭是否為”+RCV”?
    strLength = rxData.length();
    for(k = 5; k < strLength; k++){ //尋找資料段落所在
    if (state == 0) {//尋找第1個','
    if (rxData.charAt(k) == ',')
    state = 1;
    }else if (state == 1) { //讀取並換算Payload長度,根據長度尋找資料段落所在
    if (isDigit(rxData.charAt(k))){ //讀取Payload長度字串
    lengthChar +=rxData.charAt(k);
    }else if (rxData.charAt(k)==',') { //Payload長度字串結束
    header = k+1; //Payload開始位置
    payloadLength = lengthChar.toInt(); //換算Payload長度
    tail = header+payloadLength; //Payload結束位置

    Serial.print("Payload length = "); //印出Payload長度
    Serial.println(payloadLength);

    rxData = rxData.substring(header,tail); //切出資料段落

    Serial.println("Rx payload:"); //印出Payload
    Serial.println(rxData);

    //目前推測是這裡有宣告錯誤之處
    }if (rxData == "1"){
    //Serial.print(rxData);
    digitalWrite (ledPin, HIGH);
    break;
    const char *AT = "AT";
    const char *CSQ = "AT+CSQ";
    NBIOT.println(AT);
    delay(100);
    NBIOT.println(CSQ);
    delay(100);
    NBIOT.println(String("AT+CHTTPCREATE=") + "http://&quot; + "maker.ifttt.com\r\n");
    delay(100);
    NBIOT.println("AT+CHTTPCON=0");
    delay(100);
    NBIOT.println(String("AT+CHTTPSEND=0,0,") + "/trigger/msgToLINE/with/key/cos134FjL3AhHpVsul0feQ/");
    delay(100);
    NBIOT.println("AT+CHTTPDISCON=0");
    delay(100);
    NBIOT.println("AT+CHTTPDESTROY=0");

    } else if (rxData == "0"){
    //Serial.print(rxData);
    digitalWrite (ledPin, LOW);
    break;

    }
    }else{
    Serial.println("Error!");
    digitalWrite (ledPin,LOW);
    break;

    }
    }
    }
    }
    }
    //delay(100);

    在此萬分感謝您們的幫助!!!不論您耐心看完我的長篇留言後是否會留言,或是留給我的建議是否真的可以成為我的解題之方法,小弟都萬分感謝您們的耐心閱讀與協助!! 2020 Happy New Years!

    Post a Reply
    • Victor

      DoDo你好, 很高興看到你用NB-IOT建立屬於自己的專案,
      以下是幾點建議, 希望對你除錯上有所幫忙 :
      1.LoRa模組RYLR890的Serial預設Baud Rate是9600.
      2.是否有進行NB-IOT init ?
      3.是否有確認NB-IOT行動網路上線(訊號品質AT+CSQ or 上線狀態AT+CREG?) ?
      4.是否有設定行動網路的APN ?

      Post a Reply
      • 感謝您給予的寶貴建議,我這幾天不斷地在除錯,在不斷改進後發現到問題似乎是出現在NBIOT:SIM7020E的PWR腳位中?

        當我將LoRa:RYLR890暫時拔除後,NBIOT能正常傳輸Arduino資訊至IFTTT,並傳至LINE中,但若加入LoRa我將無法正常傳輸;可LoRa方面不管我有沒有加上NBIOT,LoRa的都能夠正常傳達Tx資料到Rx中

        Post a Reply
  5. 請問一下,我是自架一個UDP SERVER收集NB-IOT傳過來的訊息,目前是單向收資料,因在UDP上可以看到NB-IOT上SIM卡傳過來的IP,若我要對NB-IOT反向下指令的話,要怎麼操作。謝謝!

    Post a Reply
    • Victor

      你好, 由於UDP封包的特性是射後不理, 所以建議改用MQTT主動詢問, 或是使用TCP的方式進行.

      Post a Reply
  6. 好的我再參考。

    Arduino UNO 部份 目前我卡在 DSI2598-ideaschain.ino的第一列程式的階段:

    BC26.h no such a file or directory
    請問不是點選加入檔案嗎?

    Post a Reply
    • Victor

      你好, 請將BC26.h和DSI2598-ideaschain.ino放在同一層目錄, 謝謝.

      Post a Reply
  7. owenou

    已詢問過,這幾天在修改系統,過兩天會再啟用。

    Post a Reply
        • 好的我再參考。

          Arduino UNO 部份 目前我卡在 DSI2598-ideaschain.ino的第一列程式的階段:

          BC26.h no such a file or directory
          請問不是點選加入檔案嗎?

          Post a Reply
          • 您好,DSI2598-ideaschain.ino的第一列程式我找到了解決方法,但目前有疑慮的是BC26.h的第59行程式有疑慮:
            59.
            for(int i = 0; i 10) { // 超過10秒未有回覆,重新啟動系統

            這段程式Arduino偵測的錯誤回報訊息是:
            a function-definition is not allowed here before ‘{‘ token

            煩請指點疑慮!!

          • Victor

            你好, 可能是複製貼上的問題, 建議可以到我的github下載, 謝謝.

  8. 你好,請問有Arduino UNO搭配NB-IOT的範例供參考嗎? 我使用的NB-IOT型號是SIM7020E

    Post a Reply
    • Victor

      您好, 建議可以修改NB-IoT連線測試的範例(下載), 跑在Arduino Uno上,
      SIM7020E的連線AT指令, 可以參考Waveshare SIM7020E NB-IoT HAT裡的說明, 來進行相關的連線操作.

      Post a Reply
      • 好的,這幾日我再嘗試,今日研究了一下也對DSI2598開發模組有興趣,但您的網址我點選進入後,網址顯示已不接受回應?

        Post a Reply

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *