步驟 1 通過(guò) PC 串口調(diào)試終端控制 NB 模組入網(wǎng)注冊(cè)與數(shù)據(jù)上報(bào)
打開(kāi) LiteOS Studio,導(dǎo)入實(shí)驗(yàn)二的工程文件,在 LiteOS Studio 主界面下的控制臺(tái)界面,選
擇“串口終端”,在串口終端界面下選擇相應(yīng)端口(相應(yīng)端口可通過(guò) PC 機(jī)的“計(jì)算
機(jī)”->“管理”->“設(shè)備管理器”->“端口”中可以查看),設(shè)置波特率為 9600,校驗(yàn)位
None,數(shù)據(jù)位 8,停止位 1,流控 None,點(diǎn)擊配置欄最右邊圖標(biāo)“切換到非 shell”,并打
開(kāi)串口;

在發(fā)送區(qū)界面輸入“AT+NRB”,點(diǎn)擊“發(fā)送”,重啟 NB 模組(注:發(fā)送 AT 指令后,需發(fā)
送新行模組才能正確接收指令,即輸入完 AT 指令后需回車(chē)另一起行再點(diǎn)擊發(fā)送);
在接收區(qū)可查看模組返回的信息;

在發(fā)送區(qū)界面輸入“AT+CGSN=1”,點(diǎn)擊“發(fā)送”,獲取 NB 模組的 IMEI 號(hào),該 IMEI 信息同時(shí)也可在 NB 模組標(biāo)刻的信息上查到;

image.png
根據(jù) NB 模組的 IMEI 號(hào),在平臺(tái)上注冊(cè)設(shè)備。在 OceanConnect 平臺(tái)“產(chǎn)品”下的“設(shè)備管理”界面,點(diǎn)擊“新增真實(shí)設(shè)備”;

選擇實(shí)驗(yàn)三中開(kāi)發(fā)的 Profile 文件;
自定義設(shè)備名稱,并根據(jù)獲取的 IMEI 號(hào)輸入設(shè)備標(biāo)識(shí),選擇設(shè)備注冊(cè)方式“不加密”,點(diǎn)擊“確定”;

注冊(cè)設(shè)備成功,平臺(tái)返回相應(yīng)信息,點(diǎn)擊“確定”;
OceanConnect 平臺(tái)“設(shè)備管理”界面可查看到注冊(cè)的設(shè)備(此時(shí)還處于離線狀態(tài));
根據(jù)平臺(tái)提供的對(duì)接信息,在 LiteOS Studio 串口終端發(fā)送區(qū)界面輸入
“AT+NCDP=49.4.85.232,5683”,設(shè)置 NB 模組對(duì)接的平臺(tái) ip 及端口信息(模組返回
OK,即設(shè)置成功);

在發(fā)送區(qū)界面輸入“AT+NRB”,重新重啟 NB 模組,確保對(duì)接平臺(tái) ip 設(shè)置生效;

在發(fā)送區(qū)界面輸入“AT+CFUN?”,查詢協(xié)議棧功能是否開(kāi)啟(返回值為 CFUN:1 表示開(kāi)啟;返回值為 CFUN:0 表示關(guān)閉。如返回 0 則需要輸入”AT+CFUN=1”開(kāi)啟);

在發(fā)送區(qū)界面輸入“AT+CGATT?”,查詢 NB-IoT 模組網(wǎng)絡(luò)附著狀態(tài)(如果返回值為
CGATT:0,表示網(wǎng)絡(luò)未附著;返回值為 CGATT:1,表示網(wǎng)絡(luò)附著。如返回 0 則需要輸入“AT+CGATT=1”進(jìn)行網(wǎng)絡(luò)附著);

在發(fā)送區(qū)界面輸入“AT+NMGS=3,000123”,發(fā)送模擬數(shù)據(jù)給 IoT 平臺(tái)(返回 OK 即為發(fā)送成功);

在 OceanConnect 平臺(tái)“產(chǎn)品”下的“設(shè)備管理”界面,可以查看到之前注冊(cè)的設(shè)備處于在線狀態(tài);
選擇該設(shè)備,點(diǎn)擊“歷史數(shù)據(jù)”,可查看到設(shè)備的歷史數(shù)據(jù)信息。
步驟 2 基于 LiteOS 控制 NB 模組入網(wǎng)注冊(cè)與數(shù)據(jù)上報(bào)
在 LiteOS Studio 的工程界面工程樹(shù)下,打開(kāi)路徑 BearPi_LiteOS -> targets ->
STM32L431_BearPi -> GCC 下的“config.mk”文件;

在“config.mk”文件中修改網(wǎng)絡(luò)類(lèi)型,將“NETWORK_TYPE”參數(shù)修改為
“NB_NEUL95_NO_ATINY”;

在 LiteOS Studio 的工程界面工程樹(shù)下,打開(kāi)路徑 BearPi_LiteOS -> demos ->
nbiot_without_atiny 下的“nb_demo.c”文件;

在“nb_demo.c”文件中根據(jù)平臺(tái)提供的對(duì)接信息,修改代碼中 IP 與 PORT 信息;
在 LiteOS Studio 的工程界面工程樹(shù)下,打開(kāi)路徑 BearPi_LiteOS -> targets ->
STM32L431_BearPi -> Src 下的“main.c”文件;

在“main.c”文件 main 主函數(shù)中添加執(zhí)行“create_work_tasks”函數(shù)的代碼;

(注:create_work_tasks 函數(shù)在 user_task.c 里定義,該函數(shù)里執(zhí)行 create_agenttiny_task函數(shù)。在 create_agenttiny_task 中創(chuàng)建了 atiny_task_entry 任務(wù),在該任務(wù)中,根據(jù)之前config.mk 中的網(wǎng)絡(luò)類(lèi)型配置,執(zhí)行對(duì)應(yīng)的通信模組程序。具體代碼邏輯讀者可自行學(xué)習(xí)了解)保存修改,點(diǎn)擊編譯;將開(kāi)發(fā)板通過(guò) USB 線連接電腦,點(diǎn)擊下載;將代碼燒錄到開(kāi)發(fā)板芯片中;
在控制臺(tái)界面選擇“串口終端”,選擇相應(yīng)端口,設(shè)置波特率為 115200,校驗(yàn)位 None,數(shù)據(jù)位 8,停止位 1,流控 None,并打開(kāi)串口;同時(shí)將開(kāi)發(fā)板上 AT 指令入源的切換開(kāi)關(guān)切換至 AT-MCU,按下開(kāi)發(fā)板上的 RESET 按鍵,在開(kāi)發(fā)板 MCU 上運(yùn)行 LiteOS;此時(shí)可以看到輸出的打印信息;在 OceanConnect 平臺(tái)“產(chǎn)品”下的“設(shè)備管理”界面,選擇該 NB 設(shè)備,點(diǎn)擊“歷史數(shù)據(jù)”,可查看到 NB 模組上報(bào)的數(shù)據(jù)信息。
