Arduino开发实例-GSM火焰警报系统

GSM火焰警报系统

在本实例中,将使用 Arduino 和火焰探测器传感器制作基于 GSM 的火灾警报系统。 在这里,SIM800L GSM 模块、蜂鸣器和火焰传感器用于检测火灾。 当火焰传感器检测到火灾时,蜂鸣器将发出报警声音,并通过GSM向Arduino中预定义的电话号码发送警报短信。

1、硬件接线图

序号 配件名称 数量
1 Arduino Nano 1
2 SIM800L GSM 模块 1
3 红外线火焰传感器 1
4 蜂鸣器 1
5 18650 3.7V 电池 1
6 杜邦线 15
7 面包板 1

本次接线图如下:

在这里插入图片描述

接线说明如下:

Arduino Nano SIM800L GSM 模块
3.7V ( 连接18650 电池) VCC
GND GND
D2 Tx
D3 Rx
Arduino Nano 火焰传感器
5V VCC
GND GND
D5 Signal
Arduino Nano 蜂鸣器
D4 Positive
GND Negative

2、驱动实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <SoftwareSerial.h>



const String PHONE_1 = "\*\*\*\*"; // 通知电话号码,建议加上国家代码,比如+86
const String PHONE_2 = ""; //optional
const String PHONE_3 = ""; //optional

#define rxPin 2
#define txPin 3
SoftwareSerial sim800L(rxPin,txPin);

int Flame_sensor = 5;
int Flame_detected;

#define buzzer\_pin 4


void setup()
{

// 初始化串口
Serial.begin(115200);


// 初始化SIM800L串口连接
sim800L.begin(9600);


pinMode(Flame_sensor, INPUT);


pinMode(buzzer_pin, OUTPUT);
digitalWrite(buzzer_pin,LOW);


Serial.println("Initializing...");
// 测试AT指令
sim800L.println("AT");
delay(1000);
sim800L.println("AT+CMGF=1");
delay(1000);

}

void loop()
{
while(sim800L.available()){
Serial.println(sim800L.readString());
}

Flame_detected = digitalRead(Flame_sensor);
Serial.println(Flame_detected);
//delay(100);

// 检测到火焰警报
if (Flame_detected == 0)
{
digitalWrite(buzzer_pin,HIGH);
Serial.println("Fire detected...! take action immediately.");
// 发送SMS信息
send\_multi\_sms();
make\_multi\_call();
}

//No fire is detected, turn OFF Alarm
else
{
digitalWrite(buzzer_pin,LOW);
}

}

void send\_multi\_sms()
{
if(PHONE_1 != ""){
Serial.print("Phone 1: ");
send\_sms("Fire detected...! take action immediately.", PHONE_1);
}
if(PHONE_2 != ""){
Serial.print("Phone 2: ");
send\_sms("Fire detected...! take action immediately.", PHONE_2);
}
if(PHONE_3 != ""){
Serial.print("Phone 3: ");
send\_sms("Fire detected...! take action immediately.", PHONE_3);
}
}

// 拨打电话
void make\_multi\_call()
{
if(PHONE_1 != ""){
Serial.print("Phone 1: ");
make\_call(PHONE_1);
}
if(PHONE_2 != ""){
Serial.print("Phone 2: ");
make\_call(PHONE_2);
}
if(PHONE_3 != ""){
Serial.print("Phone 3: ");
make\_call(PHONE_3);
}
}

// 发送短信
void send\_sms(String text, String phone)
{
Serial.println("sending sms....");
delay(50);
sim800L.print("AT+CMGF=1\r");
delay(1000);
sim800L.print("AT+CMGS=\""+phone+"\"\r");
delay(1000);
sim800L.print(text);
delay(100);
sim800L.write(0x1A); //ascii code for ctrl-26 //Serial2.println((char)26); //ascii code for ctrl-26
delay(5000);
}

void make\_call(String phone)
{
Serial.println("calling....");
sim800L.println("ATD"+phone+";");
delay(20000); //20 sec delay
sim800L.println("ATH");
delay(1000); //1 sec delay
}

文章来源: https://iotsmart.blog.csdn.net/article/details/128205714