應用背景
無論是在家里還是在公司,安防都尤為的重要,與其亡羊補牢,更重要的是防患于未然。安全是目的,防范是手段。通過防范的手段達到或實現安全的目的,就是安全防范的基本內涵。
本項目就是基于安防的大背景設計的一款智能安防系統,目前提供的功能有紅外檢測,有毒氣體及煙霧檢測,后續還會對項目功能有所完善。
實現功能
紅外檢測
紅外檢測使用的是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. 接線方式
-
蜂鳴器
+關注
關注
12文章
892瀏覽量
45989 -
安防系統
+關注
關注
2文章
249瀏覽量
33285
原文標題:基于RT-Thread+RA6M4的智能安防系統
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論