UlfFrench prisoner illustration

Meshtastic & Home Automation

uffessmart.homes

Om SitenOm MigUffe på Discord

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.

DHT22ESP32
VCC3V3
DATAGPIO 4
GNDGND

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

  1. Välj rätt ESP32-kort och seriell port i Arduino IDE.
  2. Ladda upp skissen.
  3. Öppna Serial Monitor och välj 115200 baud.
  4. 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 DHTPIN matchar 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.