應用背景
??無論是在家里還是在公司,安防都尤為的重要,與其亡羊補牢,更重要的是防患于未然。安全是目的,防范是手段。通過防范的手段達到或實現(xiàn)安全的目的,就是安全防范的基本內涵。
??本項目就是基于安防的大背景設計的一款智能安防系統(tǒng),目前提供的功能有紅外檢測,有毒氣體及煙霧檢測,后續(xù)還會對項目功能有所完善。
實現(xiàn)功能
紅外檢測
??紅外檢測使用的是HC-SR501模塊,傳感器在檢測到紅外信號后,會觸發(fā)高電平,將高電平信號送入蜂鳴器(本項目使用的是有源高電平觸發(fā)蜂鳴器),進行報警,當紅外信號消失后,會返回低電平,將低電平信號送入蜂鳴器,停止報警。
有毒氣體及煙霧檢測
??有毒氣體及煙霧檢測使用的是MQ-2模塊(大家如果想實現(xiàn)別的功能檢測還可以使用MQ系列的其他模塊),在檢測到有毒氣體或煙霧時,輸出的模擬量會變大,根據(jù)不同的使用環(huán)境,我們可以通過調整代碼實現(xiàn)在一定范圍內觸發(fā)蜂鳴器報警。
系統(tǒng)框架
RT-Thread使用情況
??基于官方文檔的試例Demo開發(fā),使用了FSP。
模塊介紹
HC-SR501
產品特點
??HC-SR501是基于紅外線技術的自動控制模塊,采用LHI778探頭設計,靈敏度高,可靠性強,超低電壓工作模式,廣泛應用于各類自動感應電器設備,尤其是干電池供電的自動控制產品。
實物圖片
電氣參數(shù)
MQ-2
產品特點
??MQ-2氣體傳感器所使用的氣敏材料是在清潔空氣中電導率較低的二氧化錫(SnO2)。當傳感器所處環(huán)境中存在可燃氣體時,傳感器的電導率隨空氣中可燃氣體濃度的增加而增大。使用簡單的電路即可將電導率的變化轉換為與該氣體濃度相對應的輸出信號。MQ-2氣體傳感器對丙烷、煙霧的靈敏度高,對天然氣和其它可燃蒸氣的檢測也很理想。這種傳感器可檢測多種可燃性氣體,是一款適合多種應用的低成本傳感器。
實物圖片
電氣參數(shù)
所需軟硬件
軟件
??RT-Thread Studio,F(xiàn)SP。
硬件
??CPK-RA6M4開發(fā)板,USB轉串口工具,HC-SR501,MQ-2,蜂鳴器,USB數(shù)據(jù)線,杜邦線若干。
作品完整圖片
視頻演示效果
??基于RT-Thread+RA6M4的智能安防系統(tǒng):https://www.bilibili.com/video/BV16T411G7PF?share_source=copy_web
代碼地址
??Intelligent_security_system:https://gitee.com/tom-onemore/intelligent_security_system
項目過程
1. 開發(fā)環(huán)境搭建
??首先請參考官方教程搭建好環(huán)境:https://mp.weixin.qq.com/s/phEV5jGjTOoe7Y0ihI6ftg
2. 新建RT-Thread標準項目
??首先,我們打開RT-Thread Studio,文件—新建—RT-Thread 項目。
??接著,在彈出的框中我們依次選擇基于開發(fā)板,起項目名稱(自擬),其余保持默認(最好也檢查一下),點擊完成。
??等待進度條走完,項目創(chuàng)建成功,在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_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,數(shù)據(jù)精度乘以100保留2位小數(shù) */
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即可。
??下圖為FSP界面。
??選擇Pins,在Pin Selection中依次點擊Peripherals—Analog:ADC—ADC0,然后再Pin Configuration中將P002~P005上鎖。
??接著選擇Stacks,在右上角點擊New Stack—Analog—ADC(a_adc)。
??在左下角Settings中,點擊Common—Parameter Checking,將Value改為Enabled。
??然后點擊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,到這里我們的代碼部分完成,將程序下載到開發(fā)板,可以正常工作,具體代碼和演示請參考上文的代碼和視頻地址。
3. 接線方式
RA6M4 |
USB轉串口 |
P613 |
TXD |
P614 |
RXD |
RA6M4 |
HC-SR501 |
P000 |
OUT |
VCC |
VCC |
GND |
GND |
RA6M4 |
MQ-2 |
P001 |
AO |
VCC |
VCC |
GND |
GND |
|
DO懸空 |
RA6M4 |
蜂鳴器 |
P611 |
I/O |
VCC |
VCC |
GND |
GND |
參考資料
1. ADC設備:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/adc/adc
2. CPK-RA6M4介紹:https://www2.renesas.cn/jp/zh/products/microcontrollers-microprocessors/ra-cortex-m-mcus/cpk-ra6m4-evaluation-board
3. CPK-RA6M4用戶手冊:https://www2.renesas.cn/cn/zh/document/mah/1527156?language=zh&r=1527191
4. CPK-RA6M4原理圖:https://oss-club.rt-thread.org/uploads/20220314/460d66bee9aa09a6036f302890ebc737.pdf
5. RT-Thread BSP:https://gitee.com/rtthread/rt-thread/tree/gitee_master/bsp/renesas
6. RT-Thread 官網(wǎng):https://club.rt-thread.org/index.html
7. 瑞薩電子官網(wǎng):https://www2.renesas.cn/cn/zh
致謝
??感謝主辦方及一切幫助過我的人。
審核編輯:符乾江
-
單片機
+關注
關注
6030文章
44491瀏覽量
632018 -
物聯(lián)網(wǎng)
+關注
關注
2900文章
44082瀏覽量
370279 -
瑞薩電子
+關注
關注
37文章
2829瀏覽量
72120 -
RT-Thread
+關注
關注
31文章
1261瀏覽量
39841 -
RA6M4
+關注
關注
0文章
51瀏覽量
422
發(fā)布評論請先 登錄
相關推薦
評論