**
基于Arduino开发板的火焰报警器*
概述
本文将通过使用火焰传感器与Arduino UNO组成一个简单的火灾报警系统。该火焰传感器是基于IR(红外线 Infrared Radiation)的火焰传感器,通过红外线感应是否存在火焰,若存在火焰,火焰传感器传达高电平信号到Arduino UNO主板上,触发蜂鸣器,蜂鸣器响,LED灯亮。
本文所需要用到的材料
火焰传感器
无源蜂鸣器
LED灯
arduino开发板
杜邦线若干
面包板一个
火焰传感器
火焰探测器是一种设计用于探测和响应火焰或火灾的传感器。对检测到的火焰的响应方式取决于加装的设备,可以包括发出警报、停用燃料管线(例如丙烷或天然气管线),以及启动灭火系统。
在这个项目中,我们使用的是基于红外的火焰传感器。输出高电平代表发生火灾。输出低电平代表没有火灾。
火焰传感器接线:
火焰传感器 | Arduino |
---|---|
VCC | 3.3 / 5V |
GND | GND |
DO | 4 |
无源蜂鸣器
无源蜂鸣器利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声,接入直流电只能持续推动振膜而无法产生声音,只能在接通或断开时产生声音。
Arduino和火焰传感器的工作过程
火焰传感器根据火焰发出的红外波长检测火灾是否存在。如果检测到火焰,它将输出逻辑1,否则它将输出逻辑0。 Arduino Uno检测传感器输出引脚上的逻辑电平状态,然后执行进一步的任务,如激活蜂鸣器和LED、发送警报信息。
连接线路图↓
具体代码如下:
int buzzer = 8; //设置蜂鸣器的数字引脚为8
int LED = 13; //设置LED灯的数字引脚为13
int flame_sensor = 4; //设置火焰传感器的数字引脚为4
int flame_detected; //定义一个变量
void setup() //初始化
{
Serial.begin(9600);
pinMode(buzzer, OUTPUT); //将8号引脚设置为输出信号
pinMode(LED, OUTPUT); //将13号引脚设置为输出信号
pinMode(flame_sensor, INPUT);//将4号引脚设置为输入信号
digitalWrite(buzzer, LOW);
}
void loop()
{
flame_detected = digitalRead(flame_sensor);
//读取火焰传感器的数字输出并将其存储在变量“flame_detected”中。
if (flame_detected == 1)
{
Serial.println("Flame detected...! take action immediately.");
digitalWrite(buzzer, HIGH);
tone(8,1000);//将8号数字引脚的输出设置为1000Hz频率,蜂鸣器触发
Serial.println("Bi~");
digitalWrite(LED, HIGH);
}
else
{
Serial.println("No flame detected. stay cool");
digitalWrite(buzzer, LOW);
noTone(8);
digitalWrite(LED, LOW);
}
delay(1000);
}
//根据保存在“flame_detected”中的值,我们需要打开蜂鸣器和LED。在这部分代码中,我们将存储在“flame_detected”中的值与0或1进行比较。
//如果它等于1,则表示已检测到火焰。我们需要打开蜂鸣器和LED,然后在Arduino IDE的串行监视器中显示警告消息。
//如果它等于0,则表示没有检测到火焰,因此我们需要关闭蜂鸣器和LED。每秒重复该过程以检测火焰是否存在。
Tone函数的调用(重点)
Tone( )是在引脚上生成指定频率(和50%占空比)的方波。可以指定持续时间,否则wave会一直持续到调用noTone()。该引脚可以连接到压电蜂鸣器或其他扬声器以播放音调。
注意:如果要在多个引脚上播放不同的音高,则需要在一个引脚上调用noTone(),然后再调用下一个引脚上的tone()。
句法
音(引脚,频率)
音(引脚,频率,持续时间)