|
在本篇文章中,我们将学习如何使用ESP8266和气体传感器模块(MQ-135)通过Internet实现远程气体浓度监测。我们将以百分比形式测量气体含量,并使用Thingspeak服务器通过Internet发送。使用此系统,可以远程监视数据,这些数据可以保存在世界任何地方。我们只需要直接将的MQ3/MQ5/MQ7/MQ135等气体传感器连接到Nodemcu ESP8266-12E模块即可。
ThingSpeak是一个开源的物联网(IoT)应用程序和API,可通过Internet或通过局域网使用HTTP协议来存储和检索来自物联网的数据。
所需的组件 以下是本文所需的组件: ● NodeMCU ESP8266 12E开发板 ● MQ-135气体传感器模块 ● 面包板 ● 连接线
MQ-135气体传感器 MQ-135气体传感器可感应诸如氨氮、氧气、酒精、芳族化合物、硫化物和烟雾之类的气体。 MQ-3气体传感器具有较低的电导率,可以清洁作为气体传感材料的空气。在大气中我们可以找到污染气体,但是气体传感器的电导率随着污染气体浓度的增加而增加。 MQ-135气体传感器可以实现检测烟雾、苯、蒸汽和其他有害气体。它具有检测不同有害气体的潜力。它成本低廉,特别适合于空气质量监测应用。
MQ-135传感器是低电平输出有效。它具有两个输出方式:模拟输出和TTL输出。 TTL输出是低电平,可以通过微控制器上的IO端口进行访问。模拟输出是浓度,即电压增加与浓度成正比。该传感器寿命长,稳定性也好。
主要特征 ● 灵敏度高 ● 对氨、硫化物和苯有高敏感性 ● 寿命长 ● 检测范围:10 – 300 ppm NH3、10 – 1000 ppm苯,10 – 300酒精 ● 加热器电压:5.0V ● 尺寸:直径18mm,高17mm,引脚6mm ● 长寿命和低成本
连接电路图 按照下面的电路图进行连接。将MQ135的VCC引脚连接至NodeMCU的Vin,并将GND连接至GND。将MQ135的模拟引脚A0连接到NodeMCU的模拟引脚A0。
设置Thingspeak和获取API密钥 1. 访问https://thingspeak.com/,并登陆账户。如果没有,请先创建一个帐户。
2. 创建一个新频道。输入频道的基本详细信息。然后向下滚动并保存频道。
3. 然后转到API密钥,将此密钥复制并粘贴到单独的记事本文件中。稍后在编程时将需要它。
项目工作过程 在电路板上组装电路后,上传代码。
上传完代码后,打开串口监视器以查看是否已连接wifi。 确保波特率应为115200。如果连接了wifi,则可以看到以百分比显示的气体浓度,数据将被发送到Thingspeak。
打开Thingspeak频道,然后选择公共/私人视图。 您可以在此处看到间隔为15秒后上传的数据。
源代码 以下是使用ESP8266和气体传感器MQ135通过Internet进行液位监测的程序。复制此代码并将其上传到Nodemcu。更改wifi ssid名称、密码和Thingspeak API密钥。 - #include <ESP8266WiFi.h>
- String apiKey = "SKP9YQY2CFVNK919"; // Enter your Write API key from ThingSpeak
- const char *ssid = "Alexahome"; // replace with your wifi ssid and wpa2 key
- const char *pass = "hngzhowxiantan";
- const char* server = "api.thingspeak.com";
- WiFiClient client;
- void setup()
- {
- Serial.begin(115200);
- delay(10);
- Serial.println("Connecting to ");
- Serial.println(ssid);
- WiFi.begin(ssid, pass);
- while (WiFi.status() != WL_CONNECTED)
- {
- delay(500);
- Serial.print(".");
- }
- Serial.println("");
- Serial.println("WiFi connected");
- }
- void loop()
- {
- float h = analogRead(A0);
- if (isnan(h))
- {
- Serial.println("Failed to read from MQ-5 sensor!");
- return;
- }
- if (client.connect(server, 80)) // "184.106.153.149" or api.thingspeak.com
- {
- String postStr = apiKey;
- postStr += "&field1=";
- postStr += String(h/1023*100);
- postStr += "r\n";
- client.print("POST /update HTTP/1.1\n");
- client.print("Host: api.thingspeak.com\n");
- client.print("Connection: close\n");
- client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
- client.print("Content-Type: application/x-www-form-urlencoded\n");
- client.print("Content-Length: ");
- client.print(postStr.length());
- client.print("\n\n");
- client.print(postStr);
- Serial.print("Gas Level: ");
- Serial.println(h/1023*100);
- Serial.println("Data Send to Thingspeak");
- }
- client.stop();
- Serial.println("Waiting...");
- // thingspeak needs minimum 15 sec delay between updates.
- delay(1500);
- }
复制代码
|