板載程序測試
在上個實驗中沐飘,我們僅僅使用了板載的串口和 NB 模組,驗證了 NB 模組的雙向通信能力牲迫,上傳的數(shù)據(jù)是我 們構造的耐朴,下發(fā)的命令我們也僅僅是收到了而已,并沒有進行處理恩溅。要想進行自動數(shù)據(jù)上傳隔箍,同時響應下發(fā) 指令,就需要我們編程脚乡,由 MCU 來處理蜒滩。這個內(nèi)容由下面的實驗來完成。
本實驗中奶稠,我們需要用到 MCU 和光照拓展板俯艰。我們會將程序燒寫進 MCU 中,并由 MCU 去讀取光照傳感 器的數(shù)值锌订,然后上傳到 OceanConnect 平臺竹握。同時,MCU 也會響應 OceanConnect 下發(fā)的控制指令辆飘,去實際控制小燈的開和關啦辐。
連接好開發(fā)板的接線圖后:
進入代碼 targets\STM32L431_EVB_M1\MDK-ARM 目錄,打開 IoT-Demo.uvprojx 工程文件蜈项。打開項目后芹关, 在 Keil 項目列表中找到 Application/User 下的 main.c,約 52 行紧卒,修改參數(shù)如下:
1. #define OCEAN_IP "49.4.85.232" // OceanConnect IP 地址
2. #define SECURITY_PORT "5684" // 加密端口
3. #define NON_SECURITY_PORT "5683" // 非加密端口
同一處的其他幾個宏可以不管侥衬,程序中未使用。然后修改約 119 行:
1. #if AT_DTLS
2. los_nb_init((const int8_t)"139.159.140.34",(const int8_t)"5684",&sec);
3. #else
4. los_nb_init((const int8_t)OCEAN_IP,(const int8_t)NON_SECURITY_PORT, NULL); // 修改此 行,使用前面設置的 IP 地址和端口
5. #endif
修改完畢以后轴总,點擊 進行編譯直颅。編譯無誤則準備燒寫。燒寫完成后怀樟,重啟板子功偿。
打開 QCOM,波特率修改為 115200漂佩,此時它將輸出 MCU 的打硬焙(因為連線改變,所以串口就不會再輸出 上節(jié)實驗的 NB 模組信息了)投蝉。
此時养葵,一方面可以從板載 LED 屏看到實時采集的關照強度,另一方面瘩缆,可以在開發(fā)中心設備管理中关拒,看到 該設備的歷史數(shù)據(jù):
image.png
該實驗中,程序每隔一秒就會向 OceanConnect 發(fā)送一次數(shù)據(jù)庸娱,所以 NB 模組其實并不會處于 PSM 模 式着绊。因此,在開發(fā)中心點擊“調(diào)試產(chǎn)品”熟尉,向設備發(fā)送 ON 指令归露,則光照拓展板的小燈就會立即點亮,從而 完成路燈的遠程控制斤儿。
image.png