我们发表了许多有趣的文章arduino项目喜欢基于GSM的火灾报警系统直线跟踪机器人基于RFID的门禁系统这一次,我们发布了一个非常有用的家庭应用程序-使用Arduino和GSM模块的气体泄漏检测器,带有SMS警报和声音警报.我们出版了液化石油气使用Arduino的传感器项目以及之前的MQ2传感器,用于感应液化石油气泄漏并发出声音警报。该项目还具有一个继电器系统,可在气体泄漏时打开或关闭特定设备(例如,我们可以在气体泄漏时关闭主电源以防止火灾)。

让我们开始我们的项目吧!

项目目标

  • 检测气体泄漏(如液化石油气泄漏、丁烷泄漏、甲烷泄漏)或可使用MQ5传感器检测的任何此类石油基气体物质。
  • 设置基于短信的警报机制,发送3条短信(3条警报消息)到2个指定的手机号码(在arduino程序中输入)
  • 气体泄漏时发出声音报警,气体泄漏得到控制后停止报警(大气中的气体含量在正常范围内)
  • 通过16×2 LCD模块在LCD上显示状态。

让我们开始建设我们的项目-带有短信警报和声音警报的气体/液化石油气泄漏检测器!。

我建议您在构建这个项目之前阅读以下教程!

1.将MQ5传感器接口到Arduino-教你如何将MQ5 LPG传感器接口到Arduino,并使用MQ5模块的模拟或数字出针读取值。

2.GSM模块与Arduino接口–教您如何将GSM模块连接到Arduino,并使用AT命令发送/接收文本消息。

GSM模块–买家指南-你想买GSM模块吗?GSM模块有少量的产品变体,如SIM900, SIM300, SIM800等。我们创建了这个买家指南,以帮助您选择合适的GSM模块为您的项目需求。

电路图- Arduino和GSM模块的气体泄漏检测器

使用Arduino和GSM模块的气体泄漏检测器,并带有声音报警

如图所示组装电路!重要连接说明如下。组装电路的照片如下所示。

使用Arduino的气体泄漏检测器

注:-这张照片里没有说话人。无论如何,你可以按照电路图把扬声器连接到arduino的8脚上。

程序/代码

#include  #include  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);SoftwareSerial mySerial(9、10);int传感器= 7;int议长= 8;int gas_value、Gas_alert_val Gas_shut_val;int Gas_Leak_Status;int sms_count = 0;void setup() {pinMode(sensor,INPUT);pinMode(扬声器、输出);mySerial.begin (9600); Serial.begin(9600); lcd.begin(16,2); delay(500); } void loop() { CheckGas(); CheckShutDown(); } void CheckGas() { lcd.setCursor(0,0); lcd.print("Gas Scan - ON"); Gas_alert_val=ScanGasLevel(); if(Gas_alert_val==LOW) { SetAlert(); // Function to send SMS Alerts }} int ScanGasLevel() { gas_value=digitalRead(sensor); // reads the sensor output (Vout of LM35) return gas_value; // returns temperature value in degree celsius } void SetAlert() { digitalWrite(speaker,HIGH); while(sms_count<3) //Number of SMS Alerts to be sent { SendTextMessage(); // Function to send AT Commands to GSM module } Gas_Leak_Status=1; lcd.setCursor(0,1); lcd.print("Gas Alert! SMS Sent!"); } void CheckShutDown() { if(Gas_Leak_Status==1) { Gas_shut_val=ScanGasLevel(); if(Gas_shut_val==HIGH) { lcd.setCursor(0,1); lcd.print("No Gas Leaking"); digitalWrite(speaker,LOW); sms_count=0; Gas_Leak_Status=0; }}} void SendTextMessage() { mySerial.println("AT+CMGF=1"); //To send SMS in Text Mode delay(1000); mySerial.println("AT+CMGS=\"+919495xxxxxx\"\r"); // change to the phone number you using delay(1000); mySerial.println("Gas Leaking!");//the content of the message delay(200); mySerial.println((char)26);//the stopping character delay(1000); mySerial.println("AT+CMGS=\"+918113xxxxxx\"\r"); // change to the phone number you using delay(1000); mySerial.println("Gas Leaking!");//the content of the message delay(200); mySerial.println((char)26);//the message stopping character delay(1000); sms_count++; }

使用打火机使用“煤气泄漏”-参考照片

使用GSM模块的气体泄漏检测器

计划的重要方面

在开发气体泄漏检测仪等关键系统或火灾报警系统等类似系统时,需要持续监控传感器参数(24×7)。因此,我们的系统必须持续监测“气体泄漏”。这是通过连续扫描传感器输出(MQ5的数字输出)来实现的ScanGasLevel ()子例程。如果您仔细研究这个程序,就会发现主函数loop()只有两个被反复调用的子例程——CheckGas()和CheckShutDown()。CheckGas() -是一个子程序,它连续扫描传感器输出,并在任何时间点发生“气体泄漏”时采取行动。CheckShutDown()是一个子程序,用于监视关闭过程并检查房间的状态是否恢复到正常状态(没有气体泄漏)。

CheckGas ()-是监测气体泄漏发生的功能24×7。该函数获取MQ35测量的气位(通过使用digitalRead()命令从MQ35读取数字)并将其存储到变量中Gas_alert_val进行比较。如果没有“气体泄漏”-传感器将会.如果在任何时间点发生“气体泄漏”,输出的传感器将立即变为的地位。该声明如果(Gas_alert_val = =低)检查这一点,如果发生气体泄漏,则检查内部子例程SetAlert()将被调用。

SetAlert()是控制发送到程序中加载的每个手机号码的SMS警报数量的功能。可以通过更改while循环的停止条件来更改发送的SMS警报数量。停止条件sms_计数<3——意味着3短信提醒将发送到每个手机号码。如果您想发送5个警报,只需更改停止条件为sms_count<5 -明白了吗?发送短信的功能(使用AT命令)-SendTextMessage ()将被称为3倍如果短信提醒数是3.这个函数SendTextMessage()将被调用的次数与程序中设置的短信警报的次数一样多。除了发送短信报警外,该子程序还控制声音报警。使用命令digitalWrite(speaker,HIGH)来触发警报——这将激活连接在arduino引脚8的扬声器。

注:-我们使用停止条件限制了短信提醒的数量。一旦发生煤气泄漏,并且已经发送了设定数量的短信提醒,系统将不再发送短信!系统认为它的工作通过发送短信结束了。人类必须来解决气体泄漏问题。发送警报后,系统将开始监控shutdown进程。一旦气体泄漏被消除,系统将自动重新激活其短信警报设置重置sms_count变量归零。

应用“煤气泄漏”后的输出如图所示!

带sms警报的气体泄漏检测器

下面是输出的视频演示!

CheckShutDown()-是监控煤气泄漏是否被关闭的功能。只有当“煤气泄漏”发生时,我们才需要使用这个功能。为了将条目限制在这个例程中的语句中,我们引入了一个变量气体泄漏状态.这个变量值将被设置为value1当发生气体泄漏时(检查SetAlert()中的语句)。CheckShutDown()中的语句只会在值为气体泄漏状态==1.(如果没有发生气体泄漏,我们就不需要浪费时间执行ShutDown检查语句)。我们认为一旦室温恢复正常,“气体泄漏”就被消除了。所以如果我们的变量煤气关断阀回到HIGH状态,我们认为气体泄漏已经消除,环境是安全的。子例程有停止气体泄漏报警的语句(参考语句- digitalWrite(speaker,LOW) -切断arduino引脚8的供应并停止声音报警),当气体泄漏完全消除时(Gas_shut_val == HIGH状态)将执行该语句。我们开始我们的气体泄漏监测再次与短信提醒活动!(我们重置气体泄漏状态变量和sms_count变量回到零-这是必要的变量条件监测气体泄漏再次和发送警报短信,如果气体泄漏重复。

这里是一个项目的幻灯片演示!

作者

63评论

  1. 杰万

    如果我不使用LCD,但使用了arduino uno、mq5、gsm模块sim900和蜂鸣器,该怎么办?是否可以从gsm模块接收短信?或者应该使用其他编码?

  2. SASI KIRAN。我

    先生,我按电路图放了蜂鸣器,但它总是发出声音而感觉不到任何气体。如何纠正这个问题。我s there any problem in programme code.please send me sir.

  3. denden

    你能告诉我如何组装所有组件吗?请在项目截止日期前尽快回复

  4. akenji克劳德。

    您好,先生,这个项目很好,先生,我想知道arduino是否可以用pic16f微控制器来替换,如果可以,请问我该怎么做?

  5. fuzen

    我可以使用gsm sim900A吗?

  6. Aiswarya

    mySerial.begin (9600);
    在这一行9600是什么意思?

    • 莫利

      9600表示微控制器的速度,即微控制器以每秒9600字节的速度发送和接收信息

  7. 阿琼

    先生,我能买这个项目吗?做这个项目需要多少钱

    • 阿琼

      先生,我能买这个项目吗?做这个项目需要多少钱

  8. 肯尼

    这太棒了!家里再也不会因为煤气泄漏而发生火灾了!Weldone Adnin。

    我需要使用atduino在160×16的滚动点矩阵上工作,先生,你能帮我做这个项目吗?

  9. MZAR

    你好,先生,你能帮我吗?我用的是gsm模块sim 900A..我可以使用这个编码吗?或者我需要其他编码..请帮帮我,先生。Tq

  10. JC

    如果我不想包括lcd显示器,我应该对程序做什么?

  11. piriyal

    我们要用GSM 300板和mq2气体传感器做什么项目,你能帮我吗

  12. Hariharan

    该电路可使用9v电池连接。

  13. 魏范

    你好,我的项目和你一样,但是我使用arduino,通过电报发送通知。你有arduino的编码可以连接电报吗?

  14. 舒沃

    我使用MQ 9,但它没有响应。屏幕总是显示没有气体泄漏。然后,我使用MQ 5,它也是一样的。请给我一个建议。

  15. 吉滕德拉·帕特尔

    我的项目工作,但我没有收到短信,所以你能帮我吗?

  16. 舒沃

    乔乔,我在遵循你的计划步骤。它是有帮助的。我也想加电磁阀来控制供气。那么,这段代码会有什么变化呢?你能帮我吗?

  17. 苏琪

    这个程序对arduino uno有效吗?

    • 乔乔

      是的。电路和代码采用Arduino Uno进行开发。

  18. pradip帕蒂尔

    我想加个排气风扇店那个项目怎么加,那个风扇的代码在哪里,用代码指导我先生,当煤气泄漏时,检测风扇是自动打开的,下来后风扇是关闭的

  19. pradip帕蒂尔

    我想在那个项目中添加排气扇,我做什么,我在哪里编码,打开风扇以减少房间里的空气,建议我做什么,先生

  20. 扎里布

    我们如何通过这个项目来控制一个设备?比如关掉怀疑有煤气泄漏的装置。

  21. 哈兹

    我们在arduino连接的所有5v电源都是5v,对吗?

  22. 阿克夏

    你好
    短信只发送到第一个号码。怎么让它也变成第二个数字呢

  23. 什巴巴拉塔慕克吉

    我可以并联多个传感器吗?这怎么可能?

    • 乔乔

      是的。你可以。使用Arduino的免费引脚。

      • 哈兹

        我在arduino上传的所有程序/编码?

      • neha

        先生,你能给我们推荐一些免费的胸针吗?哪一种适合用于气体泄漏检测......

  24. 安维斯

    非常有帮助,任何项目新手都容易理解。
    谢谢你!

  25. Avinash

    谢谢你给了这么漂亮的项目
    我也在做同样的项目,先生,但我需要你帮助我,请我想要一个prg自动天然气预订和天然气lekg检测器。

  26. Circuitbaba

    您好…您使用了哪个gsm模块以及如何对gsm调制解调器进行编程…请回答

  27. ruturaj dighe

    我应该在哪里得到这个项目的报告。。???

  28. 迪佩什

    先生,我做过同样的项目,但它不工作。即使液晶显示器也没有电源

  29. SAMEER

    请帮助我知道如何上传代码ARDUINO,您能否让我知道这里使用的组件名称,先生。因为我对做这个项目非常感兴趣。是的,如何上传程序,应用程序用来做它。

  30. 阿森

    我试过这个,效果很好。我还添加了一个solneoid阀门用于自动关闭,只是用阀门替换了蜂鸣器。非常感谢!

  31. 哈菲兹·奥瓦尔

    我想用微控制器检测液化石油气,请如何

  32. 哈利

    u plz可以帮助我吗?我已经按照上面的电路图运行,一切正常。我使用了上面给出的相同代码。我的气体被检测到,但主要问题是短信没有在我的手机上发送。如何做?plz帮助我有我的提交:(((((

  33. 达莫拉

    我如何修改这个代码,以使用模拟出的气体传感器,然后显示气体值在lcd上的实时,然后最后,当有一个气体泄漏,它打开排气风扇以及扬声器和短信?

    谢谢你!

  34. 安雅·韦斯特比

    您好!我对做这个项目很感兴趣,如果您已经回答了这个问题,我可能会错过它,但是您使用了什么编程应用程序来编写/运行代码,以便arduino可以执行它?

  35. 以利亚撒

    你好…请我尝试实施这个项目,但收到的短信是无限的。它会给无限的短信。请我如何才能停止。在我的情况下,我只需要一个提醒短信一次。

  36. 拉杰什

    好的,项目 .......!!!,
    我已经尝试使用我的mq6模块,但我的模块没有加热应用气体,请帮助我....

  37. 阿森

    如果使用GSM屏蔽,会有什么不同?代码中必须写入哪些更改?会很有帮助的,提前谢谢你

  38. 温格

    将MQ2气体传感器的代码相同。谢谢提前

  39. Dhivya

    有必要改变传感器的ppm范围来检测…

  40. 提阿依莎

    该项目能否与基于gsm的火灾报警系统arduino项目相结合?因为我需要为我的最后一年项目提供所需的想法。

  41. 里士满

    有人能帮我吗?这是我的密码。

    # include
    # include“SIM900.h”
    # include“sms.h”
    # include
    / / # include
    # include
    短信;
    Boolean started = false;
    字符缓冲区[160];
    char smsbuffer [160];
    charn[20];
    / / LiquidCrystal液晶(4、2、3、7、8、9);
    int buttonState;
    int lastButtonState = LOW;
    长上次去BounceTime=0;
    长去弹性=50;
    Boolean st = false;
    int蜂鸣器=12;

    无效设置(){

    / /液晶。开始(16日2);
    Serial.begin (9600);
    如果(gsm.begin (2400))

    开始= true;
    }
    如果(启动)

    delsms();
    }
    短信。SendSMS(“+60142646978”,“Gas Sensor and GSM module activated”);

    }

    void循环(){

    / /液晶。setCursor (0,0);

    //lcd.打印(“Detektor气体短信”);
    int val = analogRead(A0);
    val=map(val,01023,0100);
    / / lcd.setCursor (0,1);
    / /液晶。打印(“阿提拉·:”);
    / / lcd.print (val);
    / /液晶。打印(“%”);

    //使用传感器检测的代码
    If (val > 10) {
    语调(蜂鸣器,800500);
    延迟(1000);
    圣= true;
    }
    Else st = false;

    如果(st!=lastButtonState){
    lastDebounceTime =米尔斯();
    }

    if ((millis() - lastDebounceTime) > debounceDelay) {

    如果(st!=按钮状态){
    buttonState =圣;

    if (buttonState == HIGH) {
    PString str(缓冲区,sizeof(缓冲));
    str.begin ();
    str.print(“检测到气体!气体泄漏在”);
    str.print (val);
    str.print(“%”);
    //字符串a=str;
    sms.SendSMS(“+60142646978”,缓冲区);
    }
    }
    }

    //代码使用SMS lapor。
    lastButtonState =圣;
    Int pos = 0;
    如果(启动)

    pos = sms.IsSMSPresent (SMS_ALL);
    如果(pos)

    短信。(pos, n, smsbuffer, 100);
    延迟(2000);
    如果(!比较字符串(smsbuffer lapor))

    PString str(缓冲区,sizeof(缓冲));
    str.begin ();
    str.print(“当前气体泄漏率”);
    str.print (val);
    str.print(“%”);
    //字符串a=str;
    sms.SendSMS(“+60142646978”,缓冲区);
    }
    delsms();
    }
    }
    }

    //删除短信Yang dihantar
    void delsms()

    For (int I = 0;我< 10;我+ +)

    int pos = sms. issmpresent (SMS_ALL);
    If (pos != 0)

    if(sms.DeleteSMS(pos)==1{}else{}
    }
    }
    }

    我正在使用arduino uno、sim900模块、mq2气体传感器和蜂鸣器创建基于sms的气体传感器检测器。
    我有两个选择:
    1.mq2气体传感器检测并将结果通过短信发送到代码中设置的数字。
    2.我们可以发送一个特定的字符串,以知道周围的气体百分比,并将结果发送到代码中的特定数字设置。

    但我想将第二个选项更改为自动回复任何传入号码。我该怎么办?

  42. 阿西夫·马扬

    先生,我对这个项目感兴趣,但我想使用单极步进电机与ULN2003A驱动器。所以我想当检测到气体泄漏时,步进电机逆时针旋转180度,关闭气体调节器。所以先生,我也需要为步进电机编程,以满足我的上述要求。请回复!

  43. 阿西夫·马扬

    先生,我可以用Sim-900A或Sim-900D GSM模块来代替Sim-900吗?因为我们国家没有Sim-900 GSM模块。如果我使用Sim-900A或Sim-900D GSM模块而不是Sim-900,那么我也必须更改代码,还是Sim-900A和Sim-900D模块保持不变?请回复!谢谢你!

  44. 阿布杜尔

    如何用伺服电机代替蜂鸣器

  45. 垫子

    你好,这个小项目卖了吗?我可以买这个,因为我不知道如何使它..请发邮件给我。
    tq操作

  46. 基尔坦

    我如何合并温度传感器代码与烟雾探测器代码?

  47. 拉梅什k。潘迪

    你好,
    这是一个非常有趣的家庭安全项目。
    谢谢,这个项目,,
    拉梅什

    • 乔乔

      @Ramesh–希望您使用arduino尝试了这个气体泄漏检测器项目!感谢您的反馈。

      • Kumuditha Karunarathna

        我已连接,但短信无法发送,请帮助我

      • saurabh

        这是工作……吗?如果我在8脚添加LED,那么没有感觉到液化石油气,它就会发光.......你能告诉我它是如何工作的.......吗请发给我详情....

  48. Bhavani

    Vanakam乔乔。这非常有用。我需要一个代码的液化石油气泄漏检测器arduino uno和Gsm与mq2传感器不使用lcd显示。请帮助我您的代码jojo

      • 阿西夫•哈米德

        我正在使用mq4传感器,代码不能工作。它能感知气体,但味精不能发送给给定的不。现在PLZZ告诉我我现在必须做什么,或者请提供我新的代码

  49. S.Yogaraj

    非常有用的项目,代码解释得很清楚
    谢谢作者。

    约伽拉哈

Baidu