amaro01

Orientační osnova prvních tří dílů


01)
úvod – stručné představení Octopus Lab
ESP32 + Micropython
výhody a nevýhody
pár obrázků, množina projektů

02)
různé varianty ESP, moduly, známky
instalace Micropythonu
a hello word, bliknutí LEDkou


03)
vnitřní struktura ESP? sběrnice…
verze upy
upip, mip,
octopus LAB knihovny,


První verze podkladů. Počítáme s klasickým skládáním do bloků s podnadpisem. Velká část obrázků bude na šířku jednoho sloupce. Bude-li potřeba, využijeme i šířku na dva či tři. Necháváme i na uvážení redakce. Podklady v jiném formátu nebo ve specifické kvalitě na vyžádání zašleme. Většinou (fotka na jeden sloupec) se dá použít zdroj z webu.


Octopus LAB – Micropython pro ESP32 (1)


Perex asi jen u prvního dílu, jak máte zažito: červeně, bold, přes dva sloupce:



Série článků od vývojářů z Octopus LABu se zaměří na práci s Micropythonem na ESP32. Tato kombinace je skvělá jak pro úvodní seznámení s moderními mikrokontroléry, tak pro efektivní rychlé prototypování nebo pro výuku IoT systémů. Mohla by inspirovat nejen začátečníky, ale i pokročilejší uživatele, kteří chtějí využít všechny možnosti tohoto populárního mikrokontroléru. Od úvodu „jak nainstalovat Micropython na ESP32“, se dozvíte i jak komunikovat s různými senzory a periferiemi, jak vytvářet síťové aplikace, jak používat knihovny třetích stran či jak si psát knihovny vlastní a mnoho dalšího. Články budou doplněny funkčními příklady kódu (s prolinkem na Github nebo na stránky dokumentace) a schématy, které umožní snadnou implementaci a realizaci.


Octopus LAB

Na úplný úvod si dovolím krátké představení Octopus LABu. Všechno začalo už před několika lety. Octopus LAB se začal profilovat někdy kolem roku 2010 jako „klub“ bastlířů a programátorů, který sdružoval nadšence do moderních technologií. Nepravidelná setkání byla inspirována vyhlášenými „salóny” z dob vrcholného období Nikoly Tesly – kde lidé různých oborů probírali možné i nemožné cesty dalšího směřování lidské společnosti. V té době vznikl i koncept „New Reality” – vize budoucího světa přeplněného moderními technologiemi. V populárnějším pojetí „hackerspace“ jsme se zabývali webovými aplikacemi a databázemi, strojovým učením a neuronovými sítěmi, technologií Blockchainu a krypto měnami, virtuální a rozšířenou realitou… především ale vývojem elektroniky, nastupujícím fenoménem Internetu věcí a technologiemi 3D tisku. V hojné míře jsme pracovali s jednočipovými kontroléry (nejdříve PIC), potom jsme si hráli s Arduinem a jednodeskovým linuxovým mikropočítačem Raspberry Pi. Objevili jsme kouzlo ESP01 s novými možnostmi ESP8266.

Při vývoji DLP 3D tiskárny 3DWARF (dnes už PRUSA SLA) vznikla myšlenka univerzální desky, na které se dají propojit nejužívanější řídící jednotky (v té době jsme použili Raspberry PI) s dalšími I/O členy (vstupní/výstupní moduly: senzory/serva, motory). Vznikl jakýsi prototyp první desky DEVboard (deska pro vývojáře). Od té doby jsme navrhli skoro dvacet různých desek, z nichž některé jsou přímo osazeny moduly ESP.
Námi navržené vývojové a experimentální desky slouží i jako finálně zapojitelné moduly pro projekty nebo jejich části. Jednoduché (nebo částečně zapojené) projekty výborně pomáhají i při výuce.

Mikrokontroléry řady ESP32

ESP je zkratkou pro „Espressif Systems„, což je společnost, která vyrábí rozmanité varianty mikrokontrolérů. ESP32 je řada cenově dostupných mikrokontrolérů se zabudovaným Wi-Fi a Bluetooth. Je to nástupce velmi populárního mikrokontroléru ESP8266, který je stále hojně používán v aplikacích Internetu věcí (IoT). ESP32 má však vylepšenou architekturu, silný dvoujádrový procesor (Xtensa 32-bit LX6), širokou škálu periferních rozhraní a vnitřní paměť. Také je vybaven pokročilými funkcemi řízení napájení, což ho činí vhodným pro aplikace vyžadující provoz na baterie. ESP32 je kompatibilní s celou řadou vývojových platforem a programovacích jazyků, což umožňuje snadné použití pro začátečníky i pokročilé vývojáře.

ESP32 – „známka“ o velikosti cca 2×2 cm (bez antény) a „srdce“ (procesor 5×5 mm)

Programovací a vývojová prostředí

RTOS (Real-Time Operating System) je typ operačního systému, který je speciálně navržen pro profesionální tvorbu aplikací, vyžadujících spolehlivou práci zařízení v reálném čase. Jednou z variant je například FreeRTOS, který je v pro využití v embedded systémech velmi oblíbený.
RTOS se obvykle programuje v jazyce C nebo C++, protože tyto jazyky jsou efektivní pro práci s hardwarovými prostředky a nabízejí nízkoúrovňový přístup k počítačovým zdrojům. Tyto jazyky také umožňují snadnou implementaci nízkoúrovňových rutin, jako jsou řízení paměti a práce s periferiemi.

Omezenou a zjednodušenou variantou použití jazyka C je Aduino C. Arduino je otevřená platforma, původně založena na mikrokontroléru AVR. Je navržena tak, aby bylo i pro začátečníky snadné začít s programováním mikrokontrolérů a elektronikou. Arduino poskytuje jednoduchý programovací jazyk a vývojové prostředí, které umožňuje uživatelům rychle psát a nahrávat kód do mikrokontroléru. Má také k dispozici mnoho knihoven a tutoriálů. Velká komunita nadšenců pomáhá nováčkům učit se a vytvářet vlastní projekty. Bohužel s rostoucím objemem dostupných materiálů klesá jejich průměrná kvalita.

Vývojáři společnosti Esperssif se snaží implementovat i stále populárnější jazyk Rust. Zkusili jsme si zatím nějaké jednoduché projekty, ale jen obyčejné „blikání LEDkou“ nebylo zcela triviální na oživení, tak ještě počkáme, jak se vývojové prostředí vyvine a jaké knihovny budou k dispozici.

MicroPython

MicroPython je verze programovacího jazyka Python, který je optimalizován tak, aby mohl fungovat i na mikrokontrolérech jako je ESP32. Umožňuje vývojářům programovat ESP32 pomocí podmnožiny jazyka Python, namísto používání nízkoúrovňových programovacích jazyků jako je C nebo assembler.

Varianty loga, se kterými se stále můžete setkat. Vpravo je nová verze.

Použití MicroPythonu na ESP32 má několik výhod:

  • Syntaxe Pythonu je snadno naučitelná a dobře čitelná, což ho činí dostupným pro rozmanitou škálu vývojářů.
  • Značně urychluje a usnadňuje vývoj pomocí využití vysokoúrovňových příkazů a knihoven Python.
  • MicroPython obsahuje vestavěný souborový systém, který zjednodušuje proces práci s daty na ESP32.
  • MicroPython nabízí široký výběr knihoven a modulů, které lze použít k komunikaci s různými hardware komponenty na ESP32, jako jsou LED diody, tlačítka, senzory atd.
  • Umožňuje relativně jednoduchou tvorbu vlastních knihoven a vzhledem k dostupnosti zdrojových kódů i snadnou úpravu či možnost rozšíření knihoven třetích stran.
  • Jelikož je Python jazyk interpretační, dá se pro ladění jednoduchých programů využít možností přímého spouštění příkazů z příkazové řádky, což někdy velmi urychluje testování i vývoj.


Samozřejmě má používání MicroPythonu na ESP32 i několik nevýhod:

  • Nižší rychlost vykonání: MicroPython je zpravidla výrazně pomalejší než nativní kód napsaný v C nebo assembleru. To může být problémem pro určité typy aplikací, které vyžadují vysoký výkon procesoru. (Python je jazyk interpretační, což je zde pro změnu nevýhodou.)
  • Omezená paměť: ESP32 má limitované zdroje operační paměti, což může být omezením při vývoji větších projektů v MicroPythonu. To lze řešit využitím efektivnějších datových struktur a knihoven a pečlivým řízením paměti. Další možností je i využití externí rozšiřující paměti.
  • Omezená podpora pro určité funkce: MicroPython je podmnožinou jazyka Python a tedy nemusí obsahovat všechny funkce plné verze jazyka Python. To může být omezením pro některé vývojáře, kteří jsou zvyklí používat určité funkce a knihovny v Pythonu.
  • Omezený počet knihoven: MicroPython má omezený počet knihoven ve srovnání s plnou verzí jazyka Python, což znamená, že některé funkce nemusí být k dispozici.


Celkově je MicroPython skvělou volbou pro vývoj celé řady aplikací na ESP32 především kvůli snadnému použití, flexibilitě a přístupu k širokému spektru knihoven a modulů. Má však určitá omezení. Pečlivé zvažování požadavků projektu a výběr správných knihoven a technik může pomoci překonat některá z těchto omezení.

Na obrázku vidíte jednu z vývojových desek (ROBOTboard), kterou jsme nazývali EDU-KIT1. Právě takovéto sestavy ESP32 s MicroPythonem využívá od roku 2019 už několik škol (převážně technických odborných) i ve výuce.
V minulých letech byl dostupný a velmi oblíbený modul ESP32-DoIt. Vyskytuje se i pod jiným označením a v několika variantách (počty pinů, typ stabilizátoru, druh programátoru). Pro začátek je to stále dobrá volba, takže pokud se chcete do příštího dílu trochu připravit, obstarejte si ESP32 – ideálně s programátorem v modulu 2×15 pinů (na obrázku níže) nebo podobný.

Octopus LAB framework

Framework (aplikační rámec) je softwarová struktura, která slouží jako podpora při programování a vývoji a organizaci jiných softwarových projektů. Může obsahovat podpůrné programy, knihovny API, podporu pro návrhové vzory nebo doporučené postupy při vývoji. (Zdroj: Wikipedia)

V konkrétních praktických ukázkách se seznámíme s obecnými knihovnami, ale také s popisem některých knihoven Octopus LAB FrameWork. Navrhli jsme si totiž mnohá vlastní rozšíření, kde komplexnější procesy rozdělujeme na jednodušší činnosti a jejich vazby. Podobně jako HW moduly jsme si tak vytvořili pro zjednodušení a zrychlení práce obdobné moduly programové.

Pár vybraných odkazů

Jelikož žijeme v době, kdy si získávání nových dovedností už nedokážeme představit bez Internetu, dovolím si občas pár důležitých odkazů připomenout. Tentokrát vybírám v kontextu dnešního článku trochu obecnější, ale asi zásadní a důležité, ze kterých se dá vycházet.

  • www.espressif.com/ – Společnost, která dala ESP jméno a stále se vyvíjí. Pokud vás moderní technologie zajímají, doporučuji prohlédnout si celou produktovou řadu, protože už jenom ESP32 je nabízeno v desítkách různých variant a je dobré mít alespoň základní přehled o aktuálních možnostech.
  • micropython.org/
    Webová stránka MicroPythonu obsahuje dokumentaci, návody, příklady kódu, knihovny a další užitečné informace pro programátory, kteří chtějí používat MicroPython pro své projekty. Naleznete zde také úložiště s binárními soubory (zkompilované a na mikrokontroléru spustitelné) nejen pro ESP, ale i pro další platformy.
  • github.com/
    GitHub je webová platforma pro správu verzí a sdílení kódu mezi programátory. Umožňuje uživatelům vytvářet repozitáře, ukládat svůj kód a spravovat změny, které do něj provádějí ostatní uživatelé. GitHub poskytuje řadu nástrojů pro správu projektů, sledování problémů a diskuzi, a také umožňuje spolupráci mezi vývojáři. Stal se tak klíčovou platformou pro open source projekty a je hojně využíván pro spolupráci a sdílení kódu mezi programátory po celém světě. Také v OctopusLABU část našich projektů je veřejně sdílena a tak i volně k dispozici každému zájemci.

Ing. Jan Čopák

(pokračování příště)


Abyste začali programovat ESP32 s MicroPythonem, musíte nainstalovat firmware MicroPython na ESP32 desce, poté můžete použít libovolný textový editor pro psaní a nahrání vašeho kódu MicroPythonu do ESP32. Kromě toho potřebujete také sériový terminál, abyste mohli komunikovat s ESP32 deskou.


Uvidíme, jak se to vejde na cca dovoustranu.

Další díl: https://www.octopuslab.cz/amaro02/