2019-11-21

实验六:基于LiteOS实现端到端物联试验

步骤1 移殖光敏传感器,通过传感器采集光照亮度

在Keil环境中右击IOT-Demo,选择Manage Project Items...
在Project Items标签下的Groups中添加Hardware,并在该group下添加光敏传感器代码


2019-11-21_第1张图片
2.png

添加光敏传感器代码的头文件路径


2019-11-21_第2张图片
3.png

在main.hUSER CODE BEGIN Incldes/与/USER CODE BEGIN Incldes/之间添加引用定义标准扩展整数类型的头文件代码

2019-11-21_第3张图片
4.png

在main.h的/USER CODE BEFIN defines/与/USER CODE BEFIN defines/之间添加全局变量msg_for_BH1750与BH1750_send定义的代码

2019-11-21_第4张图片
5.png

在main.c的USER CODE BEGIN Incldes/与USER CODE BEGIN Incldes/之间添加引用光敏传感器头文件的代码BH1750数据的全局变量,并添加光敏传感器数据上报是携带的messageld的代码

2019-11-21_第5张图片
6.png

在main.c的/*USER CODE BEGIN /与/USER CODE BEGIN */之间添加光敏传感器任务代码;定义光敏传感器任务名为LightSensor_task,优先级为;通过改任务,对光敏传感器进行初始化,并打印任务信息与光敏传感器数据

2019-11-21_第6张图片
7.png

在main.c的/USER CODE BEGIN 2/与/USER CODE BEGIN 2/之间生成的代码,添加创建光敏传感器任务的代码,并注释task1与task的代码

2019-11-21_第7张图片
8.png

点击Rebuild,编译工程


2019-11-21_第8张图片
9.png

点击Download,下载程序至开发板


2019-11-21_第9张图片
![11.png](https://upload-images.jianshu.io/upload_images/17058417-b8d2b2404762ef80.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

打开QCOM串口调试助手,根据对应的串口,选择相应的串口号,配置相应信息,按下MCU_RST,开发板运行程序

2019-11-21_第10张图片
11.png

步骤2 移植NB入网代码,通过NB模组将数据上报至平台

登陆OceanConnect平台,参照实验三的方式注册设备
打开Keil,在Keil中右击Lot-Demo选择Manage Project Items...
在Project Items标签下的Application/User中添加Iot-Demo-LiteOS/targets/Src目录下的at_hal.c文件


2019-11-21_第11张图片
12.png

在Projects Items标签下的Groups中添加at_device,并在该group下添加基于LitesOS的NB模组代码,添加Iot-Demo-LiteOS\components\net\at_device\bc95目录下的bc95.c文件


2019-11-21_第12张图片
13.png

在Project Items标签下Groups中添加at_framework,并在该group下添加LitsOS AT框架实现的代码,添加Iot-Demo-LiteOS\components\net\at_frame目录下的全部.c文件


2019-11-21_第13张图片
14.png

在Project Items标签下Groups中添加nb-iot-api,并在该group下添加基于LitsOS的NB-IOT API的代码,添加Iot-Demo-LiteOS\components\connectivity\nb_iot目录下的ios_nb_api.c文件


2019-11-21_第14张图片
15.png

完成NB模组与AT框架相关代码的添加,点击OK


2019-11-21_第15张图片
16.png

添加完成后,在Keil的Project导航栏会出现相应文件


2019-11-21_第16张图片
17.png

在Option for Target‘Iot-Demo’界面下选择C/C++,在Define中添加全局宏定义标识符:WITH_AT_FRAMEWORK,USE_NB_NEUL95


2019-11-21_第17张图片
18.png
2019-11-21_第18张图片
19.png

在Incude Paths栏添加相应文件的头文件路径
头文件路径分别为:
Iot-Demo-LiteOS\components\connectivity\lwm2m\core\er-coap-13
Iot-Demo-LiteOS\components\net\at_device\nb_bc95


2019-11-21_第19张图片
20.png
2019-11-21_第20张图片
21.png

在main.c的/USER CODE BEGIN Include/与/USER CODE BEGIN Include/之间添加调用AT框架与BC95头文件的代码,并声明BC95入网的全局变量

2019-11-21_第21张图片
22.png

在main.h的/USER CODE BEGIN Private defines/与/USER CODE BEGIN Private defines/之间添加msg_sys_type_net_data定义的代码

2019-11-21_第22张图片
23.png

在main.c的/USER CODE BEGIN 0/与/USER CODE BEGIN 0/之间添加BC95模组入网连接平台发送数据任务代码,定义该任务为data_send_task,优先级为1,通过该任务,MCU向BC95发送ip及port信息和光敏传感器数据并通过串口打印发送结果

2019-11-21_第23张图片
24.png

打开bc95.h,在该文件中修改AT_USART_PORT为2


2019-11-21_第24张图片
25.png
2019-11-21_第25张图片
26.png

在main.c的/USER CODE BEGIN 2/与/USER CODE BEGIN 2/之间生成代码,添加创建BC95模组入网连接平台发送数据任务的代码

2019-11-21_第26张图片
27.png

点击Rebuild,编译工程


2019-11-21_第27张图片
28.png

点击Download,下载程序至开发板


2019-11-21_第28张图片
29.png

打开QCOM串口调试助手,根据对应的串口号,配置对应信息,通过跳线帽将开发板的UART1的RX和TX与CH340的TX和RX连接,将开发板上的UART2的RX和TX与NB-IOT的TX和RX连接,点击MCU_RST,开发板运行程序。此时在QCOM上可以看到打印任务的信息


2019-11-21_第29张图片
30.png

登陆平台,可以查看到注册的设备处于已绑定状态,通过历史数据可以查看到开发板上报的数据


2019-11-21_第30张图片
990.5.png
2019-11-21_第31张图片
991.png

步骤3 编写命令相应代码,通过平台下发命令开关光敏传感器上的LED灯

打开gpio.c,在GPIO初始化函数下添加PIN5的初始化代码


2019-11-21_第32张图片
31.png

打开main.h,添加定义LED引脚的代码


2019-11-21_第33张图片
32.png

打开bc95.c,在该文件中添加接收命令代码,根据命令执行控制LED灯代码及命令答复代码


2019-11-21_第34张图片
33.png

在bc95.c的nb_cmd_match回调函数中,将nb_hdndle_data_ind(buf)改为nb_handle_data_coap(buf);


2019-11-21_第35张图片
34.png

在main.c中创建的data_send_tsak任务中添加命令回复代码


2019-11-21_第36张图片
35.png

点击Rebuild,编译工程


2019-11-21_第37张图片
36.png

点击Download,下载程序至开发板


2019-11-21_第38张图片
37.png

登陆平台,在我的设备中进行命令下发

点击我的设备中的历史命令,可以看到命令已下发并执行,此时光敏传感器上的LED灯点亮

同样,选择value为OFF,即下发关灯命令,点击缓存发送;在历史命令中,可以看到命令已下发并执行,此时光敏传感器上的LED灯熄灭

实验原理

2019-11-21_第39张图片
23.jpg

OceanConnect平台属于平台层,EVB_M1开发板,BH1750光敏传感器属于感知层,NB-IOT属于网络层
其中平台层的作用就是物联网业务需要一个终端接入解耦,平台与应用分离、安全可靠的平台作为支撑。IOT联接管理平台具有终端接入、安全验证,业务编排、数据管理、多协议通信的功能,实现连接管理和能力开放,完成与运营商管道和平台对接。在这个实验中,就是基于实验一在平台层profile的定义,编解码的插件开发和地址域的设置,完成相应的条件配置,实现平台层与设备层的相互通信。
感知层提供标准的协议,能够快速适配OS和各类厂商的智能终端,通过使用keil5对程序的代码进行相应修改设置,完成设备层与平台层之间的相互通信。
网络层通过使用多种连接方式和多协议的通信方式还有NB-IOT的IOT这个接入口来上传数据给平台层,同时通过平台下发命令,来控制设备层的设备。

你可能感兴趣的:(2019-11-21)