實(shí)驗(yàn)六:基于LiteOS實(shí)現(xiàn)端到端物聯(lián)實(shí)驗(yàn)
實(shí)驗(yàn)任務(wù)配置
步驟1 移植光敏傳感器代碼迁客,通過傳感器采集光照亮度
在Keil環(huán)境中右擊“IoT-Demo”選擇“Manage Project Items…”刷晋;
在“Project Items”標(biāo)簽下的“Groups”中添加“Hardware”赏殃,并在該group下添加光敏傳感器代碼;添加“IoT-Demo-LiteOS\targets\Hareware\BH1750”目錄下的“BH1750.c”文件系宫,點(diǎn)擊“OK”掰派;參照實(shí)驗(yàn)5步驟1的方式怔毛,添加光敏傳感器代碼的頭文件路徑(“IoT-Demo-LiteOS\targets\Hardware\BH1750”);
在“main.h” /* USER CODE BEGIN Includes */與 / * USER CODE END Includes */之間添加引用定義標(biāo)準(zhǔn)擴(kuò)展整數(shù)類型的頭文件代碼;在“main.h”的/ *USER CODE BEGIN Private defines */與/ *USER CODE END Private defines */之間添加全局變量“msg_for_BH1750”與“BH1750_send”定義的代碼促王;在“main.c”的/ *USER CODE BEGIN Includes */與/ *USER CODE END Includes */之間添加引用光敏傳感器頭文件的代碼與BH1750數(shù)據(jù)的全局變量犀盟,并根據(jù)1.2.1章節(jié)步驟3中設(shè)計(jì)的數(shù)據(jù)碼流,添加光敏傳感器數(shù)據(jù)上報(bào)時(shí)攜帶messageld的代碼蝇狼;在“main.c”的/ * USER CODE BEGIN 0 */與/ * USER CODE END 0 */之間添加光敏傳感器任務(wù)代碼阅畴;定義光敏傳感器任務(wù)名為“LightSenssor_task”,優(yōu)先級(jí)為0;通過該任務(wù)题翰,對(duì)光敏傳感器進(jìn)行初始化恶阴,并打印任務(wù)信息與光敏傳感器數(shù)據(jù);基于步驟3在“main.c”的/ * USER CODE BEGIN 2 */與/ *USER CODE END 2 */之間生成的代碼豹障,添加創(chuàng)建光敏傳感器任務(wù)的代碼冯事,并注釋創(chuàng)建task1與task2的代碼;
點(diǎn)擊“Rebuild”血公,編譯工程昵仅;點(diǎn)擊“Download”,下載程序至開發(fā)板;打開QCOM串口調(diào)試助手摔笤,根據(jù)對(duì)應(yīng)的串口够滑,選擇對(duì)應(yīng)的串口號(hào),配置相應(yīng)信息吕世,按下“MCU_RST”彰触,開發(fā)板運(yùn)行程序;
此時(shí)在QCOM上可以看到任務(wù)打印的信息命辖。
步驟2 移植NB入網(wǎng)代碼况毅,通過NB模組將數(shù)據(jù)上報(bào)至平臺(tái)
登錄OceanConnect平臺(tái),參照實(shí)驗(yàn)三的方式注冊設(shè)備(設(shè)備名稱自定義尔艇,設(shè)備驗(yàn)證碼為NB模組的IMEI號(hào))尔许;打開Keil,在Keil中右擊“IoT-Demo”選擇“Manage Project Items…”终娃;
在“Project Items”標(biāo)簽下的“Application/User”中添加“IoT-Demo-LiteOS\targets\Src”目錄下的“at_hal.c”文件(注:“at_hal.c”文件包含用于連接LiteOS與HAL函數(shù)庫控制外設(shè)的代碼)味廊;在“Project Items”標(biāo)簽下的“Groups”中添加“at_device”,并在該group下添加基于LiteOS的NB模組代碼棠耕;添加“IoT-Demo-LiteOS\components\net\at_device\nb_bc95”目錄下的“bc95.c”文件余佛;在“Project Items”標(biāo)簽下的“Groups”中添加“at_framework”,并在該group下添加LiteOS AT框架實(shí)現(xiàn)的代碼昧辽;添加“IoT-Demo-LiteOS\components\net\at_frame”目錄下的全部.c文件衙熔;
在“Project Items”標(biāo)簽下的“Groups”中添加“nb-iot_api”,并在該group下添加基于LiteOS的NB-IoT API的代碼搅荞;添加“IoT-Demo-LiteOS\components\connectivity\nb_iot”目錄下的“l(fā)os_nb_api.c”文件红氯;完成NB模組與AT框架相關(guān)代碼添加,點(diǎn)擊“OK”;添加完成后咕痛,Keil的Project導(dǎo)航欄出現(xiàn)相應(yīng)文件痢甘;在“Option for Target 'IoT-Dome' ”界面下選擇“C/C++”,在“Define”中添加全局宏定義標(biāo)識(shí)符:“WITH_AT_FRAMEWORK”茉贡,“USE_NB_NEUL95”塞栅;在“Include Paths”欄添加相應(yīng)文件的頭文件路徑;
頭文件路徑分別為:
“IoT-Demo-LiteOS\components\connectivity\lwm2m\core\er-coap-13”
“IoT-Demo-LiteOS\components\net\at_device\nb_bc95”
在“main.c”的/ *USER CODE BEGIN Includes */與/ *USER CODE END Includes */之間添加調(diào)用AT框架與BC95頭文件的代碼腔丧,并聲明BC95入網(wǎng)的全局變量放椰;在“main.h”的/ *USER CODE BEGIN Private defines */與/ *USER CODE END Private defines */之間添加“msg_sys_type bc95_net_data”定義的代碼;在“main.c”的/ *USER CODE BEGIN 0 */與/ *USER CODE END 0 */之間添加BC95模組入網(wǎng)連接平臺(tái)發(fā)送數(shù)據(jù)任務(wù)代碼愉粤;定義該任務(wù)名為“data_send_task”砾医,優(yōu)先級(jí)為1;通過該任務(wù)衣厘,MCU向BC95發(fā)送平臺(tái)ip及port信息和光敏傳感器數(shù)據(jù)并通過串口打印發(fā)送結(jié)果如蚜;打開“bc95.h”压恒,在該文件中修改AT_USART_PORT為2(本實(shí)驗(yàn)開發(fā)板MCU通過USART2向BC95模組發(fā)送數(shù)據(jù),不同開發(fā)板根據(jù)實(shí)際硬件情況配置)错邦;基于步驟1在“main.c”的/ *USER CODE BEGIN 2 */與/ *USER CODE END 2 */之間生成的代碼探赫,添加創(chuàng)建BC95模組入網(wǎng)連接平臺(tái)發(fā)送數(shù)據(jù)任務(wù)的代碼;點(diǎn)擊“Rebuild”撬呢,編譯工程伦吠;點(diǎn)擊“Download”,下載程序至開發(fā)板倾芝;打開QCOM串口調(diào)試助手讨勤,根據(jù)對(duì)應(yīng)的串口,選擇對(duì)應(yīng)的串口號(hào)晨另,配置相應(yīng)信息;通過跳線帽將開發(fā)板上的UART1的RX和TX與CH340的TX和RX連接谱姓,將開發(fā)板上的UART2的RX和TX與NB-IoT的TX和RX連接借尿;按下“MCU_RST”,開發(fā)板運(yùn)行程序屉来;
此時(shí)在QCOM上可以看到任務(wù)打印的信息路翻。登陸平臺(tái),可以查看到注冊的設(shè)備處于在線狀態(tài)茄靠,通過“歷史數(shù)據(jù)”可以查看到開發(fā)板上報(bào)的數(shù)據(jù)茂契;
步驟3 編寫命令響應(yīng)代碼,通過平臺(tái)下發(fā)命令開關(guān)光敏傳感器上的LED燈
MCU通過PA5口控制光敏傳感器上的LED燈慨绳;打開“gpio.c”掉冶,在GPIO初始化函數(shù)下添加PIN5的初始化代碼;
打開“main.h”脐雪,添加定義LED引腳的代碼厌小;打開“bc95.c”,在該.c文件中添加接收命令代碼战秋,根據(jù)命令執(zhí)行控制LED燈代碼及命令答復(fù)代碼璧亚;在“bc95.c”的“nb_cmd_match”回調(diào)函數(shù)中,將“nb_handle_data_ind(buf);”改為“nb_handle_data_coap(buf);”脂信;
在步驟2“main.c”中創(chuàng)建的“data_send_task”任務(wù)中添加命令回復(fù)代碼癣蟋;點(diǎn)擊“Rebuild”,編譯工程狰闪;點(diǎn)擊“Download”疯搅,下載程序至開發(fā)板;