基于RT-Thread+RA6M4的智能安防系统

应用背景

  无论是在家里还是在公司,安防都尤为的重要,与其亡羊补牢,更重要的是防患于未然。安全是目的,防范是手段。通过防范的手段达到或实现安全的目的,就是安全防范的基本内涵。
  本项目就是基于安防的大背景设计的一款智能安防系统,目前提供的功能有红外检测,有毒气体及烟雾检测,后续还会对项目功能有所完善。

实现功能

红外检测

  红外检测使用的是HC-SR501模块,传感器在检测到红外信号后,会触发高电平,将高电平信号送入蜂鸣器(本项目使用的是有源高电平触发蜂鸣器),进行报警,当红外信号消失后,会返回低电平,将低电平信号送入蜂鸣器,停止报警。

有毒气体及烟雾检测

  有毒气体及烟雾检测使用的是MQ-2模块(大家如果想实现别的功能检测还可以使用MQ系列的其他模块),在检测到有毒气体或烟雾时,输出的模拟量会变大,根据不同的使用环境,我们可以通过调整代码实现在一定范围内触发蜂鸣器报警。

系统框架

系统框架

RT-Thread使用情况

  基于官方文档的试例Demo开发,使用了FSP。

模块介绍

HC-SR501

产品特点

  HC-SR501是基于红外线技术的自动控制模块,采用LHI778探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。

实物图片

HC-SR501

电气参数

电气参数(HC-SR501)

MQ-2

产品特点

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

实物图片

MQ-2

电气参数

电气参数(MQ-2)

所需软硬件

软件

  RT-Thread Studio,FSP。

硬件

  CPK-RA6M4开发板,USB转串口工具,HC-SR501,MQ-2,蜂鸣器,USB数据线,杜邦线若干。

作品完整图片

作品完整图片

视频演示效果

基于RT-Thread+RA6M4的智能安防系统

代码地址

Intelligent_security_system

项目过程

1. 开发环境搭建

  首先请参考官方教程搭建好环境:环境搭建

2. 新建RT-Thread标准项目

  首先,我们打开RT-Thread Studio,文件—新建—RT-Thread 项目。

1

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

2

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

3

  文件名自拟,点击完成。

4

  输入以下代码,点击保存。

/*
 * 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 <rtthread.h>
#include <rtdevice.h>
#include "hal_data.h"

#define ADC_DEV_NAME        "adc0"                      /* ADC 设备名称 */
#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引脚 */

static int 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!\n", 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 \n", 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\n", 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即可。

5

6

  下图为FSP界面。

7

  选择Pins,在Pin Selection中依次点击Peripherals—Analog:ADC—ADC0,然后再Pin Configuration中将P002~P005上锁。

8

  接着选择Stacks,在右上角点击New Stack—Analog—ADC(a_adc)。

9

  在左下角Settings中,点击Common—Parameter Checking,将Value改为Enabled。

10

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

11

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

在这里插入图片描述

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

3. 接线方式

RA6M4USB转串口
P613TXD
P614RXD
RA6M4HC-SR501
P000OUT
VCCVCC
GNDGND
RA6M4MQ-2
P001AO
VCCVCC
GNDGND
DO悬空
RA6M4蜂鸣器
P611I/O
VCCVCC
GNDGND

参考资料

  1. ADC设备
  2. CPK-RA6M4介绍
  3. CPK-RA6M4用户手册
  4. CPK-RA6M4原理图
  5. RT-Thread BSP
  6. RT-Thread 官网
  7. 瑞萨电子官网
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tom_onemore

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值