V tomto projekte vytvoríme za pomoci WiFi čipu ESP12 a platformy ThingSpeak online zber dát teploty a vlhkosti vzduchu. Na webový server ThingSpeak je možné pristupovať z ľubovoľného zariadenia, ktoré má prístup k internetu, takže dáta si môžete pozerať prakticky kdekoľvek.
Platforma ThingSpeak je pomerne rozsiahla a okrem jednoduchého logovania (zapisovania) údajov na ich online server, ponúka aj možnosť vykresľovať grafov a rôzne analytické funkcie. V našej aplikácií si takýto online graf vytvoríme z údajov teploty a vlhkosti vzduchu.
1. Potrebný hardvér
- ESP12-F WEMOS D1 Mini – hlavná vývojová doska projektu
- Senzor teploty a vlhkosti DHT11. Existujú dve varianty, buď ako samostatný modul alebo shield, ktorý je možné jednoducho nasadiť na vývojvú dosku WEMOS
- 4,7k Ohm rezistor ak používate samostatný DHT senzor
- Prepojovacie vodiče
- Kontaktné pole
2. Blokové zapojenie elektro hardvéru
Pripojte snímač teploty a vlhkosti DHT11 ku ESP12, ako je znázornené na blokovej schéme. Na DHT senzore sú 4 piny (jeden z nich je NC teda not connected – nepripojený), pre použitie je potrebné pripojiť 3 – VCC, GND a dáta. Odporúča sa napájať dátový pin cez pull-up odpor. Na doske ktorú sme použili my, je tento odpor už naspájkovaný. Takže stačí len prepojiť.
3. Inštalácia softvéru v Arduino IDE – knižnice
Na čítanie zo snímače DHT použijeme knižnicu DHT od spoločnosti Adafruit:
https://github.com/adafruit/DHT-sensor-library
Ak chcete používať túto knižnicu tiež si musíte nainštalovať základný balík senzorov od Adafruitu:
https://github.com/adafruit/Adafruit_Sensor
Modul ESP12 síce nie je z rady Arduino, avšak v programovacom prostredí Arduino IDE je možné doinštalovať knižnicu, ktorá umožní programovanie akýchkoľvek čipov ESP12. Knižnicu nájdete na:
https://www.arduino.cc/reference/en/libraries/esp8266-weather-station/
Postup pri inštalovaní knižníc:
- Otvorte svoje Arduino IDE a choďte na Sketch > Include Library > Manage Libraries . Mal by sa otvoriť správca knižnice.
- Vyhľadajte „ DHT “ vo vyhľadávacom poli a nainštalujte si knižnicu DHT od Adafruit.
- Po inštalácii knižnice DHT od spoločnosti Adafruit do vyhľadávacieho poľa zadajte „ Adafruit Unified Sensor “. Posuňte sa úplne nadol, vyhľadajte knižnicu a nainštalujte ju.
- Po inštalácií “Adafruit Unified Sensor” nainštalujte knižnicu ESP8266 Weather Station.
4. Kompilácia a nahranie zdrojového kódu
Po inštalácii knižníc reštartujte svoje Arduino IDE. Kód, ktorý skompilujeme a nahráme do Arduino:
include <DHT.h> #include <ESP8266WiFi.h> // replace with your channel's thingspeak API key and your SSID and password String apiKey = "1PIYZM63VQ4GAZ7X"; // kľúč API zo stránky ThingSpeak const char* ssid = "XXX"; // názov WiFi const char* password = "XXX"; // heslo WiFi const char* server = "api.thingspeak.com"; #define DHTPIN D4 // pin na ktorý je snimač pripojeny #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); WiFiClient client; void setup() { Serial.begin(115200); // začať komunikáciu medzi PC a ESP12 delay(10); //počkať 10 milisekúnd dht.begin(); // začať komunikáciu medzi ESP12 a senzorom DHT11 WiFi.begin(ssid, password); Serial.println(); //jednoduché výpisy na konzolu PC Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) // overenie či sme pripojení { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) //pokus o načítanie dát zo senzora { Serial.println("Failed to read from DHT sensor!"); // načítanie dát zo senzora neúspešné return; } if (client.connect(server,80)) { String postStr = apiKey; postStr +="&field1="; postStr += String(t); postStr +="&field2="; postStr += String(h); postStr += "\r\n\r\n"; client.print("POST /update HTTP/1.1\n"); //v takomto formáte posielame údaje na ThingSpeak. Je to definované v ich dokumentácií. Používame HTTP príkaz POST client.print("Host: api.thingspeak.com\n"); client.print("Connection: close\n"); client.print("X-THINGSPEAKAPIKEY: "+apiKey+"\n"); client.print("Content-Type: application/x-www-form-urlencoded\n"); client.print("Content-Length: "); client.print(postStr.length()); client.print("\n\n"); client.print(postStr); Serial.print("Teplota: "); Serial.print(t); Serial.print(" Vlhkost: "); Serial.print(h); Serial.println("Posielanie dát do Thingspeak"); } client.stop(); Serial.println("Pockaj 20 secs"); // thingspeak potrebuje najmenej 15 sekund medzi meraniami, pockame teda nieco malo naviac, 20 sekund delay(20000); }
5. Pripojenie ESP 12 na server ThingSpeak
- Otvorte odkaz https://thingspeak.com/
- Kliknite na odkaz “Get Started For Free”
- Zaregistrujte sa
- Potvrďte verifikačný email a prihláste sa do Vášho účtu.
- Vo svojom účte odkliknite že tento kanál budete používať pre osobné/nekomerčné účely.
- Pre vytvorenie nového kanála, kliknite na “New channel”, a nastavte si tam základné parametre a vstupné údaje
- Po vytvorení svojho kanála, pridajte popis a povoľte druhé pole. Pole 1 bude dostávať hodnoty teploty, pole 2 hodnoty vlhkosti. Môžete pridať ďalšie údaje a keď ste vyplnili všetky údaje, ktoré potrebujete stlačte tlačidlo “Save channel”.
- Po uložení parametrov, sa Vám vytvoria 2 grafy. Štatistické nastavenia, osi grafu, farbu a ostatné nastavenia si nastavíte pomocou ikony “edit”.
- V okne “API Keys”, môžete nájsť Váš API kľúč (Write API Key), ktorý zadávate do zdrojového kódu.
- Po úspešnom zapojení či už hardvérovom alebo softvérovom sa nám začínajú zbierať údaje/namerané hodnoty so snímača, ktoré sa nám zobrazujú na v grafe.
6. Troubleshooting, update projektu
V prípade nefunkčnosti alebo komplikácií pri spúšťaní projektu nás neváhajte kontaktovať.
Projekt sa budeme postupom času rozširovať a pridávať nové prvky.