在本篇文章中,我们将制作一个物联网烟雾探测系统,其中MQ-2烟雾传感器感知附近是否有烟雾。如果附近有烟雾,则蜂鸣器将开始发出蜂鸣声,红色LED指示灯被点亮,并且我们将使用ESP8266模块创建的网页上显示警告。可以使用任何连接的设备(如移动设备、平板电脑或PC)访问此网页。
所需的组件 ● Arduino开发板 ● ESP8266 Wi-Fi模块 ● MQ-2气体传感器 ● 绿色和红色LED ● 蜂鸣器 ● 连接导线 ● 面包板
烟雾报警器如何工作? MQ-2烟雾传感器将以模拟电压的形式提供输出。我们在代码中设置了一个条件,即如果传感器的输出值大于400,则蜂鸣器将开始发出蜂鸣声,红色LED将被点亮;如果传感器的输出值小于400,则蜂鸣器将保持静音,绿色LED将被点亮。
这里使用的ESP模块将在IP地址创建一个网页,并将数据发送到该IP地址,然后在改网页显示数据。上传代码后,可以在串行监视器中看到此IP地址,如下所示。
当您在浏览器中键入此IP地址时,项目的输出将显示在网页中,如下图所示。
电路原理图 首先,将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。
代码说明 首先,添加软件serial库。serial库允许我们在Arduino的其他引脚上使用TX和RX通信,而不是仅使用默认的TX和RX引脚。然后我们定义了我们在Arduino上连接这些TX和RX引脚的位置。 - #include <SoftwareSerial.h>
- #define DEBUG true
- 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开发板的引脚。 - int red_led_pin = 9;
- int green_led_pin = 8;
- int buzzer_pin = 10;
- int smoke_sensor_pin = A0;
复制代码
在setup()函数中,首先,我们设置串行通信和wifi模块的波特率为9600。然后将LED引脚和蜂鸣器引脚设置为输出引脚,因为我们将这些引脚的输出提供给LED和蜂鸣器。 最后,我们将烟雾传感器引脚定义为输入,因为烟雾传感器引脚将从传感器接收输入并将其传送给Arduino。 - Serial.begin(9600);
- wifi_module.begin(9600); // Set the baudrate according to your esp8266
- pinMode(red_led_pin, OUTPUT);
- pinMode(green_led_pin, OUTPUT);
- pinMode(buzzer_pin, OUTPUT);
- pinMode(smoke_sensor_pin, INPUT);
复制代码以下代码将调用函数,并将在ESP提供的IP地址处设置服务器。 然后ESP将在此IP地址发送数据。 - esp8266_command("AT+RST\r\n",2000,DEBUG); // reset module
- esp8266_command("AT+CWMODE=2\r\n",1000,DEBUG); // configure as access point
- esp8266_command("AT+CIFSR\r\n",1000,DEBUG); // get ip address
- esp8266_command("AT+CIPMUX=1\r\n",1000,DEBUG); // configure for multiple connections
- esp8266_command("AT+CIPSERVER=1,80\r\n",1000,DEBUG); // turn on server on port 80
复制代码
在loop()函数中,我们从烟雾传感器读取值,然后应用一个条件,如果输出值大于400,则红色LED将亮起,蜂鸣器将开始发出蜂鸣声。 如果输出值小于400,则绿色LED指示灯将亮起,蜂鸣器将保持静音。 - int analogSensor = analogRead(smoke_sensor_pin);
- if (analogSensor > 400)
- {
- digitalWrite(red_led_pin, HIGH);
- digitalWrite(green_led_pin, LOW);
- tone(buzzer_pin, 1000, 200);
- }
复制代码
以下代码将在网页上打印输出数据。 首先,我们将在网页顶部打印“IoT Smoke detection system”。 然后在第二行,我们将打印输出烟雾值,在第三行,我们将根据条件打印“Everything Normal”或“DANGER! Move Somewhere Else“。 - String webpage = "<h1>IOT Smoke Detection System</h1>";
- webpage +="<p>Smoke Value is ";
- webpage += analogSensor;
- webpage +="</p>";
- if (analogSensor > 400)
- {
- webpage +="<h5>DANGER! Move Somewhere Else</h5>";
- }
- else
- {
- webpage +="<h4>Everything Normal</h4>";
- }
复制代码下面的代码将命令发送到ESP,并将在串口监视器上打印ESP的输出。 - String esp8266_command(String command, const int timeout, boolean debug)
- {
- String response = "";
- wifi_module.print(command);
- long int time = millis();
- while( (time+timeout) > millis())
- {
- while(wifi_module.available())
- {
-
- char c = wifi_module.read();
- response+=c;
- }
- }
复制代码
以上就是本文的全部内容,希望您能让它运转起来! 如果有任何疑问,欢迎在本帖下面进行回复。
代码 本篇文章的完整代码如下所示:
main.rar
(1.04 KB, 下载次数: 373)
|