12. januára 2021 Meteostanica s ukladaním dát na online server pomocou Wemos ESP12

Meteostanica s ukladaním dát na online server pomocou Wemos ESP12

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

  1. ESP12-F WEMOS D1 Mini – hlavná vývojová doska projektu
  1. 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
  1. 4,7k Ohm rezistor ak používate samostatný DHT senzor
  1. Prepojovacie vodiče
  1. 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:

  1. Otvorte svoje Arduino IDE a choďte na Sketch > Include Library > Manage Libraries . Mal by sa otvoriť správca knižnice.
  1. Vyhľadajte „ DHT “ vo vyhľadávacom poli a nainštalujte si knižnicu DHT od Adafruit.
  1. 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.
  1. 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

  1. Otvorte odkaz https://thingspeak.com/
  1. Kliknite na odkaz “Get Started For Free”
  1. Zaregistrujte sa
  1. Potvrďte verifikačný email a prihláste sa do Vášho účtu.
  1. Vo svojom účte odkliknite že tento kanál budete používať pre osobné/nekomerčné účely.
  1. Pre vytvorenie nového kanála, kliknite na “New channel”, a nastavte si tam základné parametre a vstupné údaje
  1. 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”.
  1. Po uložení parametrov, sa Vám vytvoria 2 grafy. Štatistické nastavenia, osi grafu, farbu a ostatné nastavenia si nastavíte pomocou ikony “edit”. 
  1. V okne “API Keys”, môžete nájsť Váš API kľúč (Write API Key), ktorý zadávate do zdrojového kódu.
  1. 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.

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *