【IoT最佳实践】基于小熊派开发板的物联网实战开发(六)-智慧烟感传感器开发

举报
我是卤蛋 发表于 2020/03/17 10:02:01 2020/03/17
【摘要】 基于小熊派开发板的裸机工程和智慧烟感拓展板,开发智慧烟感报警功能。

上一期:基于小熊派开发板的物联网实战开发(五)-开发数据上报与命令下发功能

请先完成前几期的实验再来操作本期实验。


将烟雾扩展板用杜邦线接到小熊派开发板上,如图所示:

备注:1号线连接13号口,2号线连接12号口,3号线连接11号口,4号线连接20号口,5号线连接5号口;

打开“config.mk”文件,修改通信方式“NETWORK_TYPE”为NB-IoT通信方式“NB_NEUL95_NO_ATINY”,点击“保存”;

打开“stm32l4xx_hal_conf.h”文件,打开“HAL_ADC_MODULE_ENABLED”和“HAL_TIM_MODULE_ENABLED”的宏定义的注释;

在“Makefile”文件中,添加移植智慧烟感传感器E53_SF1的代码;

$(TOP_DIR)/targets/STM32L431_BearPi/Hardware/E53_SF1/E53_SF1.c \

在“Makefile”文件中,添加移植智慧烟感传感器头文件的代码,点击“保存”;

-I $(TOP_DIR)/targets/STM32L431_BearPi/Hardware/E53_SF1 \

打开“sys_init.h”,在“sys_init.h”文件中,添加引用智慧烟感驱动的头文件,点击“保存”;

#include "E53_SF1.h"

在“main.c”文件中,添加烟感传感器读取数据的变量定义,点击“保存”;

E53_SF1_Data_TypeDef E53_SF1_Data;

在“nb_demo.c”文件中,添加智慧烟感驱动的头文件;

#include "E53_SF1.h"

在“nb_demo.c”文件中,添加烟感数据发送数组定义;

char E53_SF1_send[4]={0};

在“nb_demo.c”的数据收集任务中,添加初始化烟感传感器的代码;

Init_E53_SF1();

在“nb_demo.c”的数据收集任务中,添加读取烟感传感器数据的代码;

E53_SF1_Read_Data();

在“nb_demo.c”的数据收集任务中,添加打印烟感传感器数据的代码,并将读取到的数据复制到发送数据变量中;

printf("\r\n******************************Smoke Value is  %d\r\n", E53_SF1_Data.Smoke_Value);

        sprintf(E53_SF1_send,"%04X",E53_SF1_Data.Smoke_Value);

在“nb_demo.c”的数据上报任务中, 添加发送烟感数据上报的代码,点击“保存”;

msgid =8;

sprintf(s_report_buf,"%02d", msgid);

memcpy(s_report_buf + 2, &E53_SF1_send, sizeof(E53_SF1_send));

msglen = sizeof(E53_SF1_send); 

los_nb_report((const char*)(&s_report_buf), (msglen+2) / 2);//发送数据到平台

memset(s_report_buf, 0, sizeof(s_report_buf));

uwRet=LOS_TaskDelay(5000);

打开“nb_cmd_ioctl.c”文件,在“nb_cmd_ioctl.c”中添加智慧烟感传感器驱动头文件;

#include "E53_SF1.h"

在“nb_cmd_data_ioctl”函数中,添加处理蜂鸣报警器命令的代码;

if(tmpbuf[1] == '9')   //messageid for Smoke_Control_Beep

{

memcpy(recvmid,tmpbuf + 2, 4);

memset(recvbuf, 0, 30);

if (readlen > 0)

{  

HexStrToStr((const unsigned char *)tmpbuf + 6, (unsigned char *)recvbuf, (readlen - 3) * 2);

}

AT_LOG("cmd is:%s\n", recvbuf);

if(strcmp(recvbuf, "ON") == 0) 

{

E53SF1_Beep(ON); 


char* respmsgid = "0a"; //messageid for Smoke_Control_Beep reply

memcpy(s_resp_buf, respmsgid, 2);

memcpy(s_resp_buf + 2, recvmid, 4);

char* reply = "0001";

memcpy(s_resp_buf + 6, reply, 4);

LOS_SemPost(reply_sem);

}

if (strcmp(recvbuf, "OFF") == 0) 

{

        E53SF1_Beep(OFF); 


char* respmsgid = "0a";//messageid for Smoke_Control_Beep reply

memcpy(s_resp_buf, respmsgid, 2);

memcpy(s_resp_buf + 2, recvmid, 4);

char* reply = "0000";

memcpy(s_resp_buf + 6, reply, 4);

LOS_SemPost(reply_sem);

}

}

点击“保存”,点击“编译”,等待提示“编译成功”;

点击“烧录”,等待提示“烧录成功”; 

在IoT平台上,设备的“历史数据”中,可以看到实时上报的数据;

打开IoT平台,下发“Smoke”服务的两个命令“Smoke_Control_Beep”,执行成功。

打开设备的“历史命令”,可以看到命令“执行成功”;

下发“Smoke_Control_Beep”命令为“ON”时,可以看到智慧烟感扩展板的蜂鸣器响。

最后,让我们宣传一下:

3月27-28日,华为物联网平台在华为开发者大会静候您的光临。

华为开发者大会2020(Cloud)是华为面向ICT(信息与通信)领域全球开发者的年度顶级旗舰活动。大会旨在搭建一个全球性的交流和实践平台,开放华为30年积累的ICT技术和能力,以“鲲鹏+昇腾”硬核双引擎,为开发者提供澎湃动力,改变世界,变不可能为可能。

我们期待与你共创计算新时代

在一起,梦飞扬!

1583829665894051.jpg

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。