空气质量监测仪
Quote from Matoo robot on 2024年7月1日, am11:06DIY Arduino空气质量监测器可以测量周围的空气质量,还可以显示房间的温度和湿度。
应用和平台
Arduino IDE
项目介绍
M 任何时候,即使晚上睡个好觉,我们从床上醒来时也会感到非常虚弱。这种情况有时会发生,因为晚上封闭房间的空气质量很差。
这是一款低成本的空气质量监测仪,可以使用MQ135空气质量传感器监测房间的空气质量。它还使用 DHT11 测量室温和湿度,并在 OLED 显示屏上显示数据。这是一个有趣的小项目,也很有帮助。
布线
连接:
- Arduino D2 到 DHT11 输出
- Arduino A0 转 MQ135 Ao
- Arduino A5 转 Oled SCL
- Arduino A4 转 Oled SDA
编码
在编码部分,您需要安装一些库来运行代码
- Adafruit_SSD1306.h
- Adafruit_GFX.h
- DHT.h的
代码中有两个主要函数
sendSensor()
和air_sensor()
。在
air_sensor()
函数中,它从空气质量传感器gasLevel = analogRead(sensor)
中读取模拟值;并定义相应gasLevel
的质量。sendSensor() 函数使用 dht 库测量温度和湿度数据 ,并将其显示在 oled 上。在
air_sensor()
函数中,您可能需要庆祝传感器的gasLevel
值。对于该电源,将 5V 电压连接到 mq135 传感器,并在使用前将其置于清洁环境中至少 24 小时。这种传感器(燃烧)是必要的,因为传感器会受到污染。因此,燃烧有助于它自我清洁并提供更准确的结果。然后将传感器连接到您的电路并带着它走出去,并为您的位置调整正确的值。
代码
#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <Fonts/FreeSans9pt7b.h> #include <Fonts/FreeMonoOblique9pt7b.h> #include <DHT.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels #define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); #define sensor A0 #define DHTPIN 2 // Digital pin 2 #define DHTTYPE DHT11 // DHT 11 int gasLevel = 0; //int variable for gas level String quality =""; DHT dht(DHTPIN, DHTTYPE); void sendSensor() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } display.setTextColor(WHITE); display.setTextSize(1); display.setFont(); display.setCursor(0, 43); display.println("Temp :"); display.setCursor(80, 43); display.println(t); display.setCursor(114, 43); display.println("C"); display.setCursor(0, 56); display.println("RH :"); display.setCursor(80, 56); display.println(h); display.setCursor(114, 56); display.println("%"); } void air_sensor() { gasLevel = analogRead(sensor); if(gasLevel<181){ quality = " GOOD!"; } else if (gasLevel >181 && gasLevel<225){ quality = " Poor!"; } else if (gasLevel >225 && gasLevel<300){ quality = "Very bad!"; } else if (gasLevel >300 && gasLevel<350){ quality = "ur dead!"; } else{ quality = " Toxic"; } display.setTextColor(WHITE); display.setTextSize(1); display.setCursor(1,5); display.setFont(); display.println("Air Quality:"); display.setTextSize(1); display.setCursor(20,23); display.setFont(&FreeMonoOblique9pt7b); display.println(quality); } void setup() { Serial.begin(9600); pinMode(sensor,INPUT); dht.begin(); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { // Address 0x3D for 128x64 Serial.println(F("SSD1306 allocation failed")); } display.clearDisplay(); display.setTextColor(WHITE); display.setTextSize(2); display.setCursor(50, 0); display.println("Air"); display.setTextSize(1); display.setCursor(23, 20); display.println("Qulaity monitor"); display.display(); delay(1200); display.clearDisplay(); display.setTextSize(2); display.setCursor(20, 20); display.println("BY Abid"); display.display(); delay(1000); display.clearDisplay(); } void loop() { display.clearDisplay(); air_sensor(); sendSensor(); display.display(); }
DIY Arduino空气质量监测器可以测量周围的空气质量,还可以显示房间的温度和湿度。
应用和平台
Arduino IDE
项目介绍
M 任何时候,即使晚上睡个好觉,我们从床上醒来时也会感到非常虚弱。这种情况有时会发生,因为晚上封闭房间的空气质量很差。
这是一款低成本的空气质量监测仪,可以使用MQ135空气质量传感器监测房间的空气质量。它还使用 DHT11 测量室温和湿度,并在 OLED 显示屏上显示数据。这是一个有趣的小项目,也很有帮助。
布线
连接:
- Arduino D2 到 DHT11 输出
- Arduino A0 转 MQ135 Ao
- Arduino A5 转 Oled SCL
- Arduino A4 转 Oled SDA
编码
在编码部分,您需要安装一些库来运行代码
- Adafruit_SSD1306.h
- Adafruit_GFX.h
- DHT.h的
代码中有两个主要函数 sendSensor()
和 air_sensor()
。
在 air_sensor()
函数中,它从空气质量传感器 gasLevel = analogRead(sensor)
中读取模拟值;并定义相应 gasLevel
的质量。sendSensor() 函数使用 dht 库测量温度和湿度数据 ,并将其显示在 oled 上。
在 air_sensor()
函数中,您可能需要庆祝传感器的 gasLevel
值。对于该电源,将 5V 电压连接到 mq135 传感器,并在使用前将其置于清洁环境中至少 24 小时。这种传感器(燃烧)是必要的,因为传感器会受到污染。因此,燃烧有助于它自我清洁并提供更准确的结果。
然后将传感器连接到您的电路并带着它走出去,并为您的位置调整正确的值。
代码
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
#include <Fonts/FreeMonoOblique9pt7b.h>
#include <DHT.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define sensor A0
#define DHTPIN 2 // Digital pin 2
#define DHTTYPE DHT11 // DHT 11
int gasLevel = 0; //int variable for gas level
String quality ="";
DHT dht(DHTPIN, DHTTYPE);
void sendSensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
display.setTextColor(WHITE);
display.setTextSize(1);
display.setFont();
display.setCursor(0, 43);
display.println("Temp :");
display.setCursor(80, 43);
display.println(t);
display.setCursor(114, 43);
display.println("C");
display.setCursor(0, 56);
display.println("RH :");
display.setCursor(80, 56);
display.println(h);
display.setCursor(114, 56);
display.println("%");
}
void air_sensor()
{
gasLevel = analogRead(sensor);
if(gasLevel<181){
quality = " GOOD!";
}
else if (gasLevel >181 && gasLevel<225){
quality = " Poor!";
}
else if (gasLevel >225 && gasLevel<300){
quality = "Very bad!";
}
else if (gasLevel >300 && gasLevel<350){
quality = "ur dead!";
}
else{
quality = " Toxic";
}
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(1,5);
display.setFont();
display.println("Air Quality:");
display.setTextSize(1);
display.setCursor(20,23);
display.setFont(&FreeMonoOblique9pt7b);
display.println(quality);
}
void setup() {
Serial.begin(9600);
pinMode(sensor,INPUT);
dht.begin();
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
}
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(50, 0);
display.println("Air");
display.setTextSize(1);
display.setCursor(23, 20);
display.println("Qulaity monitor");
display.display();
delay(1200);
display.clearDisplay();
display.setTextSize(2);
display.setCursor(20, 20);
display.println("BY Abid");
display.display();
delay(1000);
display.clearDisplay();
}
void loop() {
display.clearDisplay();
air_sensor();
sendSensor();
display.display();
}