本篇內(nèi)容主要講解“LiteOS怎么實(shí)現(xiàn)NB-IoT通信”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“LiteOS怎么實(shí)現(xiàn)NB-IoT通信”吧!
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比婁煩網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式婁煩網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋婁煩地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
開發(fā)板
NB-IoT通信模組(BC35-G)
BC35-G 是一款高性能、低功耗的多頻段 NB-IoT 無線通信模塊,支持 B1/B3/B8/B5/B20/B28 頻段,在設(shè)計和AT指令上與BC95兼容。
小熊派NB-IoT通信擴(kuò)展模組的波特率為9600bps。
QCOM串口助手
BC35-G AT命令手冊
此文檔來自于移遠(yuǎn)官方!閱讀本教程時,關(guān)于AT指令的詳細(xì)說明請參考該文檔!
小熊派開發(fā)板右上角的開關(guān)撥到AT-PC一端,則模組直接與PC相連,方便調(diào)試。
所有工具和文檔均在『小熊派開源社區(qū)』公眾號回復(fù)“通信模組”獲??!
指令:AT
功能:測試AT指令功能是否正常
示例:
AT OK
指令:AT+CSQ
功能:返回從 UE 接收到的信號強(qiáng)度指示
和信道誤碼率
,其中第一個值rssi應(yīng)當(dāng)在0-31之間,如果為99則表示信號無法檢測,第二個參數(shù)ber因為模組當(dāng)前不支持,所以始終為99。
示例:
+CSQ:26,99 OK
指令:AT+CEREG?
功能:查詢當(dāng)前 EPS 網(wǎng)絡(luò)注冊狀態(tài),該指令返回的第一個參數(shù)為0則表示禁止網(wǎng)絡(luò)注冊URC,第二個參數(shù)表示網(wǎng)絡(luò)注冊狀態(tài),1表示已注冊本地網(wǎng),5表示已注冊漫游網(wǎng)絡(luò),其余值則表示注冊失敗。
示例:
+CEREG:0,1 OK
指令:AT+CGATT?
功能:該命令用于查詢當(dāng)前是否將 UE 附著于 PS 域,返回值為1則表示已附著,即網(wǎng)絡(luò)激活成功。
示例:
+CGATT:1 OK
指令:AT+CGPADDR
功能:該命令用于查詢模組當(dāng)前的ip地址。
示例:
+CGPADDR:0,10.44.108.10 OK
由于NB-IoT模組可以直接對接IoT平臺,所以在單獨(dú)測試使用UDP連接時,需要在激活網(wǎng)絡(luò)成功之后,在獲取ip地址之前,關(guān)閉IoT平臺注冊功能。
使用如下命令禁止該功能:
AT+QREGSWT=2
首先我們需要搭建一個UDP服務(wù)器,有兩種方式:
在服務(wù)器上使用Python、Java、C#等語言自行編寫服務(wù)器程序;
在本地PC上使用網(wǎng)絡(luò)調(diào)試助手開啟UDP服務(wù)器;
因為 NB-IoT 模組直接注冊的是公網(wǎng)ip地址,所以這里我們使用第一種方式,在Linux服務(wù)器上運(yùn)行一個Python編寫的UDP測試服務(wù)器:
本地PC使用的是局域網(wǎng),公網(wǎng)不可以直接根據(jù)ip地址訪問到本PC,需要進(jìn)行內(nèi)網(wǎng)穿透,不推薦使用。
這里的Python程序如下:
# udp-server.py from socket import * host = '' port = 8000 # 創(chuàng)建server socket server_socket = socket(AF_INET,SOCK_DGRAM) # 綁定socket監(jiān)聽地址 server_addr = (host,port) server_socket.bind(server_addr) print('UDP Server Start...') # 處理連接請求 while(True): # 接收客戶端的數(shù)據(jù) data, addr = server_socket.recvfrom(1024) print("Receive from %s:%s" % addr % data) if data == b"quit": server_socket.sendto(b"Good bye!\n", addr) continue server_socket.sendto(b"Hello,udp client!\n", addr)
運(yùn)行:
python3 udp-server.py
效果如下:
使用AT命令連接UDP服務(wù)器,首先需要創(chuàng)建一個 UDP 類型的 Socket,創(chuàng)建socket的指令如下:
AT+NSOCR=, ,
其中第一個參數(shù)是socket類型,DGRAM表示UDP,STREAM表示UDP;第二個參數(shù)表示協(xié)議類型,UDP 為 17, UDP 為 6,最后一個參數(shù)指定socket使用的本地端口,如果為0則表示隨機(jī)分配。
所以創(chuàng)建UDP socket的示例如下:
AT+NSOCR=DGRAM,17,0 1 OK
指令:
AT+NSOST=, , , ,
其中第一個參數(shù)是由 AT+NSOCR 返回的 Socket 編號,第二個參數(shù)是UDP服務(wù)器ip地址,也可以使用域名,第三個參數(shù)是UDP服務(wù)器開啟監(jiān)聽的端口,第四個是發(fā)送數(shù)據(jù)的長度,最后一個是要發(fā)送的十六進(jìn)制數(shù)據(jù)。
注意:該命令僅限UDP scoket連接服務(wù)器使用,并且所有參數(shù)均無引號!
示例:
AT+NSOST=1,122.51.89.94,8000,4,30313233 1,4 OK
發(fā)送之后,在服務(wù)器端也可以看到:
模組發(fā)送數(shù)據(jù)到服務(wù)器后,服務(wù)器會自動發(fā)送消息,模組會打印出收到信息的提示:
+NSONMI:1,18
該信息表示編號為1的socket收到了18字節(jié)的數(shù)據(jù)。
可以使用如下命令查看收到的數(shù)據(jù),第一個參數(shù)是socket編號,第二個參數(shù)是查詢的數(shù)據(jù)長度:
AT+NSORF=,
查看剛剛收到的數(shù)據(jù):
AT+NSORF=1,18 1,122.51.89.94,8000,18,48656C6C6F2C75647020636C69656E74210A,0 OK
其中收到的數(shù)據(jù)為倒數(shù)第二個參數(shù),是十六進(jìn)制格式:
48656C6C6F2C75647020636C69656E74210A
使用在線工具將數(shù)據(jù)轉(zhuǎn)化為字符串即可:
通信完畢之后,可以使用下面的命令關(guān)閉最開始創(chuàng)建的socket:
AT+NSOCL=
示例:
AT+NSOCL=1 OK
到此,相信大家對“LiteOS怎么實(shí)現(xiàn)NB-IoT通信”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!