COSCon'19 | 如何設計新一代的圖數據庫 Nebula
1262
2025-04-02
1. 環境準備
硬件準備
小熊派開發板
NB-IoT通信模組(BC35-G)
BC35-G 是一款高性能、低功耗的多頻段 NB-IoT 無線通信模塊,支持 B1/B3/B8/B5/B20/B28 頻段,在設計和AT指令上與BC95兼容。
小熊派NB-IoT通信擴展模組的波特率為9600bps。
軟件準備
QCOM串口助手
文檔準備
BC35-G AT命令手冊
此文檔來自于移遠官方!閱讀本教程時,關于AT指令的詳細說明請參考該文檔!
切換開關
小熊派開發板右上角的開關撥到AT-PC一端,則模組直接與PC相連,方便調試。
所有工具和文檔均在『小熊派開源社區』公眾號回復“通信模組”獲取!
2. NB-IoT入網AT指令
AT
指令:AT
功能:測試AT指令功能是否正常
示例:
AT OK
獲取信號強度指示
指令:AT+CSQ
功能:返回從 UE 接收到的信號強度指示?
示例:
+CSQ:26,99 OK
查詢網絡注冊狀態
指令:AT+CEREG?
功能:查詢當前 EPS 網絡注冊狀態,該指令返回的第一個參數為0則表示禁止網絡注冊URC,第二個參數表示網絡注冊狀態,1表示已注冊本地網,5表示已注冊***網絡,其余值則表示注冊失敗。
示例:
+CEREG:0,1 OK
查詢網絡是否被激活
指令:AT+CGATT?
功能:該命令用于查詢當前是否將 UE 附著于 PS 域,返回值為1則表示已附著,即網絡激活成功。
示例:
+CGATT:1 OK
查詢模塊的 IP 地址
指令:AT+CGPADDR
功能:該命令用于查詢模組當前的ip地址。
示例:
+CGPADDR:0,10.44.108.10 OK
3. 基于 UDP 協議連接遠程服務器通信實例
3.1. 禁用IoT平臺的注冊功能
由于NB-IoT模組可以直接對接IoT平臺,所以在單獨測試使用UDP連接時,需要在激活網絡成功之后,在獲取ip地址之前,關閉IoT平臺注冊功能。
使用如下命令禁止該功能:
AT+QREGSWT=2
3.2. 搭建遠程UDP服務器
首先我們需要搭建一個UDP服務器,有兩種方式:
在服務器上使用Python、Java、C#等語言自行編寫服務器程序;
在本地PC上使用網絡調試助手開啟UDP服務器;
因為 NB-IoT 模組直接注冊的是公網ip地址,所以這里我們使用第一種方式,在linux服務器上運行一個Python編寫的UDP測試服務器:
本地PC使用的是局域網,公網不可以直接根據ip地址訪問到本PC,需要進行內網穿透,不推薦使用。
這里的Python程序如下:
#?udp-server.py from?socket?import?* host?=?'' port?=?8000 #?創建server?socket server_socket?=?socket(AF_INET,SOCK_DGRAM) #?綁定socket監聽地址 server_addr?=?(host,port) server_socket.bind(server_addr) print('UDP?Server?Start...') #?處理連接請求 while(True): ????#?接收客戶端的數據 ????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)
運行:
python3?udp-server.py
效果如下:
3.3. 模組與服務器通信
創建Socket
使用AT命令連接UDP服務器,首先需要創建一個 UDP 類型的 Socket,創建socket的指令如下:
AT+NSOCR=
其中第一個參數是socket類型,DGRAM表示UDP,STREAM表示UDP;第二個參數表示協議類型,UDP 為 17, UDP 為 6,最后一個參數指定socket使用的本地端口,如果為0則表示隨機分配。
所以創建UDP socket的示例如下:
AT+NSOCR=DGRAM,17,0 1 OK
模組向服務器發送消息
指令:
AT+NSOST=
其中第一個參數是由 AT+NSOCR 返回的 Socket 編號,第二個參數是UDP服務器ip地址,也可以使用域名,第三個參數是UDP服務器開啟監聽的端口,第四個是發送數據的長度,最后一個是要發送的十六進制數據。
注意:該命令僅限UDP scoket連接服務器使用,并且所有參數均無引號!
示例:
AT+NSOST=1,122.51.89.94,8000,4,30313233 1,4 OK
發送之后,在服務器端也可以看到:
模組接收服務器消息
模組發送數據到服務器后,服務器會自動發送消息,模組會打印出收到信息的提示:
+NSONMI:1,18
該信息表示編號為1的socket收到了18字節的數據。
可以使用如下命令查看收到的數據,第一個參數是socket編號,第二個參數是查詢的數據長度:
AT+NSORF=
查看剛剛收到的數據:
AT+NSORF=1,18 1,122.51.89.94,8000,18,48656C6C6F2C75647020636C69656E74210A,0 OK
其中收到的數據為倒數第二個參數,是十六進制格式:
48656C6C6F2C75647020636C69656E74210A
使用在線工具將數據轉化為字符串即可:
關閉scoket
通信完畢之后,可以使用下面的命令關閉最開始創建的socket:
AT+NSOCL=
示例:
AT+NSOCL=1 OK
單片機 輕量級操作系統 LiteOS IoT
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。