Mät temperatur och luftfuktighet med ESP32 och DHT22
I det här projektet läser en ESP32 av temperatur och relativ luftfuktighet från en DHT22 och visar mätvärdena i den seriella monitorn.
Du behöver
- Ett ESP32-utvecklingskort
- En DHT22-sensor (lös sensor eller modul)
- Exempelbild på DHT22-sensor
- Kopplingskablar och en kopplingsbräda
- En USB-kabel med dataöverföring
- Arduino IDE med ESP32-stöd installerat
Koppla sensorn
Anslut sensorn till ESP32 enligt tabellen. Kontrollera märkningen på just din sensor eller modul, eftersom benordningen kan variera mellan olika modeller.
| DHT22 | ESP32 |
|---|---|
| VCC | 3V3 |
| DATA | GPIO 4 |
| GND | GND |
På en lös DHT22-sensor (inte en modul) behövs normalt ett pull-up-motstånd på 4,7–10 kΩ mellan DATA och 3V3. Många färdiga moduler har redan motståndet monterat. Mata sensorn med 3,3 V så att datasignalen är säker för ESP32:s GPIO-ingång.
Installera biblioteket
I Arduino IDE:s bibliotekshanterare installerar du DHT sensor library by Adafruit. Installera även Adafruit Unified Sensor om Arduino IDE ber om det.
Program
Skapa en ny skiss och ladda upp koden. Om du ansluter DATA till en annan pinne ändrar du DHTPIN så att den stämmer med kopplingen.
#include <DHT.h>
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
Serial.println("DHT22 startad");
}
void loop() {
delay(2000);
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Kunde inte lasa fran DHT22. Kontrollera kopplingen.");
return;
}
Serial.print("Temperatur: ");
Serial.print(temperature, 1);
Serial.print(" °C Luftfuktighet: ");
Serial.print(humidity, 1);
Serial.println(" %");
}
Ladda upp och läs av värdena
- Välj rätt ESP32-kort och seriell port i Arduino IDE.
- Ladda upp skissen.
- Öppna Serial Monitor och välj 115200 baud.
- Temperatur och luftfuktighet visas ungefär varannan sekund.
Exempel:
Temperatur: 21.8 °C Luftfuktighet: 46.2 %
Felsökning
- Felmeddelandet visas: kontrollera VCC, GND och DATA samt att
DHTPINmatchar den använda GPIO-pinnen. - Värdena är orimliga eller saknas: kontrollera sensorns benordning och att ett pull-up-motstånd finns om du använder en lös sensor.
- Tecken visas fel i Serial Monitor: välj 115200 baud.
- Upprepade läsfel: DHT22 ska inte läsas oftare än ungefär en gång varannan sekund.
