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 13:18] cyberian [Deep sleep mód] |
project:esp8266_adc_grafana [2019/07/03 14:12] cyberian [Node-red editor] |
||
---|---|---|---|
Line 32: | Line 32: | ||
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... | 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... | ||
- | Zpět k deep sleep módu a problému s tím spojených. Princip je jednoduchý. Je potřeba nastavit pin D0/wake na WAKEUP_PULLUP. | + | === 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> | <code> | ||
pinMode(D0, WAKEUP_PULLUP); | pinMode(D0, WAKEUP_PULLUP); | ||
</code> | </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. | 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 zavoláte v kódu kde to potřebujete | + | Po nastavení pinu už jen zavoláte v kódu spánek tam, kde to potřebujete |
<code> | <code> | ||
ESP.deepSleep(120000000, WAKE_NO_RFCAL); | ESP.deepSleep(120000000, WAKE_NO_RFCAL); | ||
Line 43: | Line 47: | ||
Prodleva je v tomto případě 120 s. | Prodleva je v tomto případě 120 s. | ||
- | Problémy, které deep sleep mód přináší jsou následující. První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: | + | === 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> | <code> | ||
WiFi.persistent( false ); | WiFi.persistent( false ); | ||
</code> | </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. | + | * 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. | + | * 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. | + | * 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 :) | ||
+ | |||
===== Instalace mosquitto brokera a klienta ===== | ===== Instalace mosquitto brokera a klienta ===== | ||
Line 278: | Line 289: | ||
===== 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 294: | Line 310: | ||
=== 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/ |