Pokud by někdo chtěl, upravil jsem FW od pana Čížka https://github.com/KRtekTM/Laskakit_MapaCRPřidal jsem jednoduché webové rozhraní pro změnu mapové vrstvy a lze tak zobrazit kromě srážek i teplotní mapu, vlhkost, tlak, prašnost (z čidel TMEP) a pak ještě nějaké další.
Dokáže mi někdo poradit s Arduinem? Při nahrávání programu do mapy mi to hlásí Wrong boot mode detected.
Zkuste zmáčknout reset tlačítko zezadu mapy u ESP32 při nahrávání sketche.
Při spuštění programu v Pythonu na počítači s W10 chyba při otvíraní souboru "mesta.csv"Bylo třeba doplnit původní příkaz pro otvírání souboru nawith open("mesta.csv", "r", encoding="utf-8") as fi:Na počítači s Linuxem běžel program bez úprav
Parada, skvela prace!
Tak to je super nápad. Moc se mi to líbí.
Dobré !
Mohl by mi někdo, nejlépe pan Čížek, vysvětlit ten komentář v kódu "Pockame 2 ms (prenechame CPU pro ostatni ulohy na pozadi)"Měl jsem za to, že delay() je blokovací funkce, a CPU v této době běhá v prázdném cyklu.Ostatně z tohoto důvodu se v případě ESP8266 a zapnuté WiFi moc dealaye nedoporučují, protože délka smyčky nesmí překročit 100ms jinak WiFi spadne a ESP se restartuje. A z toho stejného důvodu všude možně možně řeší, jak místo použití delay počítat milisekundy a úlohy časovat, případně u ESP32 používat FreeRTOS.Mimo to nějak nechápu ty úlohy na pozadí. Na tom jádře které využívá Arduino další úlohy neběží. Vše co je mimo uživatele si ESP řeší na druhém jádře.
No ja bych řekl, že Delay je naopak vhodný, protože tim říkáte "Teď nic nemusíš dělat a můžeš si obnovit spojení s Wifi". Když jsem na ESP udělal smyčku bez delay tak se začal sám restartovat protože neměl kdy si udržet spojení s wifi. Obecně se doporučuje na vstupy přerušení.
No to je právě přesně to, jak se třeba ESP8266 nechovalo. Delay prostě vkládal prázdné cykly což vedlo k rozpadení komunikace, protože wifi se řešila vždy jen po dokončení hlavní smyčky loop. Proto jsem byl zmaten.Teď jsem se ale na to koukal, a vypadá to že volání instrukcí pro udržení komunikace bylo přidáno i do toho delaye, kde se to volá taky. Nicméně, podle současného popisu funkce, dávat delay na konec loopu nedává smysl ani u toho ESP8266, protože to vede k tomu že při zavolání delaye si CPU pořeší wifi, pak skončí loop, a udělá to znovu. Zdá se, že správné volání delaye pro potřeby udržení wifi je takové, že když mám v programu smyčku která prostě trvá příliš dlouho a loop by nestihl proběhnout do 100ms, tak se má vkládat delay(0) do té smyčky, který nezpomalí provádění programu, ale při jeho zavolání si ESP pořeší svoje a rovnou pokračuje dál. Obdobně by to bylo i u ESP32-S2 které má jen jedno jádro. V případě dvoujádrového to ale nedává smysl, protože arduino sketch běží na jednom jádře, a všechno co ESP potřebuje ke komunikaci běží na druhém jádře.Obecně se pro ESP32 doporučuje nepoužívat Arduino IDE, ale ESP IDF a ideálně využívat FreeRTOS.Osobně ani u ESP8266 ani u ESP32 delaye nepoužívám vůbec, a nic se mi nerestartuje. Problémy s restarty mám pouze v případě, že něco sám pokazím, nebo si nepohlídám napájení (nejčastější problém. ESP je při startování WiFi nečekaný žrout a při poklesu napětí to restartuje watchdog. Tedy ne že by se nedal vypnout, ale... )
Samozřejmě, že je to špatně. Asi tam žádné "úlohy na pozadí" nejsou, nebo to připojení k wifi udržuje jiný čip a ne CPU.Přímo manuál k arduino uvádí totoNo other reading of sensors, mathematical calculations, or pin manipulation can go on during the delay function, so in effect, it brings most other activity to a halt.A pak tam radí, že se má používat buď polling na millis() a/nebo interrupty. A výborná je na to i tahle lib https://github.com/brunocalou/Timer
podle dokumentace pouziti delay je OKdelay(ms) pauses the sketch for a given number of milliseconds and allows WiFi and TCP/IP tasks to run. delayMicroseconds(us) pauses for a given number of microseconds.https://arduino-esp8266.readthedocs.io/en/3.0.0/reference.html
Potvrďte prosím přezdívku, kterou jsme náhodně vygenerovali, nebo si zvolte jinou. Zajistí, že váš profil bude unikátní.
Tato přezdívka je už obsazená, zvolte prosím jinou.