Každý bastlíř si postaví meteostanici. A pokud chcete mít na displeji praktické informace, zde je pár zdrojů, jak se k nim dostat – varování ČHMÚ, předpověď počasí, východ a západ slunce, fáze měsíce, …
Celý příspěvek
Každý bastlíř si postaví meteostanici. A pokud chcete mít na displeji praktické informace, zde je pár zdrojů, jak se k nim dostat – varování ČHMÚ, předpověď počasí, východ a západ slunce, fáze měsíce, …
Celý příspěvekPoslední, co zbývá, je popsat serverovou stranu aplikace. Co umí a jak ji nainstalovat?
Celý příspěvekJak vypadá aplikace na mikrokontroléru? Je to jednoduché a jde to rychle!
Celý příspěvekBezpečnost. To je něco, co často chybí. Takže jak to je tady?
Celý příspěvekJasně, existuje spoustu hotových IoT frameworků pro ESP32 a ESP8266. Chytrých, v cloudu, nemusíte se o nic starat. Mohl jsem něco z nich použít. Ale řekl jsem si NE! A tady je výsledek.
Celý příspěvekVšichni určitě znáte NodeMCU – první vývojářskou desku s ESP8266, která se dala snadno a levně koupit. A všichni je máte v šuplíku. Dá se NodeMCU použít pro „low power“ aplikaci?
Celý příspěvekBlynk.cc je zajímavá platforma pro rychlé prototypování IoT řešení s vizualizací v mobilním telefonu. Pokud potřebujete vyzkoušet senzor a nechce se vám k němu psát serverovou stranu a mobilní front-end, Blynk může být správné řešení.
Podporuje Arduino (s ethernet/wifi shieldy), Particle … a napřímo podporuje i ESP-8266 (NodeMCU). A ta poslední varianta mne zaujala.
První aplikace je hotová za pět minut.
Nainstalujte si mobilkovou aplikaci a podle popisu zde založte první projekt. Získáte autorizační token.
Stáhněte si Arduino knihovnu z http://www.blynk.cc/getting-started/ . Je to ZIP soubor se čtyřmi podadresáři, které nakopírujete do adresáře libraries/ v adresáři s Arduino skeči. Restartujte Arduino IDE.
Udělejte jednoduchý skeč:
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h>
// You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "autentizační token";
void setup() { Serial.begin(115200); Blynk.begin(auth, "ssid wifi sítě", "heslo wifi sítě"); } void loop() { Blynk.run(); }
No a teď už je možné do projektu v mobilce přidat načítání a zobrazení hodnoty libovolného digitálního či analogového pinu. To se udělá prostým vložením objektu Value display (prosté zobrazení), Gauge („budík“) či Graph (graf – hodinový, denní, měsíční). Jen vložíte na stránku v mobilce ovládací prvek a řeknete mu, jaký pin mikrokontroléru (Dxx, Axx) má obsluhovat. Stejně snadno je možno nastavovat hodnoty výstupních pinů. Na straně kontroléru nic neprogramujete. Neřešíte spojení, ukládání dat na server, vizualizaci – nic.
Ale co když chci připojit ke kontroléru něco, co se musí ovládat složitěji než prostým načtením hodnoty z pinu?
Za tímto účelem má Blynk virtuální piny V1 až Vxx. jejich hodnota není vázána přímo na pin kontroléru, ale je obsluhována v aplikaci.
Třeba si takhle připojíme k NodeMCU teploměr DS18B20. Nejjednodušší možné zapojení – napájení na 3.3 V, zem na zem, datový pin teploměru na pin D4 kontroléru a přes odpor 4k7 na napájení.
Podporu pro OneWire sběrnici má NodeMCU v sobě, knihovna DallasTemperature pro čtení teploty se instaluje v manažerovi knihoven Arduino IDE automaticky.
Sketch vypadá takto:
Hlavička:
#define BLYNK_PRINT Serial // Comment this out to disable prints and save space #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> #include <SimpleTimer.h> #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS D4 #define TEMPERATURE_PRECISION 10 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); DeviceAddress thermometer; SimpleTimer timer; // You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon). char auth[] = "16a...........305032d";
Setup – enumerace zařízení na OneWire sběrnici, nalezení adresy teploměru a konfigurace Blynku:
void setup() { Serial.begin(115200); sensors.begin(); Serial.println("***************************************************"); Serial.print("Pocet teplomeru: "); Serial.println(sensors.getDeviceCount(), DEC); //zjisti adresy oneWire.reset_search(); if (!oneWire.search(thermometer)) Serial.println("teplomer nenalezen!"); Blynk.begin(auth, "jméno wifi", "heslo k wifi"); // jednou za tři sekundy chceme poslat teplotu timer.setInterval(3000L, sendUptime); }
A vlastní výkonná smyčka:
void loop() { Blynk.run(); timer.run(); }
Aha. Tady vlastně nic neděláme s tím teploměrem, že? Teploměr se načítá jednou za 3 sekundy – ve funkci sendUptime, která je volaná z timeru:
void sendUptime() { //nastav rozlišení sensors.setResolution(thermometer, TEMPERATURE_PRECISION);
//načti všechny teploměry sensors.requestTemperatures();
float tempC = sensors.getTempC(thermometer); Blynk.virtualWrite(10, tempC); // virtual pin Blynk.virtualWrite(11, tempC); // virtual pin
if( tempC>26 ) { Blynk.notify("Teplota moc velka!"); } }
Je tady vidět, že načtu teplotu z teploměru a pošlu jí do dvou virtuálních pinů – V10 a V11. Proč? Protože každý virtuální pin může na mobilce končit jen v jednom zobrazovači. Takže V10 bude zobrazovat aktuální hodnotu a V11 pošlu do grafu.
Jo a ještě pozor na červený text. Pokud na mobilce do projektu vložíte objekt „Push Notifications“, tak pomocí Blynk.notify můžete poslat push notifikaci. A fakt to funguje. Tj. nejen vlastní zobrazení stavu zařízení, ale i upozornění kdykoli.
Na mobilce jsem si udělal jednoduchý projekt: jednou display value z pinu V10, jednou graf z pinu V11. A tlačítko pro ovládání pinu D0 (tam má moje NodeMCU ledku). A prvek pro push notification. No a pak stačí kliknout na „spustit“ (trojúhelníček) a žije to. Na mobilce je vidět graf teplot i aktuální teplota; po kliknutí na tlačítko „led“ se rozsvítí nebo zhasne ledka:
No a pokud teplota stoupne nad 26 stupňů (zub na grafu) … na mobilce vyskočí push notifikace. I když je mobilka suspendnutá a aplikace neběží.
Výhody: Skvělé pro jednoduché testování. Nemusíte programovat front-end. Podpora push-notifikací.
Nevýhody: Není webový front-end, jen mobilkový. Nepřekvapilo by mne, kdyby to časem zpoplatnili.
Na okraj: Není nutné využívat jejich cloud. Blynk server si můžete nainstalovat i lokálně u sebe.