實驗六:基于LiteOS實現(xiàn)端到端物聯(lián)試驗
步驟1 移殖光敏傳感器,通過傳感器采集光照亮度
在Keil環(huán)境中右擊IOT-Demo蜂大,選擇Manage Project Items...
在Project Items標簽下的Groups中添加Hardware健提,并在該group下添加光敏傳感器代碼
添加光敏傳感器代碼的頭文件路徑
在main.hUSER CODE BEGIN Incldes/與/USER CODE BEGIN Incldes/之間添加引用定義標準擴展整數(shù)類型的頭文件代碼
在main.h的/USER CODE BEFIN defines/與/USER CODE BEFIN defines/之間添加全局變量msg_for_BH1750與BH1750_send定義的代碼
在main.c的USER CODE BEGIN Incldes/與USER CODE BEGIN Incldes/之間添加引用光敏傳感器頭文件的代碼BH1750數(shù)據(jù)的全局變量,并添加光敏傳感器數(shù)據(jù)上報是攜帶的messageld的代碼
在main.c的/*USER CODE BEGIN /與/USER CODE BEGIN */之間添加光敏傳感器任務代碼侧到;定義光敏傳感器任務名為LightSensor_task勃教,優(yōu)先級為;通過改任務匠抗,對光敏傳感器進行初始化故源,并打印任務信息與光敏傳感器數(shù)據(jù)
在main.c的/USER CODE BEGIN 2/與/USER CODE BEGIN 2/之間生成的代碼,添加創(chuàng)建光敏傳感器任務的代碼汞贸,并注釋task1與task的代碼
點擊Rebuild绳军,編譯工程
點擊Download,下載程序至開發(fā)板
打開QCOM串口調(diào)試助手矢腻,根據(jù)對應的串口删铃,選擇相應的串口號,配置相應信息踏堡,按下MCU_RST猎唁,開發(fā)板運行程序
步驟2 移植NB入網(wǎng)代碼,通過NB模組將數(shù)據(jù)上報至平臺
登陸OceanConnect平臺顷蟆,參照實驗三的方式注冊設(shè)備
打開Keil诫隅,在Keil中右擊Lot-Demo選擇Manage Project Items...
在Project Items標簽下的Application/User中添加Iot-Demo-LiteOS/targets/Src目錄下的at_hal.c文件
在Projects Items標簽下的Groups中添加at_device,并在該group下添加基于LitesOS的NB模組代碼帐偎,添加Iot-Demo-LiteOS\components\net\at_device\bc95目錄下的bc95.c文件
在Project Items標簽下Groups中添加at_framework逐纬,并在該group下添加LitsOS AT框架實現(xiàn)的代碼,添加Iot-Demo-LiteOS\components\net\at_frame目錄下的全部.c文件
在Project Items標簽下Groups中添加nb-iot-api削樊,并在該group下添加基于LitsOS的NB-IOT API的代碼豁生,添加Iot-Demo-LiteOS\components\connectivity\nb_iot目錄下的ios_nb_api.c文件
完成NB模組與AT框架相關(guān)代碼的添加,點擊OK
添加完成后漫贞,在Keil的Project導航欄會出現(xiàn)相應文件
在Option for Target‘Iot-Demo’界面下選擇C/C++甸箱,在Define中添加全局宏定義標識符:WITH_AT_FRAMEWORK,USE_NB_NEUL95
在Incude Paths欄添加相應文件的頭文件路徑
頭文件路徑分別為:
Iot-Demo-LiteOS\components\connectivity\lwm2m\core\er-coap-13
Iot-Demo-LiteOS\components\net\at_device\nb_bc95
在main.c的/USER CODE BEGIN Include/與/USER CODE BEGIN Include/之間添加調(diào)用AT框架與BC95頭文件的代碼,并聲明BC95入網(wǎng)的全局變量
在main.h的/USER CODE BEGIN Private defines/與/USER CODE BEGIN Private defines/之間添加msg_sys_type_net_data定義的代碼
在main.c的/USER CODE BEGIN 0/與/USER CODE BEGIN 0/之間添加BC95模組入網(wǎng)連接平臺發(fā)送數(shù)據(jù)任務代碼迅脐,定義該任務為data_send_task芍殖,優(yōu)先級為1,通過該任務谴蔑,MCU向BC95發(fā)送ip及port信息和光敏傳感器數(shù)據(jù)并通過串口打印發(fā)送結(jié)果
打開bc95.h豌骏,在該文件中修改AT_USART_PORT為2
在main.c的/USER CODE BEGIN 2/與/USER CODE BEGIN 2/之間生成代碼龟梦,添加創(chuàng)建BC95模組入網(wǎng)連接平臺發(fā)送數(shù)據(jù)任務的代碼
點擊Rebuild,編譯工程
點擊Download窃躲,下載程序至開發(fā)板
打開QCOM串口調(diào)試助手计贰,根據(jù)對應的串口號,配置對應信息蒂窒,通過跳線帽將開發(fā)板的UART1的RX和TX與CH340的TX和RX連接躁倒,將開發(fā)板上的UART2的RX和TX與NB-IOT的TX和RX連接,點擊MCU_RST,開發(fā)板運行程序刘绣。此時在QCOM上可以看到打印任務的信息
登陸平臺,可以查看到注冊的設(shè)備處于已綁定狀態(tài)挣输,通過歷史數(shù)據(jù)可以查看到開發(fā)板上報的數(shù)據(jù)
Ocean Connect平臺位于平臺層纬凤,對于一個物聯(lián)網(wǎng)業(yè)務來說,需要一個終端接入解耦撩嚼、平臺與應用分離停士、安全可靠的平臺作為支撐,而Ocean Connect平臺具有終端接入完丽,安全驗證恋技,業(yè)務編排,數(shù)據(jù)管理逻族,多協(xié)議通信的功能蜻底,實現(xiàn)連接平臺和能力開放,完成與運營商管理和平臺對接聘鳞。同時平臺自身具有兩大特點:1.業(yè)務使能2.設(shè)備管理薄辅,導致我們更加輕松的使用和控制這些設(shè)備。
NB-IoT網(wǎng)絡屬于網(wǎng)絡層抠璃,多種接入方式以及多協(xié)議的接入以及iot接入站楚,使得各種不同的設(shè)備都可以同過網(wǎng)絡層和平臺層實現(xiàn)相互通信。
Ocean Connect提供標準的iot agent搏嗡,能夠快速適配os和各類廠商的智能終端窿春。
光敏傳感器屬于感知層,通過感知所需要的情況及時收集信息通過網(wǎng)絡層上傳到平臺層采盒。
本實驗未涉及到應用層所以不闡述旧乞。
每層體系結(jié)構(gòu)中我們要做的事情
1.平臺層
完成實驗一中所有Profile的設(shè)計,同時完成編解碼插件的開發(fā)磅氨,同時設(shè)定地質(zhì)域良蛮。為了區(qū)別多個消息,每個消息必須有地質(zhì)域悍赢。地質(zhì)域為表示此消息的唯一字段决瞳。其原因是為了識別各個字段货徙,同時保證每個消息的正確性,提高效率皮胡。此次實驗我們接受的是一串二進制碼流痴颊,通過平臺的編解碼插件開發(fā)實現(xiàn),以及Profile的設(shè)計屡贺,以及每個消息有唯一的地址域蠢棱,導致二進制碼流轉(zhuǎn)化為我們所需的信息。
設(shè)備層
我們需要通過keil5軟件完成相應的設(shè)置甩栈,讓設(shè)備可以與平臺互通泻仙。
再在keil5上編譯相應的程序點擊騷寫
通過以上代碼實現(xiàn)網(wǎng)絡層與平臺層相互傳輸。