本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」
本文主要介绍使用MQ系列传感器、Dht - 11传感器和 Arduino的大气气体分析仪,该设计使用传感器模拟读取并在I2C液晶显示器中精确测量数据,传感器可以给出LPG 、CNG 、HYDROGEN 、AIR 的值-质量 。还可以简单地添加一个SD卡来存储数据。
硬件部件:
软件应用程序:
电路图:
代码:
/*随时联系
* sreeramaj53@gmail.com
* www.youtube.com/ZenoModiff
* 最后更新 - 时间 09:05 PM - 日期 2021 年 5 月 20 日
* Github 链接:-- https://github.com/Zenomodiff/Atmosphere-Gas-Ananlyser-With-MQ-Series-Sensors-Dht-11
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#define DHTPIN 13
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int mq2 = A0;
const int mq4 = A1;
const int mq5 = A2;
const int mq135 = A3;
float m = -0.6527;
float b = 1.30;
float R0 = 21.91;
void setup() {
lcd.begin();
lcd.backlight();
lcd.print("Atmosphere");
lcd.setCursor(0,3);
lcd.print("Gas Analyser");
delay (3000);
lcd.clear();
lcd.print("By");
lcd.setCursor(0,3);
lcd.print("Zeno Modiff");
delay (3000);
lcd.clear();
pinMode(mq4, INPUT);
pinMode(mq135, INPUT);
pinMode(mq5, INPUT);
pinMode(mq2, INPUT);
Serial.begin(9600);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
}
double mq4_value = analogToPPM(analogRead(mq4));
double mq135_value = analogToPPM(analogRead(mq135));
double mq5_value = analogToPPM(analogRead(mq5));
double mq2_value = analogToPPM(analogRead(mq2));
Serial.println("************************************");
Serial.print("MQ-4 Value: ");Serial.print(mq4_value, DEC);Serial.println(" PPM");
Serial.print("MQ-135 Value: ");Serial.print(mq135_value, DEC);Serial.println(" PPM");
Serial.print("MQ-5 Value: ");Serial.print(mq5_value, DEC);Serial.println(" PPM");
Serial.print("MQ-2 Value: ");Serial.print(mq2_value, DEC);Serial.println(" PPM");
Serial.print("DHT-Temp: ");Serial.print(t);Serial.println(" c");
Serial.print("DHT-Humi: ");Serial.print(h);Serial.println(" %");
Serial.println("************************************\n\n");
lcd.setCursor(0,0);
lcd.print("CNG Value");
lcd.setCursor(0,3);
lcd.println(mq4_value);
lcd.setCursor(7,7);
lcd.print("PPM");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("AQI Value");
lcd.setCursor(0,3);
lcd.println(mq135_value);
lcd.setCursor(7,7);
lcd.print("PPM");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LNG");
lcd.setCursor(0,3);
lcd.println(mq5_value);
lcd.setCursor(7,7);
lcd.print("PPM");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("SMOKE");
lcd.setCursor(0,3);
lcd.println(mq2_value);
lcd.setCursor(7,7);
lcd.print("PPM");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("DHT-11");
lcd.setCursor(0,3);
lcd.print("Temp -");
lcd.setCursor(7,4);
lcd.println(t);
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("DHT-11");
lcd.setCursor(0,3);
lcd.print("Humi -");
lcd.setCursor(7,4);
lcd.println(h);
delay(3000);
lcd.clear();
}
double analogToPPM(int aValue) {
float sensor_volt;
float RS_gas;
float ratio;
int sensorValue = aValue;
sensor_volt = sensorValue*(5.0/1023.0);
RS_gas = ((5.0*10.0)/sensor_volt)-10.0;
ratio = RS_gas/R0;
double ppm_log = (log10(ratio)-b)/m;
return ppm_log;
}
开启“人工智能”——贝尔金WeMo智能插座套装拆解
2014-05-23
iPhone 6 plus最专业传感器深入解析
2014-10-22
智能手机里面都装着哪些传感器?它们都记录了你的什么?
2016-04-11
NXP开发板不知道选什么,看这里就对了!
2016-07-28
盘点全球知名传感器芯片巨头Top10
2015-08-21
如何将按钮与 Arduino 连接起?
2021-07-13
基于树莓派和Arduino打造的PLC EtherCAT电路设计
2020-02-25
入门指南:TFT彩色显示屏,带Arduino和ESP8266
2020-04-23
Arduino最小系统板设计PCB板及原理图
2020-01-17
带有Arduino和ESP32的实时时钟
2020-04-17
讨论