应用背景
无论是在家里还是在公司,安防都尤为的重要,与其亡羊补牢,更重要的是防患于未然。安全是目的,防范是手段。通过防范的手段达到或实现安全的目的,就是安全防范的基本内涵。
本项目就是基于安防的大背景设计的一款智能安防系统,目前提供的功能有红外检测,有毒气体及烟雾检测,后续还会对项目功能有所完善。
实现功能
红外检测
红外检测使用的是HC-SR501模块,传感器在检测到红外信号后,会触发高电平,将高电平信号送入蜂鸣器(本项目使用的是有源高电平触发蜂鸣器),进行报警,当红外信号消失后,会返回低电平,将低电平信号送入蜂鸣器,停止报警。有毒气体及烟雾检测
有毒气体及烟雾检测使用的是MQ-2模块(大家如果想实现别的功能检测还可以使用MQ系列的其他模块),在检测到有毒气体或烟雾时,输出的模拟量会变大,根据不同的使用环境,我们可以通过调整代码实现在一定范围内触发蜂鸣器报警。系统框架

RT-Thread使用情况
基于官方文档的试例Demo开发,使用了FSP。
模块介绍
HC-SR501
产品特点
HC-SR501是基于红外线技术的自动控制模块,采用LHI778探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。实物图片

电气参数

MQ-2
产品特点
MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。MQ-2气体传感器对丙烷、烟雾的灵敏度高,对天然气和其它可燃蒸气的检测也很理想。这种传感器可检测多种可燃性气体,是一款适合多种应用的低成本传感器。
实物图片

电气参数


视频演示效果
https://www.bilibili.com/video/BV16T411G7PF?share_source=copy_web
代码地址
https://gitee.com/tom-onemore/intelligent_security_system
项目过程
1. 开发环境搭建
首先请参考官方教程搭建好环境:环境搭建
2. 新建RT-Thread标准项目
首先,我们打开RT-Thread Studio,文件—新建—RT-Thread 项目。

接着,在弹出的框中我们依次选择基于开发板,起项目名称(自拟),其余保持默认(最好也检查一下),点击完成。

等待进度条走完,项目创建成功,在Studio左侧的项目资源管理器中可以找到我们新建的项目。打开项目文件夹,在src文件夹中新建一个.c文件。

文件名自拟,点击完成。

输入以下代码,点击保存。
-
/* -
* Copyright (c) 2006-2021, RT-Thread Development Team -
* -
* SPDX-License-Identifier: Apache-2.0 -
* -
* Change Logs: -
* Date Author Notes -
* 2022-06-21 Tom_onemore the first version -
*/ -
#include -
#include -
#include"hal_data.h" -
-
#define ADC_DEV_CHANNEL_1 0/* ADC 通道 HC-SR501 */ -
#define ADC_DEV_CHANNEL_2 1/* ADC 通道 MQ-2 */ -
#define BUZZER BSP_IO_PORT_06_PIN_11 /* 蜂鸣器I/O引脚 */ -
-
staticint adc_vol_sample(int argc,char*argv[]) -
{ -
rt_adc_device_t adc_dev; -
rt_uint32_t value1, vol1, value2, vol2; -
rt_err_t ret1 = RT_EOK; -
rt_err_t ret2 = RT_EOK; -
-
/* 查找设备 */ -
adc_dev =(rt_adc_device_t)rt_device_find(ADC_DEV_NAME); -
if(adc_dev == RT_NULL) -
{ -
rt_kprintf("adc sample run failed! can't find %s device! ", ADC_DEV_NAME); -
return RT_ERROR; -
} -
-
/* 初始化蜂鸣器引脚为低电平 */ -
rt_pin_write(BUZZER, PIN_LOW); -
-
while(1) -
{ -
/* 使能设备 */ -
ret1 = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL_1); -
ret2 = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL_2); -
/* 读取采样值 */ -
value1 = rt_adc_read(adc_dev, ADC_DEV_CHANNEL_1); -
value2 = rt_adc_read(adc_dev, ADC_DEV_CHANNEL_2); -
rt_kprintf("the value1 is :%d the value2 is :%d ", value1,value2); -
-
/* 转换为对应电压值,3.3V对应12位最大值4096,数据精度乘以100保留2位小数 */ -
vol1 = value1 *330/4096; -
vol2 = value2 *330/4096; -
rt_kprintf("the voltage1 is :%d.%02d the voltage2 is :%d.%02d ", vol1 /100, vol1 %100, vol2 /100, vol2 %100); -
if(vol1 >3.3|| vol2 >13) -
{ -
rt_pin_write(BUZZER, PIN_HIGH);/*打开蜂鸣器*/ -
} -
else -
{ -
rt_pin_write(BUZZER, PIN_LOW);/*关闭蜂鸣器*/ -
} -
} -
-
/* 关闭通道 */ -
ret1 = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL_1); -
ret2 = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL_2); -
return ret1; -
return ret2; -
} -
/* 导出到 msh 命令列表中 */ -
MSH_CMD_EXPORT(adc_vol_sample, adc voltage convert sample);
接着我们打开FSP,会跳出一个弹窗提示,点击“是”,然后选择FSP的安装文件夹,点击“选择文件夹”,等待进入FSP即可。


下图为FSP界面。




然后点击Module g_adc0 ADC(r_adc)—Input—Channel Scan Mask(channel availability varies by MCU),将Channel 0和Channel 1打√,然后保存,点击右上角Generate Project Content,关闭FSP。

接着我们回到Studio中,在新建的项目下,进入RT-Thread Settings,找到组件和服务层,鼠标放到Pins上,会弹出候选框,选择配置项。然后选择硬件,点击芯片设备驱动,打开Enable ADC,接着打开Enable ADC0,保存。

回到我们刚刚新建的.c文件,点击编译,控制台显示0 errors, 0 warnings,到这里我们的代码部分完成,将程序下载到开发板,可以正常工作,具体代码和演示请参考上文的代码和视频地址。
3. 接线方式

参考资料
-
ADC设备
-
CPK-RA6M4介绍:
-
CPK-RA6M4用户手册
-
CPK-RA6M4原理图
-
RT-Thread BSP
-
RT-Thread 官网
-
瑞萨电子官网
致谢
感谢主办方及一切帮助过我的人。
END
审核编辑 :李倩
-
蜂鸣器
+关注
关注
12文章
900浏览量
47847 -
安防系统
+关注
关注
2文章
258浏览量
34472
原文标题:基于RT-Thread+RA6M4的智能安防系统
文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
基于安防的大背景设计的一款智能安防系统
评论