Devices & Components
Arduino Nano
DHT11 Temperature & Humidity Sensor (3 pins)
0.96" i2c OLED display
Air Quality sensor (MQ135)
Hardware & Tools
3D Printer (generic)
Soldering iron (generic)
Software & Tools
Arduino IDE
Project description
Code
Arduino Air Quality Monitor
arduino
1#include <SPI.h> 2#include <Wire.h> 3#include <Adafruit_GFX.h> 4#include <Adafruit_SSD1306.h> 5#include <Fonts/FreeSans9pt7b.h> 6#include <Fonts/FreeMonoOblique9pt7b.h> 7#include <DHT.h> 8#define SCREEN_WIDTH 128 // OLED display width, in pixels 9#define SCREEN_HEIGHT 64 // OLED display height, in pixels 10 11#define OLED_RESET 4 // Reset pin # (or -1 if sharing Arduino reset pin) 12Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); 13 14#define sensor A0 15#define DHTPIN 2 // Digital pin 2 16#define DHTTYPE DHT11 // DHT 11 17 18int gasLevel = 0; //int variable for gas level 19String quality =""; 20DHT dht(DHTPIN, DHTTYPE); 21 22 23 24void sendSensor() 25{ 26 float h = dht.readHumidity(); 27 float t = dht.readTemperature(); 28 29 if (isnan(h) || isnan(t)) { 30 Serial.println("Failed to read from DHT sensor!"); 31 return; 32 } 33 display.setTextColor(WHITE); 34 display.setTextSize(1); 35 display.setFont(); 36 display.setCursor(0, 43); 37 display.println("Temp :"); 38 display.setCursor(80, 43); 39 display.println(t); 40 display.setCursor(114, 43); 41 display.println("C"); 42 display.setCursor(0, 56); 43 display.println("RH :"); 44 display.setCursor(80, 56); 45 display.println(h); 46 display.setCursor(114, 56); 47 display.println("%"); 48} 49 50void air_sensor() 51{ 52 gasLevel = analogRead(sensor); 53 54 if(gasLevel<181){ 55 quality = " GOOD!"; 56 } 57 else if (gasLevel >181 && gasLevel<225){ 58 quality = " Poor!"; 59 } 60 else if (gasLevel >225 && gasLevel<300){ 61 quality = "Very bad!"; 62 } 63 else if (gasLevel >300 && gasLevel<350){ 64 quality = "ur dead!"; 65 } 66 else{ 67 quality = " Toxic"; 68} 69 70 display.setTextColor(WHITE); 71 display.setTextSize(1); 72 display.setCursor(1,5); 73 display.setFont(); 74 display.println("Air Quality:"); 75 display.setTextSize(1); 76 display.setCursor(20,23); 77 display.setFont(&FreeMonoOblique9pt7b); 78 display.println(quality); 79} 80 81void setup() { 82 Serial.begin(9600); 83 pinMode(sensor,INPUT); 84 dht.begin(); 85 if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { // Address 0x3D for 128x64 86 Serial.println(F("SSD1306 allocation failed")); 87} 88 display.clearDisplay(); 89 display.setTextColor(WHITE); 90 91 display.setTextSize(2); 92 display.setCursor(50, 0); 93 display.println("Air"); 94 display.setTextSize(1); 95 display.setCursor(23, 20); 96 display.println("Qulaity monitor"); 97 display.display(); 98 delay(1200); 99 display.clearDisplay(); 100 101 display.setTextSize(2); 102 display.setCursor(20, 20); 103 display.println("BY Abid"); 104 display.display(); 105 delay(1000); 106 display.clearDisplay(); 107} 108 109void loop() { 110display.clearDisplay(); 111air_sensor(); 112sendSensor(); 113display.display(); 114} 115
Downloadable files
AirQuality.jpg
AirQuality.jpg

AirQuality.jpg
AirQuality.jpg

Documentation
BOX
This is a 3D enclosure I design for the project. But you don't need a 3d printer for build one, you can make your own enclosure with many thing like cardboard.
BOX
BOX
This is a 3D enclosure I design for the project. But you don't need a 3d printer for build one, you can make your own enclosure with many thing like cardboard.
BOX
Top
Top
Top
Top
Comments
Only logged in users can leave comments