Môj profil
Kategórie produktov

Wemos mini shield senzor teploty a vlhkosti DHT11

2.20 (bez DPH 1.79 )

Miniatúrny shield dizajnovaný pre WEMOS mini ESP12 a ESP32 vývojové dosky

43 na sklade

Skladom 43 ks

Popis

Miniatúrny shield dizajnovaný pre wifi a bluetooth moduly WEMOS mini ESP12 a ESP32 vývojové dosky, ktoré môžete nájsť aj v našej ponuke. V katalógu máme zaradené aj iné wemos mini shiedy. Pre viac kód a knižnice odporúčame preštudovať GIT.

Senzor je veľmi jednoduchý a nie je určený pre reálne aplikácie. Odporúčame ho skôr pre zoznámenie sa s fungovaním WEMOS MINI modulov. Pre presnejší senzor s väčším rozsahom odporúčame DHT22. Pre detailnejšie informácie odporúčame preštudovať datasheet alebo prejdite na GitHub. Dátový pin senzora je pripojený na pin D4.

Špecifikácie:
Meranie vlhkosti: 20% – 90% RH, ±5% RH
Meranie teploty: 0 ~ 50 °C, ±2°C
Operačné napätie: 3.3V ~ 5V

Ďalšie informácie

Hmotnosť 8 g
Návrhy na tutoriál

A) https://diyprojects.io/shield-wemos-d1-mini-dht11-dht22-arduino-code-esp-easy/#.XwbudigzZ3g

Návod

Ako použiť Wemos mini shield DHT11 na meranie teploty a vlhkosti

V tomto návode si ukážeme jednoduché meranie teploty a vlhkosti pomocou vývojovej dosky ESP12-F Wemos D1 mini a Wemos mini shieldu so senzorom DHT11. Ide o praktický projekt vhodný pre začiatočníkov, ktorí si chcú vyskúšať prácu so senzorom, Arduino IDE a základmi IoT merania.

Výhodou shieldu je, že senzor nemusíte zapájať pomocou samostatných vodičov. Shield sa nasadí na Wemos mini dosku a v programe stačí použiť správny pin a knižnicu.

Najskôr si hodnoty zobrazíme v Serial Monitore. Potom projekt rozšírime aj o odosielanie nameraných údajov na platformu ThingSpeak, kde sa budú zobrazovať v online grafoch.

Čo budeme v návode robiť?

Cieľom návodu je rozbehnúť jednoduché meranie teploty a vlhkosti vzduchu. Projekt si rozdelíme na dve časti.

  1. Najprv otestujeme DHT11 shield a zobrazíme hodnoty v Serial Monitore v Arduino IDE.
  2. Potom hodnoty odošleme cez WiFi na ThingSpeak, kde si ich môžeme pozrieť v grafoch.

Po úspešnom otestovaní sa dá projekt ďalej rozšíriť napríklad o displej, Home Assistant alebo jednoduchú domácu meteostanicu.

Potrebné komponenty

DHT11 shield je miniatúrna nadstavba pre Wemos mini dosky. Senzor je určený na jednoduché meranie teploty a vlhkosti vzduchu. Pri tomto shielde je dátový pin senzora pripojený na pin D4.

Poznámka: DHT11 je jednoduchý senzor vhodný najmä na učenie, testovanie a nenáročné projekty. Ak potrebujete presnejšie meranie alebo širší rozsah, vhodnejšou voľbou môže byť senzor DHT22.

Čo je DHT11 shield?

DHT11 shield slúži na meranie teploty a vlhkosti vzduchu. Keďže ide o shield, nie je potrebné zapájať senzor cez samostatné prepojovacie vodiče ako pri bežnom DHT11 module.

Shield sa jednoducho nasadí na Wemos mini dosku. Vďaka tomu je zapojenie prehľadnejšie a vhodné aj pre začiatočníkov.

Základné parametre DHT11 shieldu:

  • meranie teploty: 0 až 50 °C, presnosť približne ±2 °C,
  • meranie vlhkosti: 20 až 90 % RH, presnosť približne ±5 % RH,
  • operačné napätie: 3,3 V až 5 V,
  • dátový pin: D4.

Zapojenie

Zapojenie je pri tomto shielde veľmi jednoduché.

  1. Skontrolujte orientáciu pinov na Wemos mini doske a DHT11 shielde.
  2. Nasaďte DHT11 shield na Wemos mini dosku.
  3. Pripojte Wemos mini k počítaču pomocou USB kábla.
  4. Otvorte Arduino IDE.

Keďže dátový pin senzora je na shielde pripojený na D4, budeme tento pin používať aj v programe.

Príprava Arduino IDE

Pred nahratím programu je potrebné mať pripravené Arduino IDE a podporu pre Wemos mini dosku.

1. Výber dosky

V Arduino IDE vyberte správnu dosku podľa použitého modelu. Pri Wemos mini doskách sa najčastejšie používa doska z rodiny ESP8266.

Ak ešte nemáte v Arduino IDE pridanú podporu pre ESP8266 dosky, bude potrebné ju najskôr doplniť cez správcu dosiek.

Postup môže byť napríklad takýto:

  1. Otvorte File → Preferences.
  2. Do poľa Additional Boards Manager URLs vložte adresu pre ESP8266 dosky. (https://arduino.esp8266.com/stable/package_esp8266com_index.json)
  3. Otvorte Tools → Board → Boards Manager.
  4. Vyhľadajte ESP8266 a nainštalujte podporu dosiek.
  5. Potom vyberte vhodnú dosku pre Wemos D1 mini.

2. Výber portu

Po pripojení dosky cez USB vyberte správny port:

Tools → Port

Ak port nevidíte, skontrolujte USB kábel. Niektoré USB káble slúžia iba na nabíjanie a neprenášajú dáta. Pri niektorých doskách môže byť potrebné mať nainštalovaný aj ovládač pre použitý USB prevodník.

Inštalácia knižníc

Na komunikáciu so senzorom DHT11 použijeme knižnicu pre DHT senzory.

  1. V Arduino IDE otvorte Sketch → Include Library → Manage Libraries.
  2. Do vyhľadávania napíšte DHT sensor library.
  3. Nainštalujte knižnicu DHT sensor library od Adafruit.
  4. Následne vyhľadajte Adafruit Unified Sensor.
  5. Nainštalujte aj túto podpornú knižnicu.

Knižnica DHT sensor library zabezpečí komunikáciu so senzorom DHT11. Knižnica Adafruit Unified Sensor je podporná knižnica, ktorú DHT knižnica často vyžaduje.

Testovací kód pre Serial Monitor

Najskôr si overíme, či senzor funguje lokálne. Nasledujúci kód načíta teplotu a vlhkosť zo senzora DHT11 a zobrazí ich v Serial Monitore.

/*
* NÁVOD - Meranie teploty a vlhkosti pomocou DHT11 shieldu
* Techfun.sk
*
* V tomto príklade načítame teplotu a vlhkosť zo senzora DHT11
* a zobrazíme ich v Serial Monitore.
*/

#include <DHT.h>

#define DHTPIN D4
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();

  Serial.println("Test DHT11 shieldu");
}

void loop() {
  float vlhkost = dht.readHumidity();
  float teplota = dht.readTemperature();

  if (isnan(vlhkost) || isnan(teplota)) {
    Serial.println("Nepodarilo sa nacitat data zo senzora DHT11.");
    delay(2000);
    return;
  }

  Serial.print("Teplota: ");
  Serial.print(teplota);
  Serial.print(" °C  |  Vlhkost: ");
  Serial.print(vlhkost);
  Serial.println(" %");

  delay(2000);
}

Vysvetlenie kódu

Na začiatku programu pripojíme knižnicu:

#include <DHT.h>

Potom nastavíme pin, na ktorom je senzor pripojený:

#define DHTPIN D4

Následne nastavíme typ senzora:

#define DHTTYPE DHT11

V časti setup() sa spustí sériová komunikácia a inicializuje sa senzor:

Serial.begin(115200);
dht.begin();

V hlavnej slučke loop() sa načítava vlhkosť a teplota:

float vlhkost = dht.readHumidity();
float teplota = dht.readTemperature();

Ak sa hodnoty nepodarí načítať, program vypíše chybovú hlášku. Ak je všetko v poriadku, hodnoty sa zobrazia v Serial Monitore.

Nahratie programu do dosky

  1. Pripojte Wemos mini k počítaču cez USB kábel.
  2. V Arduino IDE vyberte správnu dosku.
  3. Vyberte správny port.
  4. Kliknite na tlačidlo Upload.
  5. Po nahratí otvorte Serial Monitor.
  6. Nastavte rýchlosť 115200 baud.

Ak je všetko správne zapojené a knižnice sú nainštalované, v Serial Monitore by sa mali pravidelne zobrazovať hodnoty teploty a vlhkosti.

Odosielanie nameraných hodnôt na ThingSpeak

Keď už máme meranie teploty a vlhkosti funkčné v Serial Monitore, môžeme projekt posunúť ďalej a odosielať hodnoty na online službu ThingSpeak.

ThingSpeak je IoT platforma od MathWorks, ktorá umožňuje ukladať dáta zo zariadení, zobrazovať ich v grafoch a neskôr s nimi ďalej pracovať. Pri tomto projekte môžeme do jedného kanála odosielať napríklad:

  • Field 1: teplota,
  • Field 2: vlhkosť.

Vytvorenie kanála na ThingSpeak

  1. Otvorte stránku thingspeak.mathworks.com.
  2. Prihláste sa alebo si vytvorte účet.
  3. Vytvorte nový kanál cez Channels → My Channels → New Channel.
  4. Pomenujte si kanál napríklad Wemos DHT11 meranie.
  5. Zapnite Field 1 a pomenujte ho Teplota.
  6. Zapnite Field 2 a pomenujte ho Vlhkosť.
  7. Kanál uložte.

Na zapisovanie dát do kanála budete potrebovať Write API Key. Nájdete ho v detaile kanála v záložke API Keys. Tento kľúč je potrebný na odosielanie hodnôt do vášho kanála.

Poznámka: API kľúč nezverejňujte. V ukážkovom kóde ho nahraďte vlastným kľúčom z vášho ThingSpeak účtu.

Kód pre odosielanie dát na ThingSpeak

Nasledujúci kód načíta teplotu a vlhkosť zo senzora DHT11 a odošle ich na ThingSpeak.

/*
* NÁVOD - Odosielanie teploty a vlhkosti na ThingSpeak
* Techfun.sk
*
* V tomto príklade načítame hodnoty zo senzora DHT11
* a odošleme ich cez WiFi na platformu ThingSpeak.
*/

#include <ESP8266WiFi.h>
#include <DHT.h>

#define DHTPIN D4
#define DHTTYPE DHT11

const char* ssid = "NAZOV_WIFI";
const char* password = "HESLO_WIFI";

const char* server = "api.thingspeak.com";
String apiKey = "VAS_WRITE_API_KEY";

DHT dht(DHTPIN, DHTTYPE);
WiFiClient client;

void setup() {
  Serial.begin(115200);
  dht.begin();

  Serial.println("Pripajam sa na WiFi...");
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println();
  Serial.println("WiFi pripojene.");
}

void loop() {
  float vlhkost = dht.readHumidity();
  float teplota = dht.readTemperature();

  if (isnan(vlhkost) || isnan(teplota)) {
    Serial.println("Nepodarilo sa nacitat data zo senzora DHT11.");
    delay(2000);
    return;
  }

  if (client.connect(server, 80)) {
    String url = "/update?api_key=" + apiKey +
                 "&field1=" + String(teplota) +
                 "&field2=" + String(vlhkost);

    client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                 "Host: " + server + "\r\n" +
                 "Connection: close\r\n\r\n");

    Serial.print("Odoslane na ThingSpeak: ");
    Serial.print("Teplota ");
    Serial.print(teplota);
    Serial.print(" °C, Vlhkost ");
    Serial.print(vlhkost);
    Serial.println(" %");
  } else {
    Serial.println("Nepodarilo sa pripojit na ThingSpeak.");
  }

  client.stop();

  delay(20000);
}

Hodnoty NAZOV_WIFI, HESLO_WIFI a VAS_WRITE_API_KEY nahraďte vlastnými údajmi.

V ukážke používame oneskorenie 20 sekúnd, aby sa dáta neodosielali príliš často. Pri meraní teploty a vlhkosti zvyčajne nie je potrebné posielať hodnoty každú sekundu.

Vysvetlenie ThingSpeak kódu

Tento kód vychádza z predchádzajúceho testovacieho programu. Rozdiel je v tom, že okrem čítania hodnôt zo senzora DHT11 sa Wemos mini pripojí na WiFi a odošle namerané údaje na ThingSpeak.

Na začiatku programu pripojíme knižnice:

#include <ESP8266WiFi.h>
#include <DHT.h>

Knižnica ESP8266WiFi.h umožní pripojenie Wemos mini dosky k WiFi sieti. Knižnica DHT.h slúži na komunikáciu so senzorom DHT11.

Rovnako ako v prvom príklade nastavíme pin senzora a typ použitého senzora:

#define DHTPIN D4
#define DHTTYPE DHT11

Pri tomto shielde je dátový pin senzora pripojený na D4, preto používame práve tento pin.

Do týchto riadkov doplníte údaje svojej WiFi siete:

const char* ssid = "NAZOV_WIFI";
const char* password = "HESLO_WIFI";

Hodnotu NAZOV_WIFI nahraďte názvom svojej WiFi siete a hodnotu HESLO_WIFI nahraďte heslom k tejto sieti.

V ďalšej časti nastavíme server ThingSpeak a Write API Key:

const char* server = "api.thingspeak.com";
String apiKey = "VAS_WRITE_API_KEY";

Hodnotu VAS_WRITE_API_KEY nahraďte vlastným Write API Key z vášho ThingSpeak kanála. Tento kľúč nájdete v nastaveniach kanála v záložke API Keys.

V časti setup() sa spustí sériová komunikácia, inicializuje sa senzor a Wemos mini sa začne pripájať na WiFi:

Serial.begin(115200);
dht.begin();

WiFi.begin(ssid, password);

Počas pripájania na WiFi sa v Serial Monitore vypisujú bodky. Keď sa doska úspešne pripojí, zobrazí sa hláška WiFi pripojene.

V hlavnej slučke loop() sa najprv načíta vlhkosť a teplota zo senzora:

float vlhkost = dht.readHumidity();
float teplota = dht.readTemperature();

Následne sa vytvorí adresa, cez ktorú sa hodnoty odošlú do ThingSpeak kanála:

String url = "/update?api_key=" + apiKey +
             "&field1=" + String(teplota) +
             "&field2=" + String(vlhkost);

Hodnota field1 predstavuje teplotu a hodnota field2 predstavuje vlhkosť. Preto je dôležité, aby boli v ThingSpeak kanáli zapnuté práve tieto dve polia.

Ak sa pripojenie na server podarí, program odošle HTTP požiadavku na ThingSpeak:

client.print(String("GET ") + url + " HTTP/1.1\r\n" +
             "Host: " + server + "\r\n" +
             "Connection: close\r\n\r\n");

Po odoslaní dát sa spojenie ukončí a program počká 20 sekúnd:

client.stop();

delay(20000);

Oneskorenie 20 sekúnd zabezpečí, že sa hodnoty neodosielajú príliš často. Pri meraní teploty a vlhkosti väčšinou stačí odosielať údaje v dlhších intervaloch.

Kde si pozrieť grafy?

Po nahratí programu otvorte svoj kanál na ThingSpeak. Ak je všetko nastavené správne, vo Field 1 sa budú zobrazovať hodnoty teploty a vo Field 2 hodnoty vlhkosti.

Ak sa dáta nezobrazujú, skontrolujte najmä:

  • či je Wemos mini pripojený na WiFi,
  • či ste zadali správny Write API Key,
  • či sú v kanáli zapnuté Field 1 a Field 2,
  • či sa v Serial Monitore nevypisuje chybová hláška.

Časté otázky a problémy

Ak sa meranie alebo odosielanie údajov nespráva podľa očakávania, pozrite si najčastejšie problémy nižšie. Kliknutím na konkrétny problém sa zobrazí odporúčané riešenie.

Problém: V Serial Monitore nič nevidím

Skontrolujte:

  • či je nastavená rýchlosť 115200 baud,
  • či je vybraný správny port,
  • či sa program správne nahral do dosky,
  • či používate USB kábel s dátovým prenosom.
Problém: Zobrazuje sa chyba čítania zo senzora

Skontrolujte:

  • či je shield správne nasadený,
  • či je v kóde použitý pin D4,
  • či je nastavený typ senzora DHT11,
  • či sú nainštalované potrebné knižnice,
  • či je doska správne napájaná.

 

Problém: Wemos mini sa nepripojí na WiFi

Skontrolujte:

  • či je správne zadaný názov WiFi siete,
  • či je správne zadané heslo WiFi siete,
  • či sa doska nachádza v dosahu WiFi signálu,
  • či WiFi sieť používa pásmo 2,4 GHz, nie iba 5 GHz.

Ak sa doska na WiFi pripojí, ale spojenie je nestabilné alebo sa dáta na ThingSpeak odosielajú len občas, problém môže byť aj v slabom WiFi signáli.

Silu WiFi signálu si môžete dočasne vypísať do Serial Monitoru pomocou funkcie WiFi.RSSI(). Tá zobrazí hodnotu signálu v dBm. Čím je hodnota bližšie k nule, tým je signál silnejší.

Serial.print("Sila WiFi signalu: ");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");

Tieto riadky môžete vložiť napríklad do časti loop() po úspešnom pripojení na WiFi. Ak sa zobrazujú veľmi nízke hodnoty RSSI, skúste dosku presunúť bližšie k routeru alebo použiť stabilnejšie WiFi pripojenie.

Problém: Dáta sa neodosielajú na ThingSpeak

Skontrolujte:

  • či máte správne zadaný Write API Key,
  • či je kanál na ThingSpeak vytvorený a uložený,
  • či sú zapnuté polia Field 1 a Field 2,
  • či má doska funkčné internetové pripojenie,
  • či sa v Serial Monitore vypisuje hláška o odoslaní dát.
Problém: Hodnoty sa zdajú nepresné

DHT11 nie je presný merací senzor. Hodí sa skôr na jednoduché projekty, testovanie a zoznámenie sa s Wemos mini modulmi. Ak potrebujete presnejšie meranie teploty a vlhkosti, odporúčame pozrieť sa po presnejšom senzore, napríklad DHT22.

Kam sa dá projekt posunúť ďalej?

Odosielanie údajov na ThingSpeak je len jedna z možností. Po úspešnom otestovaní môžete projekt ďalej rozšíriť napríklad o:

  • zobrazenie teploty a vlhkosti na OLED alebo TFT displeji,
  • odosielanie údajov do ďalších online služieb,
  • prepojenie s Home Assistant,
  • upozornenie pri prekročení nastavenej teploty alebo vlhkosti,
  • vytvorenie jednoduchej WiFi meteostanice.

Tento návod je dobrý základ. Najskôr si overíte, že senzor funguje, potom dáta odošlete do online grafu a následne môžete projekt rozšíriť podľa vlastných potrieb.

Záver

Wemos mini shield DHT11 je jednoduchý spôsob, ako začať s meraním teploty a vlhkosti. Vďaka shield prevedeniu netreba riešiť zložité zapojenie a na prvé testy stačí Arduino IDE, DHT knižnica a krátky program.

Po doplnení odosielania na ThingSpeak sa z jednoduchého testu stane malý IoT projekt, ktorý dokáže zobrazovať namerané hodnoty v online grafoch.

DHT11 je vhodný najmä na učenie a základné testovanie. Na presnejšie merania alebo reálne aplikácie je vhodnejšie použiť presnejší senzor. Ako prvý krok do sveta IoT merania je však Wemos mini s DHT11 shieldom veľmi dobrý štart.

Techfun.sk – Váš nápad, náš hardvér.