一、火焰传感器
1、模块描述
- 可以检测火焰或者波长在760纳米~1100纳米范围内的光源
- 探测角度60度左右,对火焰光谱特别灵敏
- 灵敏度可调(图中蓝色数字电位器调节)
- 对火焰的探测距离:灵敏度和火焰强度有关,一般1m以内适用(以打火机火焰测试,半米内能够触发传感器)
- 工作电压3.3V—5V
2、接口说明
VCC | 电源正(3.3V~5V) |
---|---|
GND | 电源负 |
D0 | TTL开关信号输入 |
A0 | 模拟信号输入 |
3、原理图
二、液化气传感器
1、模块描述
- 液化气传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。
- 当传感器所处环境中存在可燃气体时,传感器的电导率随空气中 可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。
- 气体传感器可检测多种可燃性气体,特别是对液化气(丙烷)具有很高的灵敏度,是一款适合多种应用场合的低成本传感器。
2、接口说明
VCC | 电源正极(5V) |
---|---|
GND | 电源负极 |
DO | 数字量输出 |
AO | 模拟量输出 |
传感器通电后,需要预热1分钟,测量的数据才会稳定,传感器发热属于正常现象
3、原理图
三、蜂鸣器
1、模块描述
有源蜂鸣器和无源蜂鸣器的区别
有无震荡源,有源蜂鸣器内部带震荡源,所以只要一通电就会叫,而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。
价格不同,有源蜂鸣器要比无源蜂鸣器贵,贵在里面多了震荡源。
优点不同,无源蜂鸣器的优点是:便宜,声音频率可控,可以做出多来米发索拉西的效果,在一些特例中,可以和LED复用一个控制口。有源蜂鸣器的优点是:程序控制方便
2、接口说明
VCC | 电源正(3.3~5V) |
---|---|
GND | 电源负 |
I/O | 外接单片机IO口 |
四、代码实现
1、Buzzer.c
- 控制蜂鸣器模块
#include "stm32f10x.h" // Device header
void Buzzer_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB, GPIO_Pin_12);
}
void Buzzer_ON(void)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_12);
}
void Buzzer_OFF(void)
{
GPIO_SetBits(GPIOB, GPIO_Pin_12);
}
void Buzzer_Turn(void)
{
if (GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_12) == 0)
{
GPIO_SetBits(GPIOB, GPIO_Pin_12);
}
else
{
GPIO_ResetBits(GPIOB, GPIO_Pin_12);
}
}
2、Fire.c
- 控制火焰传感器模块
#include "stm32f10x.h" // Device header
void Fire_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
uint8_t Fire_Get(void)
{
return GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13);
}
3、Gas.c
- 控制天然气传感器模块
#include "stm32f10x.h" // Device header
void Gas_Init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11; //假设天然气传感器连接到GPIOB的Pin14引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
uint8_t Gas_Get(void)
{
return GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_11);
}
4、main.c
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "Buzzer.h"
#include "Fire.h"
#include "Gas.h"
int main(void)
{
Buzzer_Init();
Fire_Init();
Gas_Init();
while (1)
{
// 检测PA0引脚的状态
if (Fire_Get() == 1||Gas_Get()==1)
{
// 当检测到火焰或煤气时
Buzzer_ON();
}
else
{
// 当未检测到火焰或煤气时
Buzzer_OFF();
}
}
}
五、编译下载
基于STM32的火焰报警