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
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!