Ⅰ LiteOS通信模組教程03-AT指令玩轉NB-IoT通信
BC35-G 是一款高性能、低功耗的多頻段 NB-IoT 無線通信模塊,支持 B1/B3/B8/B5/B20/B28 頻段,在設計和AT指令上與BC95兼容。
小熊派開發板右上角的開關撥到AT-PC一端,則模組直接與PC相連,方便調試。
指令:AT
功能:測試AT指令功能是否正常
示例:
指令:AT+CSQ
功能:返回從 UE 接收到的信號強度指示 <rssi> 和信道誤碼率 <ber> ,其中第一個值rssi應當在0-31之間,如果為99則表示信號無法檢測,第二個參數ber因為模組當前不支持,所以始終為99。
示例:
指令:AT+CEREG?
功能:查詢當前 EPS 網路注冊狀態,該指令返回的第一個參數為0則表示禁止網路注冊URC,第二個參數表示網路注冊狀態,1表示已注冊本地網,5表示已注冊漫遊網路,其餘值則表示注冊失敗。
示例:
指令:AT+CGATT?
功能:該命令用於查詢當前是否將 UE 附著於 PS 域,返回值為1則表示已附著,即網路激活成功。
示例:
指令:AT+CGPADDR
功能:該命令用於查詢模組當前的ip地址。
示例:
由於NB-IoT模組可以直接對接IoT平台,所以在單獨測試使用UDP連接時,需要 在激活網路成功之後,在獲取ip地址之前,關閉IoT平台注冊功能 。
使用如下命令禁止該功能:
首先我們需要搭建一個UDP伺服器,有兩種方式:
因為 NB-IoT 模組直接注冊的是公網ip地址,所以這里我們使用第一種方式,在Linux伺服器上運行一個Python編寫的UDP測試伺服器:
這里的Python程序如下:
運行:
效果如下:
使用AT命令連接UDP伺服器,首先需要創建一個 UDP 類型的 Socket,創建socket的指令如下:
其中第一個參數是socket類型,DGRAM表示UDP,STREAM表示UDP;第二個參數表示協議類型,UDP 為 17, UDP 為 6,最後一個參數指定socket使用的本地埠,如果為0則表示隨機分配。
所以創建UDP socket的示例如下:
指令:
其中第一個參數是由 AT+NSOCR 返回的 Socket 編號,第二個參數是UDP伺服器ip地址,也可以使用域名,第三個參數是UDP伺服器開啟監聽的埠,第四個是發送數據的長度,最後一個是要發送的十六進制數據。
示例:
發送之後,在伺服器端也可以看到:
模組發送數據到伺服器後,伺服器會自動發送消息,模組會列印出收到信息的提示:
該信息表示編號為1的socket收到了18位元組的數據。
可以使用如下命令查看收到的數據,第一個參數是socket編號,第二個參數是查詢的數據長度:
查看剛剛收到的數據:
其中收到的數據為倒數第二個參數,是十六進制格式:
使用 在線工具 將數據轉化為字元串即可:
通信完畢之後,可以使用下面的命令關閉最開始創建的socket:
示例: