Další meteostanice - aktuální počasí, předpověď a ePaper
- September 07 2019
- ESP32, ESP8266, NodeMCU , Wemos, RTLDuino...
- 7227x Přečteno
Meteostanice je jeden z pokročilejších projektů, ke kterým se bastlíři uchylují. Bývá to také jeden z projektů, kteří bastlíři dlouhodobě používají kvůli jeho užitečnosti v běžném životě.
A tomhle článku právě najdete zajímavou kombinaci desky s Wi-Fi čipem ESP8266, zobrazovací jednotkou ePaper a API počasí, které poskytuje služba openweathermap.org.
Výhoda zobrazovací jednotky ePaper je zejména díky výborné čitelnosti a nulové spotřebě mimo čas, kdy se displej přepisuje. To bohužel neplatí v tomto případě - ePaper o velikosti 4.3" disponuje rozhraním UART (běžně je to však SPI sběrnice), velkou externí FLASH pamětí, microSD kartou a mikrokontrolérem řídící komunikaci s řídící deskou i samotným displejem. To znamená, že i v uspaném stavu je značný odběr a dosahuje jednotek mA (cca 3mA).
Na druhou stranu jsou zde významné výhody - jednodušší komunikace, možnost uložení obrázků i fontů na microSD kartě tak i externí FLASH paměti.
Pokud však odpojíte napájení, zachováte výhody displeje a zároveň snížíte spotřebu na nulu.
Použité komponenty:
4.3" ePaper s rozlišení 800x600 - https://www.dfrobot.com/product-1312.html
MeteoV3 - https://chiptron.cz/articles.php?article_id=223 (samotná DPS, stavebnice)
Power shield pro MeteoV3 - https://github.com/petus/Meteo-v3-ESP8266/tree/master/Design%20Files/PowerShield_Meteo-v3.1 (zdarma ke každé MeteoV3 desce - samotná DPS)
K předpovědi počasí můžete použít několik služeb - yr.no, wundergroudn.com aj. Já jsem v tomto projektu využil OpenWeatherMap.org.
Aktivace účtu a API OpenWeatherMap
Po registraci si můžete na stránkách aktivovat API, které je zdarma.
Účet zdarma vám poskytuje až 60 požadavků za 1 minutu, současné počasí, předpověd na 5 dní/po třech hodinách, UV index i aktivaci alarmů, které se váží k počasí.
Data jsou aktualizována nejpozději 1x za dvě hodiny.
Potřebné knihovny k ESP8266
K použití ePaper, předpovědi počasí tak i desky s ESP8266 (v Arduino IDE) je potřeba několik knihoven.
OpenWeatherAPI - https://github.com/sfrwmaker/openweathermap.org-ESP8266
Json - https://arduinojson.org/
JsonParser - https://github.com/squix78/json-streaming-parser
Arduino ePaper knihovna - https://github.com/Arduinolibrary/DFRobot_E_paper/blob/master/epd.zip (wiki)
Ikony ze kterých vychází ty mé, upravené - https://www.iconfinder.com/iconsets/weather-413
Ikony počasí
OpenWeatherMap (dále jen OWM) také předává aktuální ikony (seznam zde).
Na microSD kartě mám uložené BMP soubory s ikonami počasí. Na základě předaného identifikátoru ikony z OWM, kód vybere příslušnou ikonu a vykreslí jí na displej.
MicroSD karta musí být zformátována na FAT32 a názvy souborů musí být maximálně 10 znaků dlouhé (i s koncovkou).
Já jsem pojmenoval ikony stejně jako jsou na OWM.
Ikony jsou dostupné na tomto odkazu v ZIP.
Program
Nejdůležitější části programu jsou následující:
ow_key - klíč z OWM API (dostupné na OWM)
nodename - jméno zařízení (volitelné)
wifi_ssid - SSID vaší Wi-Fi sítě
wifi_passwd - heslo k vaší Wi-Fi síti
const char *ow_key = "----";
const char *nodename = "---";
const char *wifi_ssid = "----";
const char *wifi_passwd = "----";
0 - načítání obrázků a fontů z externí FLASH
1 - načítání obrázků a fontů z microSD karty
epd_set_memory(1); // microSD card
Zapnutí a vypnutí ePaper (na MeteoV3 může být připojen shield, které dokáže odpojit napájení, shield je v mém připojen na GPIO 12, může však být i na GPIO 14)
digitalWrite(12, HIGH); // turn on the ePaper
digitalWrite(12, LOW); // turn off the ePaper
Načtení fontů
epd_set_ch_font(GBK32);
epd_set_en_font(ASCII32);
Načtení promněnných do vlastních proměnných (jako String) a vypsání String. Vytovřena jako univerzální - nezáleží zda jsou vstupní data také String nebo Int
String sCond = "" + String(ow_cond->cond) + "";
sCond.toCharArray(buf, 50);
epd_disp_string(&buf, 610, 370);
Vykreslení ikon
epd_disp_bitmap("PIC01D.BMP", 380, 150);
Uspání modulu
ESP.deepSleep(SLEEP_DELAY_IN_SECONDS * 1000000, WAKE_RF_DEFAULT);
Zapojení
Mé podmínky: napájení MeteoV3 i ePaper ze dvou AA nebo AAA baterií, odpojení napájení ePaper po zobrazení dat.
Díky použití tohoto ePaper displeje a desky MeteoV3 je zapojení naprosto jednoduché.
Po naprogramování desky připojte výstup TX MeteoV3 na vstup DIN ePaper.
Napájení připojte přes power shield, jak je zobrazeno níže. Na desce MeteoV3 propájíte pájecí most JP2 (3.3V). Na power shield vyberte řídící GPIO ke spínání napájení (GPIO12[můj případ] nebo GPIO14) a propájíte JP2 (propojení VCC - 3.3V na vstup napájení ePaper).
Zdrojový kód
Na github najdete zdrojový kód, který si můžete upravit podle své potřeby.
Nezapomeňte se pak pochlubit na sociálních sítích!