Archiv štítku: Arduino

ESP32 – jak opravit chybu v návrhu rozhraní na SD kartu (a troška nářků na ESP32)

Jak mi postupně roste velikost kódu pro EasyTherm do ESP8266, tak jsem usoudil, že je na čase se poohlédnout po lepší variantě. Protože jsem chtěl udržet kódovou základnu EasyThermu pokud možno stejnou pro všechny platformy z důvodu snadnějšího vývoje, padla volba na ESP32, se kterým jsem už jednu konstrukci navrhoval… Pokračování textu ESP32 – jak opravit chybu v návrhu rozhraní na SD kartu (a troška nářků na ESP32)

Z notýsku vývojáře – Jak zachytit občasný pád aplikace v ESP8266

Dříve, nebo později se s tím setká každý, kdo tvoří aplikace na mikrokontroléry – skvělá, téměř hotová aplikace občas spadne. Ne tak často, aby se pád dal zachytit debuggerem (pokud se dá k hardware vůbec připojit), ale příliš často na to, aby bylo možné pády ignorovat. Stává se to i při programování ESP8266 a to častěji, než by se mohlo zdát (ti, kdo používají intenzívně komunikující sériový port pomocí knihovny SoftwareSerial o tom zcela nepochybně ví své). Ladění těchto situací bývá velmi obtížné a zdlouhavé, ale naštěstí pro nás existuje v případě ESP8266 cesta, jak si práci usnadnit. SDK, poskytované přímo od Espressif obsahuje možnost, jak při pádu aplikace zavolat uživatelskou funkci, která se jmenuje custom_crash_callback(…). Funkce je volaná z postmortem stavu přímo z jádra (weak alias je definovaný v core_esp8266_postmortem.c ). Její použití ale má nějaká úskalí – nesmí se použít dynamická alokace, blokovací funkce (serial, network, delay, …) a vykonání funkce nesmí trvat příliš dlouho, protože HW watchdog stále běží. Nápad tedy spočívá v tom, že se do EEPROM uloží informace o pádu, které se dají použít pro následnou analýzu. Tento nápad mělo přede mnou už více vývojářů, takže vznikla knihovna EspSaveCrash, která ale bohužel ignoruje zapovězení dynamické alokace, takže pokud vznikl pád aplikace z důvodu problému na heapu, EspSaveCrash nebude fungovat správně. Napsal jsem tedy vlastní variantu, která vychází z uvedené knihovny, ale netrpí tímto neduhem a kterou používám již řadu měsíců.

Pokračování textu Z notýsku vývojáře – Jak zachytit občasný pád aplikace v ESP8266

Měření výšky hladiny ve studni – “ghetto style”

Jeden z dlouholetých kolegů v práci za mnou před prázdninami přišel s prosbou o konstrukci měřiče výšky hladiny ve studni pro jeho švagra, přičemž byl velký tlak na cenu a poměrně jasná představa o měřícím principu. Původně jednoduchá konstrukce, která měla být hotová přes víkend a nainstalovaná během prázdnin se nakonec zvrtla v mnohem sofistikovanější systém (ovšem se stále zachovaným tlakem na cenu 🙂 )…

Pokračování textu Měření výšky hladiny ve studni – “ghetto style”

EasyTherm Connect+, náhled na firmware

Přesto, že firmware pro EasyTherm ještě zdaleka není dokončený, musím na základě četných žádostí trošku poodkrýt vzhled a filozofii. V prvním článku o ETCP jsem uveřejnil informace o tom, že aplikace je kompletně servírovaná ze souborového systému SPIFFS uvnitř ESP8266 – i přes značný nárůst velikosti kódu toto řešení zůstalo stále zachované. Nastavování a programování ETCP nevyžaduje připojení k internetu a celý systém dokáže pracovat v tzv. ostrovním režimu. Pokračování textu EasyTherm Connect+, náhled na firmware

Šťastné a veselé… (s ESP8266)

Pro jeden z projektů potřebuji vyřešit dekódování a zobrazení JPEG obrázku/streamu pomocí ESP8266. Rozhodl jsem se tedy, že demonstrační projekt využiji zároveň jako přání k vánocům. Abych demonstroval rychlost dekódování a vykreslování, tak jsem také natočil krátké video, které je dále v článku. No a pro ty, co nechtějí číst dál – hezké a klidné vánoce Vám všem a děkuji za přízeň 🙂

Pokračování textu Šťastné a veselé… (s ESP8266)

Virtuální sériový port pomocí ESP8266

20161010_200000_webMožná si některý z čtenářů vzpomene na článek o přídavné WiFi destičce k RAMPS1.4 a tiskárně Rebel II, který jsem zde před časem uveřejnil. Zmiňoval jsem v něm program Stupido, který jsem napsal pro ověření funkčnosti “virtuálního WiFi drátu”. Program zatím nebylo možné uveřejnit, protože z ESP Core pro Arduino byla ve stabilní verzi vypuštěna podpora většího bufferu přijatých znaků a přenos tudíž občas znaky vynechával. V nové verzi (která je na githubu) už je podpora velkého přijímacího bufferu sice opět zavedena, ale vývojáři jsou zcela saturováni prací na Arduinu pro ESP32, takže se nového jádra v brzké době nejspíše nedočkáme. Je tomu asi měsíc, co jsem se po cca 20-ti letech opět potkal s člověkem, kterého si velmi vážím a který potřeboval shodou okolností “WiFi drát”, takže jsem se pustil do exhumace a vylepšování a výsledek předkládám veřejnosti…

Pokračování textu Virtuální sériový port pomocí ESP8266

ESP8266 pro začátečníka – Šablona projektu

thinkespProtože dost často dostávám dotazy (a nebo přímo prosby) na vytvoření aplikační kostry pro projekty, na kterých byste rádi pracovali, rozhodl jsem se vytvořit šablonu, která co nejvíce zjednoduší vytvoření základu, do kterého pak můžete vepsat vlastní aplikaci. Jedním z vás je i Patrik, který je v Arduinu začátečník a navíc má, na naše poměry poněkud exotickou konfiguraci HW (pracuje na Macu), se kterým jsem se domluvil na tom, že mi bude dělat testera a oponenta. Výsledkem by tedy měla být šablona, která půjde využít v Arduinu napříč platformami Windows, Linux a Macintosh. V závěrečné fázi se ještě přidal Štěpán, který šablonu také ověřil, opravil některé nejasnosti v popisu, kterých jsem se dopustil a přispěl připomínkami ke srozumitelnosti textu.

Pokračování textu ESP8266 pro začátečníka – Šablona projektu

ESP8266 pro začátečníka – projekt OTA v režimu AP

APOTAAPSelČtenář Michal narazil na problém nefunkčního OTA programování modulu ESP8266 v případě, že je ESP nastaveno v režimu AP. V konferencích jsem na toto téma četl několik článků, kde si i další lidé stěžují na stejné chování. Já ale v jednom z projektů OTA v režimu AP používám a zatím (ťuk, ťuk) jsem na závažnější problém nenarazil. Slíbil jsem tedy, že vytvořím demonstrační projekt, kde ukážu, jak mám tento problém vyřešený.

Pokračování textu ESP8266 pro začátečníka – projekt OTA v režimu AP

ESP8266 pro začátečníka – jednoduchý server s čidlem DHT11/22

DHTSSDostal jsem mailem dotaz, zda nemám nějaký příklad pro začátečníka na Arduino ESP8266, který by obsahoval obsluhu webového serveru a čtení čidla relativní vlhkosti a teploty DHT11/22. Odpověděl jsem mu, že si myslím, že by neměl být problém něco vzorového “spíchnout”, ale teprve při psaní jsem si uvědomil, že to není jen tak. Napsat ošetření serveru opravdu je jednoduché, vyčítání hodnot také není problém. Potíž ovšem nastává v okamžiku, kdy je třeba tohle všechno nějak seskládat tak, aby to bylo snadno konfigurovatelné, snadno aktualizovatelné, zobrazení hodnot vypadalo aspoň trošku slušně a přitom načítání stránky netrvalo věčnost.

Pokračování textu ESP8266 pro začátečníka – jednoduchý server s čidlem DHT11/22

RAMPS1.4 + WiFi = Rebel Wireless – část I. – Hardware

IMG_9772_webTento projekt už mi leží v hlavě několik měsíců, ale teprve teď jsem se rozhoupal k jeho realizaci. Cílem je zrušit potenciálně nebezpečné a nespolehlivé rozhraní USB mezi PC a 3D tiskárnou (v mém případě Rebel II), nahradit ho WiFi komunikací a doplnit vlastnosti, jako je například upozornění o chybě/ukončení tisku na mobil apod. Nejsem první, kdo se o něco podobného pokouší, ale, jako obvykle, na to jdu trošku jinou cestou…

Pokračování textu RAMPS1.4 + WiFi = Rebel Wireless – část I. – Hardware