风筝
发表于: 2019-1-14 14:18:09 | 显示全部楼层

在本篇文章中,我们将制作一个物联网烟雾探测系统,其中MQ-2烟雾传感器感知附近是否有烟雾。如果附近有烟雾,则蜂鸣器将开始发出蜂鸣声,红色LED指示灯被点亮,并且我们将使用ESP8266模块创建的网页上显示警告。可以使用任何连接的设备(如移动设备、平板电脑或PC)访问此网页。

connection.jpg


所需的组件

●    Arduino开发板

●    ESP8266 Wi-Fi模块

●    MQ-2气体传感器

●    绿色和红色LED

●    蜂鸣器

●    连接导线

●    面包板


烟雾报警器如何工作?

MQ-2烟雾传感器将以模拟电压的形式提供输出。我们在代码中设置了一个条件,即如果传感器的输出值大于400,则蜂鸣器将开始发出蜂鸣声,红色LED将被点亮;如果传感器的输出值小于400,则蜂鸣器将保持静音,绿色LED将被点亮。


这里使用的ESP模块将在IP地址创建一个网页,并将数据发送到该IP地址,然后在改网页显示数据。上传代码后,可以在串行监视器中看到此IP地址,如下所示。

serial monitor.png


当您在浏览器中键入此IP地址时,项目的输出将显示在网页中,如下图所示。

output.png


电路原理图

首先,将ESP8266模块连接到Arduino开发板。为了将ESP8266与Arduino正确连接,我们使用了ESP-01适配器模块,这将使连接变得非常容易。该适配器模块内置5V至3.3V稳压器,这意味着您不必使用任何电阻。


将ESP-01适配器的VCC引脚连接到Arduino上的5V引脚,将ESP-01适配器的GND连接到Arduino上的GND。接下来,将适配器的TX引脚连接到Arduino上的引脚2,将RX引脚从适配器连接到Arduino上的引脚3。


然后,将MQ-2气体传感器与Arduino连接。将气体传感器上的VCC和GND连接到Arduino上的5V和GND引脚。然后将MQ-2气体传感器上的A0引脚连接到Arduino上的A0。


之后,将蜂鸣器和LED连接到Arduino。将蜂鸣器上的正极连接到Arduino上的引脚10,将蜂鸣器上的负极连接到Arduino上的GND。然后通过220欧姆电阻将LED的负极连接到GND,将正极连接到Arduino的引脚8和9。

connections.jpg


代码说明

首先,添加软件serial库。serial库允许我们在Arduino的其他引脚上使用TX和RX通信,而不是仅使用默认的TX和RX引脚。然后我们定义了我们在Arduino上连接这些TX和RX引脚的位置。

  1. #include <SoftwareSerial.h>

  2. #define DEBUG true

  3. SoftwareSerial wifi_module(2,3); // Connect TX pin of esp to the pin 2 of Arduino and RX pin of esp to the pin 3 of Arduino
复制代码

在下面的代码中,我们声明了LED、蜂鸣器和烟雾传感器连接到Arduino开发板的引脚。

  1. int red_led_pin = 9;

  2. int green_led_pin = 8;

  3. int buzzer_pin = 10;

  4. int smoke_sensor_pin = A0;
复制代码

setup()函数中,首先,我们设置串行通信和wifi模块的波特率为9600。然后将LED引脚和蜂鸣器引脚设置为输出引脚,因为我们将这些引脚的输出提供给LED和蜂鸣器。 最后,我们将烟雾传感器引脚定义为输入,因为烟雾传感器引脚将从传感器接收输入并将其传送给Arduino。

  1. Serial.begin(9600);

  2.   wifi_module.begin(9600); // Set the baudrate according to your esp8266

  3.   pinMode(red_led_pin, OUTPUT);

  4.   pinMode(green_led_pin, OUTPUT);

  5.   pinMode(buzzer_pin, OUTPUT);

  6.   pinMode(smoke_sensor_pin, INPUT);
复制代码

以下代码将调用函数,并将在ESP提供的IP地址处设置服务器。 然后ESP将在此IP地址发送数据。

  1. esp8266_command("AT+RST\r\n",2000,DEBUG); // reset module

  2.   esp8266_command("AT+CWMODE=2\r\n",1000,DEBUG); // configure as access point

  3.   esp8266_command("AT+CIFSR\r\n",1000,DEBUG); // get ip address

  4.   esp8266_command("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections

  5.   esp8266_command("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
复制代码

loop()函数中,我们从烟雾传感器读取值,然后应用一个条件,如果输出值大于400,则红色LED将亮起,蜂鸣器将开始发出蜂鸣声。 如果输出值小于400,则绿色LED指示灯将亮起,蜂鸣器将保持静音。

  1. int analogSensor = analogRead(smoke_sensor_pin);

  2.   if (analogSensor > 400)

  3.   {

  4.     digitalWrite(red_led_pin, HIGH);

  5.     digitalWrite(green_led_pin, LOW);

  6.     tone(buzzer_pin, 1000, 200);

  7.   }
复制代码

以下代码将在网页上打印输出数据。 首先,我们将在网页顶部打印“IoT Smoke detection system”。 然后在第二行,我们将打印输出烟雾值,在第三行,我们将根据条件打印“Everything Normal”或“DANGER! Move Somewhere Else“。

  1. String webpage = "<h1>IOT Smoke Detection System</h1>";

  2.       webpage +="<p>Smoke Value is ";

  3.       webpage += analogSensor;

  4.       webpage +="</p>";

  5.       if (analogSensor > 400)

  6.   {

  7.     webpage +="<h5>DANGER! Move Somewhere Else</h5>";

  8.   }

  9.   else

  10.   {

  11.     webpage +="<h4>Everything Normal</h4>";

  12.   }
复制代码

下面的代码将命令发送到ESP,并将在串口监视器上打印ESP的输出。

  1. String esp8266_command(String command, const int timeout, boolean debug)

  2. {

  3.     String response = "";

  4.     wifi_module.print(command);

  5.     long int time = millis();

  6.     while( (time+timeout) > millis())

  7.     {

  8.       while(wifi_module.available())

  9.       {

  10.         

  11.         char c = wifi_module.read();

  12.         response+=c;

  13.       }  

  14.     }
复制代码

以上就是本文的全部内容,希望您能让它运转起来! 如果有任何疑问,欢迎在本帖下面进行回复。


代码

本篇文章的完整代码如下所示: main.rar (1.04 KB, 下载次数: 371)

跳转到指定楼层
Page
发表于: 2019-5-28 22:07:55 | 显示全部楼层

C:\Users\11924\Desktop
回复

使用道具 举报

Page
发表于: 2019-5-28 22:08:17 | 显示全部楼层

C:\Users\11924\Desktop



大佬帮下忙谢谢
回复

使用道具 举报

suxian
发表于: 2020-4-18 07:41:00 | 显示全部楼层

为什么我的编译上传都正确,但是就是不会显示?
回复

使用道具 举报

suxian
发表于: 2020-4-21 12:10:50 | 显示全部楼层

Page 发表于 2019-5-28 22:08
大佬帮下忙谢谢

知道怎样联系作者吗
回复

使用道具 举报

发表于: 2020-12-20 19:01:57 | 显示全部楼层

大佬有个问题想请教一下
回复

使用道具 举报

发表于: 2020-12-20 19:06:51 | 显示全部楼层

作者怎样能联系你呢
回复

使用道具 举报

风筝
发表于: 2020-12-21 08:51:20 | 显示全部楼层


可以加QQ:1470127216
回复

使用道具 举报

XIAOLI
发表于: 2022-4-11 16:18:09 | 显示全部楼层

suxian 发表于 2020-4-18 07:41
为什么我的编译上传都正确,但是就是不会显示?

请问解决了吗?
回复

使用道具 举报

Liao1999
发表于: 2022-8-7 17:00:17 | 显示全部楼层

请问楼主把mq2换成普通的陶瓷管器件可以嘛 陶瓷管涂敷自己制备的气敏材料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-23 03:30 , Processed in 0.056460 second(s), 11 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表