步骤一 移植光敏传感器代码,通过传感器采集光照亮度
-
在keil环境中右击“IOT-Domo”选择“Manage Project Items...”;
- 在“Project Items”标签下的“Groups”中添加“Hardware”,并在该group下添加光敏传感器代码:
添加“Iot-Demo-LiteOS\targets\Hareware\BH1750.c”目录下的“BH1750.c”文件,点击"OK";
参照实验五步骤1的方式,添加光敏传感器代码的头文件路径(“Iot-Demo-LiteOS\targets\Hareware\BH1750“)
3.在"main.h"/USER CODE BEGIN Includes/与/USER CODE END Includes/
之间添加引用定义标准扩展整数类型的头文件代码;
4.在"main.h"/USER CODE BEGIN Private defines/与/USER CODE END Private defines/
之间添加全局变量”msg_for_BH1750“与”BH1750_send“定义的代码;
5.在"main.c"/USER CODE BEGIN Includes/与/USER CODE END Includes/
之间添加引用光敏传感器头文件的代码与BH1750数据的全局变量,并根据1.2.1章节步骤三中设计的数据码流,添加光敏传感器数据上报携带messageld的代码;
6.在"main.c"/USER CODE BEGIN 0/与/USER CODE END 0/
之间添加光敏传感器任务代码,定义光敏传感器任务名为”LIghtSensor_task“
,优先级为0;通过该任务,对光敏传感器进行初始化,并打印任务信息与光敏传感器数据;
7.基于步骤3在"main.c"/USER CODE BEGIN 2/与/USER CODE END 2/
之间生成的代码,添加创建光敏传感器的代码,并注释创建task1与task2的代码;
8.点击”Rebuild“,编译工程;
9.点击”Download“,下载至开发板;
打开QCOM串口调试助手,根据对应的串口,选择对应的串口,选择对应的串口号,配置相应信息,按下”MCU_RST“,开发板运行程序;
此时在QCOM上可以看到任务打印的信息。
步骤二 移植NB入网代码,通过NB模组将数据上报至平台
1.登录OceanConnect平台,参照实验三的方式注册设备
2.打开keil,在keil中右击“Iot-Demo”选择"Manage Project Items...";
在“Project Items”标签下的“Application/User”中添加"IoT- Demo LiteOS\targets\Src目录下的"at. _hal.c"文件(注: "at hal.c" 文件包含用于连接LiteOS与HAL函数库控制外设的代码);
3.在"Project ltems标签下的"Groups"中添加"at _device" ,并在该group下添加基于LiteOS的NB模组代码;添加"T-Dem-litesicomponentsinetat devicenb. bc95” 目录下的"bc95 c"文件;
4.在”Project ltems"标签下的"Groups"中添加"at framework" ,并在该group下添加LiteOS AT框架实现的代码;添加"IoT-Demo-LiteOS\components\netlat. frame”" 目录下的全部.c文件;
5.在Project Items"标签下的"Groups"中添加"nb-iot_ api" ,并在该group下添加基于LiteOS 的NB-IoT API的代码:添加”loT-Demo-LiteOS\componentslconnectivitynb iot" 目录下的"los_ nb api.c"文件;
6.完成NB模组与AT框架相关代码添加,点击"OK" ;
7.添加完成后,Keil 的Project导航栏出现相应文件;
8.在"Option for Target 'loT-Demo'”界面下选择”C/C++”,在"Define" 中添加全局宏定义标识符: "WITH_ AT_ FRAMEWORK", "USE_ NB_ _NEUL95";
9.在"Include Paths"栏添加相应文件的头文件路径;头文件路径分别为:
"IoT-Demo-LiteOS\components\connectivitylwm2m\coreler-coap-13"
"IoT-Demo-LiteOS\components\net\at device\nb_ _bc95"
10.在"main.c"的/* USER CODE BEGIN Includes /与/ USER CODE END Includes */之间添加调用AT框架与BC95头文件的代码,并声明BC95入网的全局变量:
11.在main.h"的/* USER CODE BEGIN Private defines /与/ USER CODE END Private defines之间法加”msg. sys_ type bc95_ net data' '定义的代码;
12.在"main.C"的/* USER CODE BEGIN 0 */与/ USER CODE END 0 */之间添加BC95模组入网连接平台发送数据任务代码:定义该任务名为"ata send task",优先级为1:通过该任务,MCU问BC95发送平台ip及port信息和光敏传感器数据并通过串口打印发送结果:
13.打:"bc95.h",在该文件中修改AT LUSART PORT 为2 (本实验开发板MCU通过USART2向BC95模组发送数据,不同开发板根据实际硬件情况配置):
14.基于步骤1在”main.c"的/* USER CODE BEGIN2 /与/* USER CODE END2 */之间生成的代码,添加创建BC95模组入网连接平台发送数据任务的代码:
15.点击”Rebuild",编译工程:
16.点击"Download",下载程序至开发板:
17.打开QCOM串口调试助手,根据对应的串口,选择对应的串口号,配置相应信息;通过踩线帽将开发板上的UART1的RX和TX与CH340的TX和RX连接,将开发板上的UART2的RX和TX与NB-I0T的TX和RX连接;按下"MCU_ RST", 开发板运行程序;此时在QCOM上可以看到任务打印的信息。
18.登陆平台,可以查看到注册的设备处于已绑定状态,通过”历史数据”可以查看到开发板上报的数据;
步骤三 编写命令响应代码,通过平台下发命令开关光敏传感器上的LED灯
1.MCU通过PA5口控制光敏传感器上的LED灯:打开"gpioc". 在GPIO初始化函数下添加PIN5的初始化代码:
2.打开“添加定义LED引脚的代码”,
3.打开“bc95.c”,在该.c文件中添加接收命令代码,根据命令执行控制LED灯代码及命令答复代码:
4.在"bc95.c"的"nb_ cmd match' 回凋函数中,将‘nb_ handle_data_ind(buf);" 改カ" nb_ handle data_coap(buf);" ;
5.在步骤2”main.c"中创建的" data_ send_ task" 任务中添加命令回复代码;
6..点击”Rebuild",编译工程:
7.点击"Download",下载程序至开发板:
8.登录平台,在”我的设备“中进行命令下发;
9.选择"value"为"ON",即下发开灯命令,点击“缓存发送”;
10.点击"我的设备"中的”历史命令”,可以看到命令已下发并执行,此时光敏传感器上的LED灯点亮;
11.同样,选择"value"为“OFF", 即下发关灯命令,点击缓存发送";在“历史命令”中,可以看到命令已下发并执行,此时光敏传感器上的LED灯熄灭。