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.
