风筝
发表于: 2020-4-20 21:14:16 | 显示全部楼层

在本篇文章中,我们将学习如何使用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气体传感器可以实现检测烟雾、苯、蒸汽和其他有害气体。它具有检测不同有害气体的潜力。它成本低廉,特别适合于空气质量监测应用。

MQ135-Gas-Smoke-Sensor.jpg


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。

2-1.jpg


设置Thingspeak和获取API密钥

1.  访问https://thingspeak.com/,并登陆账户。如果没有,请先创建一个帐户。


2.  创建一个新频道。输入频道的基本详细信息。然后向下滚动并保存频道。

Untitled-3.png


3.  然后转到API密钥,将此密钥复制并粘贴到单独的记事本文件中。稍后在编程时将需要它。


项目工作过程

在电路板上组装电路后,上传代码。

20190525_115719.jpg


上传完代码后,打开串口监视器以查看是否已连接wifi。 确保波特率应为115200。如果连接了wifi,则可以看到以百分比显示的气体浓度,数据将被发送到Thingspeak。

Screenshot-11.png


打开Thingspeak频道,然后选择公共/私人视图。 您可以在此处看到间隔为15秒后上传的数据。

Screenshot-10.png


源代码

以下是使用ESP8266和气体传感器MQ135通过Internet进行液位监测的程序。复制此代码并将其上传到Nodemcu。更改wifi ssid名称、密码和Thingspeak API密钥。

  1. #include <ESP8266WiFi.h>
  2. String apiKey = "SKP9YQY2CFVNK919"; // Enter your Write API key from ThingSpeak
  3. const char *ssid = "Alexahome"; // replace with your wifi ssid and wpa2 key
  4. const char *pass = "hngzhowxiantan";
  5. const char* server = "api.thingspeak.com";
  6. WiFiClient client;
  7. void setup()
  8. {
  9. Serial.begin(115200);
  10. delay(10);
  11. Serial.println("Connecting to ");
  12. Serial.println(ssid);
  13. WiFi.begin(ssid, pass);
  14. while (WiFi.status() != WL_CONNECTED)
  15. {
  16. delay(500);
  17. Serial.print(".");
  18. }
  19. Serial.println("");
  20. Serial.println("WiFi connected");
  21. }
  22. void loop()
  23. {
  24. float h = analogRead(A0);
  25. if (isnan(h))
  26. {
  27. Serial.println("Failed to read from MQ-5 sensor!");
  28. return;
  29. }

  30. if (client.connect(server, 80)) // "184.106.153.149" or api.thingspeak.com
  31. {
  32. String postStr = apiKey;
  33. postStr += "&field1=";
  34. postStr += String(h/1023*100);
  35. postStr += "r\n";
  36. client.print("POST /update HTTP/1.1\n");
  37. client.print("Host: api.thingspeak.com\n");
  38. client.print("Connection: close\n");
  39. client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
  40. client.print("Content-Type: application/x-www-form-urlencoded\n");
  41. client.print("Content-Length: ");
  42. client.print(postStr.length());
  43. client.print("\n\n");
  44. client.print(postStr);
  45. Serial.print("Gas Level: ");
  46. Serial.println(h/1023*100);
  47. Serial.println("Data Send to Thingspeak");
  48. }
  49. client.stop();
  50. Serial.println("Waiting...");

  51. // thingspeak needs minimum 15 sec delay between updates.
  52. delay(1500);
  53. }
复制代码

跳转到指定楼层
hjm641782007
发表于: 2020-12-12 19:46:47 | 显示全部楼层

WIFI名称和密码是指的哪个WIFI
回复

使用道具 举报

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

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-20 14:14 , Processed in 0.151063 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

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

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