Arduino stazione di analisi della qualità dell’aria

Questo vuole essere un progetto per realizzare una completa stazione di analisi dell’aria a basso costo. Il progetto è in continua evoluzione. In questa prima versione ho aggiunto sensori per controllare la temperature, l’umidità, l’inquinamento acustico e gas nocivi quali, metano, butano etc.. Ho aggiunto anche un modulo per avere date e ora.

Schema elettrico:

Arduino stazione di analisi della qualità dell'aria

Codice:

// Stazione Analisi Aria ver. 1.0 by Paolo Tuttoilmondo

#include <dht11.h> //Libreria sensore temperatura e umidità
#include <LiquidCrystal_I2C.h> //Libreria display 16×2
#include <DS1302.h> //Libreria orologio

//VARIABILI
int IniTempVariable = 0; // Viaribile temperatura iniziale
int IniUmiVariable = 0; // Viaribile unidità iniziale
//int PostTempVariable = 0; // Viaribile temperatura per rilevare eventuali variazioni
//int PostUmiVariable = 0; // Viaribile umidità per rilevare eventuali variazioni
int Annuncio = 0; // Variabile per nascondere annuncio iniziale
int threshold = 500; // Variabile che imposta la soglia per il calcolo dell’inquinamento acustico
int volume; // Variabile volume per la sezione inquinamento acustico

//IMPOSTAZIONE PIN
int buzzerPin = 9; // Pin Digitale 9 per il Buzzer
const int sensorPin= 1; // Pin Analogico 1 per MQ-2
#define SCK_PIN 2 // Pin Digitale 2 per l’orologio SCK
#define IO_PIN 3 // Pin Digitale 3 per l’orologio I/O
#define RST_PIN 4 // Pin Digitale 4 per l’orologio RST
#define DHT11_PIN 7 // Pin Digitale 7 per il DHT-11 Temperaturà e Umidità

//INIZIALIZZAZIONE SENSORI
dht11 DHT11; // Inizializzazione DHT-11 Temperaturà e Umidità
LiquidCrystal_I2C lcd(0x27,16,2); // Inizializzazione Display
DS1302 rtc(RST_PIN, IO_PIN, SCK_PIN); // Inizializazione libreria orologgio
int smoke_level; // Inizializzazione MQ-2 Sensore fumi
void setup(){
lcd.init(); // Avvio lcd
pinMode(buzzerPin,OUTPUT); // Impostazione Buzzer
//Serial.begin(9600); // For debugging

// Configura Chip Orologgio
rtc.halt(false);
// Viene disattiva la protezione alla scrittura
rtc.writeProtect(false);
pinMode(sensorPin, INPUT);//the smoke sensor will be an input to the arduino
pinMode(buzzerPin, OUTPUT);//the buzzer serves an output in the circuit
}
lcd.backlight(); //Accensione Display
lcd.init();
lcd.setCursor(0,0);
lcd.print(“Analiz. Aria di”);
lcd.setCursor(0,1);
lcd.print(“P. Tuttoilmondo”);
delay(1000);
void loop()
{
//lcd.backlight(); //Accensione Display
delay(1000);
volume = analogRead(A0);
int chk = DHT11.read(DHT11_PIN);
smoke_level= analogRead(sensorPin);
if(smoke_level > 100){
digitalWrite(buzzerPin, HIGH);
}
if(smoke_level < 100){
digitalWrite(buzzerPin, LOW);
}

lcd.init();
lcd.setCursor(0,0);
lcd.print(rtc.getDOWStr());
lcd.setCursor(0,1);
lcd.print(rtc.getDateStr());
lcd.print(” “);
lcd.print(rtc.getTimeStr());
lcd.init();
lcd.setCursor(0,0);
lcd.print(“Temp. “);
lcd.print((char)223);
lcd.print(“C = “);
lcd.print(DHT11.temperature);
lcd.setCursor(0,1);
lcd.print(“Umidita’ % = “);
lcd.print(DHT11.humidity);
lcd.init();
lcd.setCursor(0,0);
lcd.print(“Rumore DB: “);
lcd.print(volume);
if(volume>=threshold){
lcd.setCursor(0,1);
lcd.print(“Inq. Acus. ALTO”);
}
else{
lcd.setCursor(0,1);
lcd.print(“Inq. Acus. BASSO”);
}
lcd.init();
if(smoke_level < 100){
lcd.setCursor(0,0);
lcd.print(“Livello Gas: “);
lcd.print(smoke_level);
lcd.setCursor(0,1);
lcd.print(“Nessun GAS”);
}
if(smoke_level > 100){
lcd.setCursor(0,0);
lcd.print(“Livello Gas: “);
lcd.print(smoke_level);
lcd.setCursor(0,1);
lcd.print(“Attenzione GAS”);
}
delay(2000);
}

Statistiche