Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
project:esp8266_adc_grafana [2019/07/03 12:44] cyberian přidání sekce Instalace zařízení |
project:esp8266_adc_grafana [2019/07/03 14:13] cyberian [Úvod] |
||
---|---|---|---|
Line 8: | Line 8: | ||
===== Úvod ===== | ===== Úvod ===== | ||
Vzhledem k netušené náročnosti to trochu potrvá, dokud to nebude dostatečně "kyber". Nicméně tvrdě na tom dělám ;-) | Vzhledem k netušené náročnosti to trochu potrvá, dokud to nebude dostatečně "kyber". Nicméně tvrdě na tom dělám ;-) | ||
+ | Edit: Už je to dostatečně "kyber". Celý projekt je hotový a odladěný. | ||
Mým cílem je data vizualizovat a mít je na dosah v případě potřeby, bez nutnosti chodit k zařízení. | Mým cílem je data vizualizovat a mít je na dosah v případě potřeby, bez nutnosti chodit k zařízení. | ||
Line 29: | Line 30: | ||
* menší chladič | * menší chladič | ||
+ | ===== Deep sleep mód ===== | ||
+ | Volba pevného stabilizátoru nebyla úplně nejštastnější. Později jsem zjistil, že je lepší step down měnič. Stabilizátor se při tomto rozdílu napětí zahřívá cca na 50°C. Z toho a i znaučného důvodu jsem zvolil jako řešení deep sleep mód, i když mi to v ten moment přišlo jako černá magie :). V momentu kdy ESP8266 spí se během chvilky stabilizátor ochladí. I tak je tam pro jistotu chladič, kdyby se běh programu zasekl a wifi byla stále aktivní. Chladič teplo razantně snížil... | ||
+ | |||
+ | === Jak to funguje? === | ||
+ | Deep sleep mód vypíná celé CPU až na čítač, který při dosažení určitě hodnoty pošle log 0 z pinu D0, který by měl být připojen na pin RST. Pokud to takto zapojíte, počítejte s tím, že při flashování je nutné to rozpojit. Proto tam mám jumper. | ||
+ | |||
+ | === Kód === | ||
+ | Samotné zavolání deep sleepu je jednoduché. Je potřeba nastavit pin D0/wake na WAKEUP_PULLUP. | ||
+ | <code> | ||
+ | pinMode(D0, WAKEUP_PULLUP); | ||
+ | </code> | ||
+ | Pozor u node mcu je built in LED, ať se vám to pak nekříží a nespadnete do věčné instantní restartovací smyčky. | ||
+ | Po nastavení pinu už jen zavoláte v kódu spánek tam, kde to potřebujete | ||
+ | <code> | ||
+ | ESP.deepSleep(120000000, WAKE_NO_RFCAL); | ||
+ | </code> | ||
+ | Prodleva je v tomto případě 120 s. | ||
+ | |||
+ | === Problémy === | ||
+ | Problémy, které deep sleep mód přináší jsou následující. | ||
+ | |||
+ | * Při flashování je nutno rozpojit D0 a RST. | ||
+ | * Druhým je připojení k wifi. Standardně je ESP schopné se znovupřipojit již za cca 110 ms, avšak dociluje toho tím, že si ukládá do flash paměti SSID, kanál na kterém bylo naposledy připojeno, IP adresu a bránu. Při každém deep sleepu by se tyto hodnoty zapsali znovu do flash paměti a vzhledem k tomu, že flash pamět vydrží kolem 1000 přepisů (pokud se nemýlím), tak tento stav nechcete. Proto je v kódu toto chování zakázáno: | ||
+ | <code> | ||
+ | WiFi.persistent( false ); | ||
+ | </code> | ||
+ | * Vše však něco stojí. Mám sice pevně danou IP, masku, bránu a režim stanice, ale daní za toto je potřeba znovu proskenovat dostupné kanály. Pokud máte v síti jen jednu wifi a zařízení se nepohybuje, pak s tím problém není :) a však v mém případě pojízdná plošina jezdí po chodbách. Připojení k wifi síti tedy trvá zpravidla 2870 ms. | ||
+ | * Dále je problém na některých deskách s probuzením Wifi po deepsleep modu a proto je v kódu force příkaz, který si to preventivně vynucuje. | ||
+ | * Další problém je, že nemusíte stihnout odeslat data, což se v mém případě stalo. Čekal jsem, že se to bude dít jen u instantního deep sleep módu, ale děje se to i u toho klasického. Hledal jsem řešení asi týden, nakonec to vyřešil kód těsně před sleepem, který data čte, dokud to jde. | ||
+ | * Procesor se po tomto druhu spánku neprobouzí, ale restartuje. Přijdete tedy o hodnoty všech proměnných, pokud si je neuložíte někam externě do EEPROM, nebo interně, ale opět počítejte s tím, že opotřebováváte EEPROM. Do budoucna se chystám využit RTC hodiny, které mají 32K paměti :) | ||
Line 259: | Line 290: | ||
===== Node-red editor ===== | ===== Node-red editor ===== | ||
- | {{ :project:node-red.jpg?400 |}} | + | {{:project:node-red.jpg?400|}}{{:project:node-red_editor.jpg?400|}} |
Takto by se vám měl po přihlášení, zobrazit editor node-redu sprázdným pracovním prostorem. Případně bez přihlášení, pokud jste zabezpečení nepotřebovali. | Takto by se vám měl po přihlášení, zobrazit editor node-redu sprázdným pracovním prostorem. Případně bez přihlášení, pokud jste zabezpečení nepotřebovali. | ||
Nejprve bude potřeba vytvořit ve sloupci vpravo layout dashboardu. Vytvoříte si vlastní uzel, kde vyplníte Name a pod ním skupinu. | Nejprve bude potřeba vytvořit ve sloupci vpravo layout dashboardu. Vytvoříte si vlastní uzel, kde vyplníte Name a pod ním skupinu. | ||
- | Podle toho jak budete přidávat různé grafické prvky, tak bude pak možno na tomto místě měnit pořadí. V tabu Site si lze nastavit rozměry základní dlaždice. V mém případě jsem nastavil 64x64 pro 1x1 | + | Podle toho jak budete přidávat různé grafické prvky, tak bude pak možno na tomto místě měnit pořadí. V tabu Site si lze nastavit rozměry základní dlaždice widgetu. V mém případě jsem nastavil 64x64 pro 1x1. |
+ | |||
+ | Pro každou změnu v node-red editou, u které chcete, aby se projevila, je potřeba kliknout na tlačítko "Deploy" | ||
Nyní k popisu uzlů, které jsem použil. Rozdělil jsem si to vizuálně na 3 svislé části. | Nyní k popisu uzlů, které jsem použil. Rozdělil jsem si to vizuálně na 3 svislé části. | ||
=== První část === | === První část === | ||
- | První jsou vstupy AkkaMonitor/napeti, wifiTimeMilis, pubTime. Tyto vstupy beru jako mqtt subscriber ze serveru, který je jako local MQTT broker. Do názvu jsem dal IP adresu serveru a standardní port 1883. Topic AkkaMonitor/napeti, který odpovídá posílanému topicu v kódu programu. Pozor na lomítka. Pokud napíšeš /Akkamonitor/napeti, tak se jedná o jiný topic. | + | První jsou vstupy AkkaMonitor/napeti, wifiTimeMilis, pubTime. Tyto vstupy beru jako mqtt subscriber ze serveru, který je jako local MQTT broker. Do názvu jsem dal IP adresu serveru a standardní port 1883. Topic AkkaMonitor/napeti, který odpovídá posílanému topicu v kódu programu. Pozor na lomítka. Pokud napíšete /Akkamonitor/napeti, tak se jedná o jiný topic. |
+ | |||
+ | {{:project:node-red_mqtt_sub.jpg?400|}} | ||
=== Druhá část === | === Druhá část === | ||
Line 275: | Line 311: | ||
=== Třetí část === | === Třetí část === | ||
- | Výstupy do grafických prvků. "VU" metry, grafy a odeslání informací na mail. V defaultním nastavneí to pošle jako předmět emailu topic a jako obsah emailu hodnotu napětí. | + | Výstupy do grafických prvků. "VU" metry, grafy a odeslání informací na mail. V defaultním nastavení to pošle jako předmět emailu topic a jako obsah emailu hodnotu napětí. |
+ | |||
+ | ===== Výsledek na dashboardu ===== | ||
+ | Takto to vypadá funkční ve finále | ||
+ | {{ :project:akka_gui01.jpg?400 |}} | ||
===== Instalace zařízení ===== | ===== Instalace zařízení ===== | ||
+ | Instalace byla poměrně úsměvná. Zjistil jsem že deska není dřevěná ale cca 4-5mm plast, do kterého závit nevyříznu, jelikož závit potřebuje ještě výběh pro vrchol vrtáku i závitníku :) Posloužila však hliníková pásovina, na které jsou upevněná kolečka. Kabely jsou připájeny přímo na piny baterie pro fastony. Monitoruje se jen jedna baterie, jelikož se nabíjí v sérii. Pro jistotu jsem měřil i to zda nedochází k napěťovým špičkám při spuštění serv, ale zjevně je to obsloužené a nedochází k nim. | ||
+ | A teď už jen pár fotek: | ||
+ | {{:project:esp8266_ad0.jpg?400|}}{{:project:zavitnik01.jpg?400|}}{{:project:zavitnik02.jpg?400|}}{{:project:akka.jpg?400|}} | ||
===== Reference ===== | ===== Reference ===== | ||
http://mqtt.org/ | http://mqtt.org/ |