|
在本篇文章中,我们将学习如何使用GSM模块和Arduino设计一款带有SMS报警功能的气体泄漏检测器。我们将把Sim800 GSM模块以及MQ135气体传感器与Arduino进行连接。气体浓度值将显示在1602 LCD显示屏上。每当检测到过量气体时,SMS就会发送到指定的电话号码。
烟雾和气体泄漏检测器在检测建筑物中的烟雾或火灾中非常有用,因此重要的安全参数也是预防灾难的关键。过去,气瓶爆炸和意外起火对经济造成了很多伤害。当检测到烟雾或气体泄漏时,此电路将触发警报系统。该电路主要使用MQ135烟雾/气体传感器和Arduino来检测烟雾和气体泄漏。这款MQ135气体传感器对液化石油气、酒精和甲烷等敏感,它可以检测到汽车或维修站、储罐环境中存在危险的液化石油气泄漏。该传感器具有出色的灵敏度和快速的响应时间。该传感器还可以感应异丁烷、丙烷、LNG和香烟烟雾。如果LPG传感器检测到任何气体从存储泄漏,则此传感器的输出将变低。低信号由微控制器监控,并将信号发送至GSM模块,以将气体泄漏短信发送至用代码编写的手机号码。
您也可以使用SIM900或任何其他GSM模块代替SIM800。同样,您可以使用MQ2/MQ3/MQ5或其他气体/烟雾传感器代替MQ135。
所需的组件 ● Arduino Uno开发板 ● MQ135气体/烟雾传感器 ● 1602 LCD显示屏 ● SIM800 / SIM900 GSM模块 ● 面包板 ● 9V电源适配器 ● 连接导线
SIM800 GSM模块 SIM800是专为全球市场设计的四频GSM / GPRS模块。它适用于GSM 850MHz、EGSM 900MHz、DCS 1800MHz和PCS 1900MHz的频率。 SIM800具有GPRS多时隙12类/ 10类(可选),并支持GPRS编码方案CS-1、CS-2、CS-3和CS-4。 SIM800的尺寸仅为24 * 24 * 3mm,可满足用户应用程序(例如M2M、智能电话、PDA和其他移动设备)中几乎所有的空间需求。
SIM800具有68个SMT焊盘,并提供模块与客户电路板之间的所有硬件接口。 SIM800采用省电技术设计,因此在睡眠模式下的电流消耗低至1.2mA。 SIM800集成了TCP / IP协议和扩展的TCP / IP AT命令,这些命令对于数据传输应用程序非常有用。
主要特征 • 最多支持5 * 5 * 2键盘。 • 一个全功能的UART端口,可以配置为两个独立的串行端口。 • 一个USB端口可用作调试和固件升级。 • 音频通道,包括麦克风输入和接收器输出。 • 可编程的通用输入和输出。 • 一个SIM卡接口。 • 支持蓝牙功能。 • 支持一个PWM。 • PCM / SPI / SD卡接口,只能同步访问一项功能。 • 电源3.4V〜4.4V • 睡眠模式下的典型功耗为1.2mA • 频段GPRS多时隙12类 • 支持SIM卡:1.8V、3V • 串行端口:可用于数据流的AT命令 • USB端口:可用作调试和固件升级
MQ-135烟气传感器 MQ-135气体传感器可感应诸如氨氮、氧气、酒精、芳族化合物、硫化物和烟雾之类的气体。 MQ-135气体传感器具有较低的电导率,可以清洁作为气体传感材料的空气。在大气中我们可以找到污染气体,但是气体传感器的电导率随着污染气体浓度的增加而增加。 MQ-135气体传感器可以实现检测烟雾、苯、蒸汽和其他有害气体。它具有检测不同有害气体的潜力。它成本低廉,特别适合于空气质量监测应用。
MQ-135传感器是信号输出指示器指令。它具有两个输出:模拟输出和TTL输出。 TTL输出是低电平信号,可以通过微控制器上的IO端口进行访问。模拟输出是浓度,即电压增加与浓度成正比。该传感器寿命长,稳定性也好。
主要特征 • 高灵敏度 • 对氨、硫化物和苯有高敏感性 • 检测范围:10 – 300 ppm NH3、10 – 1000 ppm苯,10 – 300酒精 • 加热器电压:5.0V • 尺寸:直径18mm,高17mm,引脚6mm高 • 长寿命和低成本
电路连接图 以下是使用GSM模块和Arduino制作的带有SMS报警功能的气体泄漏检测器的电路。如下图所示组装电路。
使用5V电源向MQ135传感器供电,并将其模拟引脚A0连接到Arduino的模拟引脚A0。
同样,使用9V/12V外部电源向GSM模块供电,并将Sim800调制解调器的Tx、Rx和GND引脚连接到Arduino。 因此,分别将Tx和Rx连接到Arduino的9号和10号引脚。
将LCD连接到Arduino的引脚7、6、5、4、3、2。 使用10K电位器调整对比度。
源代码/程序 以下是使用GSM模块和Arduino制作的带有SMS报警的气体泄漏检测器的源代码或程序。 复制此代码,然后使用Arduino IDE将其上传到Arduino开发板。 - #include <LiquidCrystal.h>
- LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
- #include <SoftwareSerial.h>
- SoftwareSerial mySerial(9, 10);
- int gasValue = A0; // smoke / gas sensor connected with analog pin A1 of the arduino / mega.
- int data = 0;
- void setup()
- {
- randomSeed(analogRead(0));
- mySerial.begin(9600); // Setting the baud rate of GSM Module
- Serial.begin(9600); // Setting the baud rate of Serial Monitor (Arduino)
- lcd.begin(16,2);
- pinMode(gasValue, INPUT);
- lcd.print (" Gas Leakage ");
- lcd.setCursor(0,1);
- lcd.print (" Detector Alarm ");
- delay(3000);
- lcd.clear();
- }
- void loop()
- {
- data = analogRead(gasValue);
- Serial.print("Gas Level: ");
- Serial.println(data);
- lcd.print ("Gas Scan is ON");
- lcd.setCursor(0,1);
- lcd.print("Gas Level: ");
- lcd.print(data);
- delay(1000);
- if ( data > 500) //
- {
- SendMessage();
- Serial.print("Gas detect alarm");
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Gas Level Exceed");
- lcd.setCursor(0,1);
- lcd.print("SMS Sent");
- delay(1000);
- }
- else
- {
- Serial.print("Gas Level Low");
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("Gas Level Normal");
- delay(1000);
- }
- lcd.clear();
- }
- void SendMessage()
- {
- Serial.println("I am in send");
- mySerial.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
- delay(1000); // Delay of 1000 milli seconds or 1 second
- mySerial.println("AT+CMGS="+91900xxxxxxx"\r"); // Replace x with mobile number
- delay(1000);
- mySerial.println("Excess Gas Detected. Open Windows");// The SMS text you want to send
- delay(100);
- mySerial.println((char)26);// ASCII code of CTRL+Z
- delay(1000);
- }
复制代码
项目的工作过程 上载代码后接通电路电源后,LCD会以模拟数字显示气体含量值。 它将显示气体含量是正常还是过量的状态。 当气体水平超过时,它将显示SMS已发送状态。
|