Il monitoraggio delle condizioni ambientali come la temperatura e l'umidità è essenziale per varie applicazioni, dall'automazione domestica alla gestione delle serre. Con la versatile piattaforma Arduino e sensori come DHT11 o DHT22, la creazione di un monitor di temperatura e umidità affidabile è sia conveniente che semplice. In questa guida, ti guideremo attraverso i componenti necessari, il processo di configurazione e la codifica necessaria per dare vita al monitor.
Componenti di cui hai bisogno
- Arduino Uno
- Sensore DHT11 o DHT22
- Resistenza da 10k ohm
- Breadboard e fili jumper
- Display LCD (opzionale)
- Cavo USB
Comprensione dei sensori DHT11/DHT22
Il DHT11 e il DHT22 sono sensori popolari per misurare la temperatura e l'umidità. Il DHT11 è conveniente e adatto per applicazioni di base, offrendo un intervallo di temperatura di 0-50 ° C con intervallo di precisione e umidità di ± 2 ° C del 20-80% con precisione ± 5%. Il DHT22, d'altra parte, fornisce un intervallo di temperatura più ampio da -40 a 80 ° C con ± 0,5 ° C di accuratezza e umidità dell'intervallo dello 0-100% con una precisione ± 2-5%, rendendolo ideale per progetti più impegnativi.
Cablaggio del sensore ad Arduino
Segui questi passaggi per collegare il sensore DHT all'Arduino:
- Connessioni di alimentazione: Collegare il pin VCC del sensore DHT al pin 5V sull'Arduino e sul perno GND a terra (GND).
- Pin di dati: Collegare il pin di dati del sensore DHT a un perno di ingresso digitale sull'Arduino (comunemente pin 2).
- Resistore pull-up: Posizionare un resistore da 10k ohm tra il VCC e il pin di dati per garantire una trasmissione di dati stabile.
- Display LCD (opzionale): Se si utilizza un LCD, collegarlo ai pin Arduino appropriati per la visualizzazione delle letture.
Programmazione dell'Arduino
Per leggere i dati dal sensore DHT, useremo il DHT.h
Biblioteca, che semplifica il processo. Di seguito è riportato uno snippet di codice di esempio per iniziare:
// Include the DHT library
#include <DHT.h>
// Define the sensor type and the pin it's connected to
#define DHTPIN 2
#define DHTTYPE DHT22 // Change to DHT11 if you're using that model
// Initialize the DHT sensor
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// Start serial communication
Serial.begin(9600);
// Initialize the DHT sensor
dht.begin();
}
void loop() {
// Wait a few seconds between measurements
delay(2000);
// Read humidity and temperature
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Check if any reads failed
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// Print the results to the Serial Monitor
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
}
Spiegazione del codice:
- IL
DHT.h
La libreria è inclusa per facilitare la comunicazione con il sensore. - Definiamo il tipi di pin e sensore di dati utilizzando
#define
. - Nel
setup()
funzione, inizializziamo la comunicazione seriale e il sensore DHT. - IL
loop()
La funzione legge l'umidità e la temperatura ogni due secondi e li stampa sul monitor seriale.
Visualizzazione dei dati
Per una configurazione più user-friendly, è possibile visualizzare le letture su un LCD. Modifica il codice per inviare dati al LCD anziché al monitor seriale. Assicurati di avere la libreria LCD appropriata installata e configurare i pin di conseguenza.
Codice di esempio per la visualizzazione LCD:
// Include necessary libraries
#include <DHT.h>
#include <LiquidCrystal.h>
// Define sensor and LCD pins
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Initialize the LCD (adjust pin numbers as needed)
LiquidCrystal lcd(12, 11, 5, 4, 3, 6);
void setup() {
// Start serial communication
Serial.begin(9600);
dht.begin();
// Initialize the LCD
lcd.begin(16, 2);
lcd.print("Temp & Humidity");
}
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
lcd.clear();
lcd.print("Sensor Error");
return;
}
// Display on LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humidity: ");
lcd.print(humidity);
lcd.print(" %");
}
Testare la configurazione
Dopo aver caricato il codice sul tuo Arduino, aprire il monitor seriale (se si utilizza l'uscita seriale) o osservare il display LCD. Dovresti vedere letture di temperatura e umidità in tempo reale. Assicurati che le connessioni siano sicure e che il sensore funzioni correttamente. Se si incontrano problemi, ricontrollare il cablaggio e verificare che il tipo di sensore corretto sia definito nel codice.
Miglioramenti e passaggi successivi
Ora che hai un monitor di temperatura e umidità di base, considera i seguenti miglioramenti:
- Registrazione dei dati: Collega il tuo Arduino a un modulo di scheda SD per registrare i dati nel tempo per l'analisi.
- Monitoraggio wireless: Utilizzare moduli come ESP8266 o Bluetooth per inviare dati allo smartphone o ai servizi cloud.
- Avvisi: Implementa gli avvisi basati sulla soglia che utilizzano LED o cicalini per avvisare condizioni estreme.
- Sensori multipli: Espandi la configurazione per includere ulteriori sensori per parametri come la qualità dell'aria o l'intensità della luce.
Conclusione
Costruire un monitor di temperatura e umidità con DHT11/DHT22 e Arduino è un progetto eccellente per principianti e appassionati. Fornisce esperienza pratica con integrazione del sensore, elaborazione dei dati e tecniche di visualizzazione. Per uso personale o come base per sistemi più complessi, questo progetto mostra la potenza e la flessibilità dell'ecosistema Arduino. Felice edificio!