ESP32 prakticky

Od základních obvodů k pokročilým aplikacím

Martin Malý

Vydavatel:

CZ.NIC, z. s. p. o.

Milešovská 5, 130 00 Praha 3

Edice CZ.NIC

www.nic.cz

1. vydání, Praha 2024

Kniha vyšla jako 33. publikace v Edici CZ.NIC.

© Martin Malý, 2024

Toto autorské dílo podléhá licenci Creative Commons BY-ND 4.0 (https://creativecommons.org/licenses/by-nd/4.0/). Dílo však může být překládáno a následně šířeno v písemné či elektronické formě, na území kteréhokoliv státu, za předpokladu, že nedojde ke změně díla a i nadále zůstane zachováno označení autora a prvního vydavatele díla, sdružení CZ.NIC, z. s. p. o. Překlad může být šířen pod licencí CC BY-ND 4.0.

Tato kniha vyšla v Edici CZ.NIC. Chcete přispět na vznik dalších? Darujte libovolnou částku na dar.nic.cz/kniha-ESP32

Edice CZ.NIC je jednou z osvětových aktivit sdružení CZ.NIC, správce české národní domény.

ISBN 978-80-88168-79-9 (tištěná verze)

ISBN 978-80-88168-80-5 (ve formátu PDF)

ISBN 978-80-88168-81-2 (ve formátu EPUB)

— Martin Malý

ESP32 prakticky

Od základních obvodů
k pokročilým aplikacím

— Edice CZ.NIC

Poděkování

Poděkování

Pojďte, pane, budeme si hrát… Ale než začneme s hraním, rád bych poděkoval těm, bez nichž by tahle hra nebyla možná.

Předně děkuju lidem z Edice CZ.NIC. Je to už pátá kniha, kterou s nimi vydávám, a je to pro mne opravdu čest a radost spolupracovat s tak vstřícným vydavatelem. Speciální díky pak paní Kateřině Slavíkové, která mi dodala potřebný počáteční impuls ve chvíli, kdy jsem jen seděl a koukal na prázdný textový editor.

Velké díky patří Michalu Ševčíkovi za jeho práci na TMEP a Živý obraz. Michale, tyhle dvě služby jsou nejen užitečné a inspirativní, ale i praktické. Jsou jako dobře navržené moduly – člověk je jen zapojí, propojí drátky, a ono to funguje!

Děkuju všem kutilům, českým i zahraničním. Vaše nápady a konstrukce jsou jako nekonečný šuplík plný součástek a modulů. Někdy stačí jen trochu upravit, jindy se nechám inspirovat – a vznikne něco úplně nového.

A v neposlední řadě díky vám, čtenářům. Bez vás by to celé nemělo smysl. Jste jako proud v obvodu – nebýt vás, bylo by všechno ostatní jen mrtvou hromádkou součástek.

Díky!

Předmluva vydavatele

Předmluva vydavatele

Vážení čtenáři,

vydávat knihy Martina Malého je sázka na jistotu. Na jistotu, že čtenář dostane vyčerpávající informace o tématu stravitelnou a praktickou formou, která mu rozšíří znalosti a poodhalí svět, po kterém předtím jen nesměle pokukoval.

Nejinak je to i v případě této, v pořadí již páté, knihy, kterou nyní držíte v ruce. Autor nás uvádí do úžasného světa ESP32 určeného pro tvořivé duše, které touží vytvořit chytré domácí zařízení, ať už to má být meteostanice sbírající údaje o počasí nebo třeba digitální skleník. S přibývajícími stránkami se noříme do složitějšího programování, ale Martin Malý nám tu cestu srozumitelným výkladem usnadňuje a k tomu přidává praktické tipy a triky.

V úvodu své knihy Martin Malý vyzývá k hraní, zkoumání a zkoušení platformy ESP32, i za cenu objevování slepých uliček. S tím nelze než souhlasit. Je určitě lepší nadšeně objevovat, testovat, využívat svou fantazii a hledat řešení, než rezignovat na proces a radost z tvoření. Pevně věřím, že i Vám bude tato kniha skvělým průvodcem a praktickým pomocníkem.

Jaromír Novák, CZ.NIC Praha, 14. září 2024

Pojďte, pane, budeme si hrát…

Pojďte, pane, budeme si hrát…

Já vím, že to pravověrní pravoslavní nadšenci do elektroniky, či dokonce lidé z oboru, neuvidí rádi. Ty naše hry jsou totiž takové moc jednoduché, pane. Když potřebujeme zesilovač, koupíme si „modul zesilovač“, nesestavujeme ho a nepájíme a neoživujeme… Když chceme připojit paměťovou kartu, nebudeme řešit, jak přesně připájet slot na plošný spoj, ale koupíme si modul, kde to někdo vyřešil za nás, a my jen pospojujeme drátky.

Dělám to, a dělám to bez výčitek, že nepájím a že neleptám desky a že to není žádná pořádná elektrikařina, když jen zapojuju hotové věci a propojuju je drátkama, kdoví jestli vůbec umím pájet… A už vůbec nemám výčitky z toho, že totéž doporučuju vám, čtenářům: montujte, sestavujte, zapojujte, propojujte, hlavně tvořte a hrajte si… Až budete potřebovat umět pájet, tak se to naučíte, o to se nebojím. Ale bál bych se o to, že než vás naučím pájet a vysvětlím Kirchhoffovy zákony, tak vás opustí nadšení a chuť cokoli dělat.

Pro takové hraní je ESP32 docela dobrá platforma. Možná znáte Arduino, Micro:bit nebo Raspberry Pi. ESP32 do této široké rodiny po právu patří. Výkonem by patřilo někam mezi Micro:bit a Raspberry Pi. Co se týče vybavení a externích součástek, bylo by ESP32 druhé po Arduinu: šíře nabídky dostupných modulů, kitů a stavebnic je opravdu obrovská. O ESP32 se dnes dá říct, že je plnohodnotným nástupcem Arduina – jen s lepší výbavou a větším výkonem.

ESP32 je dnes tím, čím bylo Arduino před pár lety: pro spoustu aplikací „platforma první volby“. Chcete chytrý termostat? Použijete ESP32. Chcete domácí automatizaci? ESP32. Chcete něco s Bluetooth? ESP32! Chcete levný komunikační modul, který zvládne BLE, WiFi i Zigbee? ESP32. Chcete nízkoodběrový čip, který bude pohánět vaše zařízení s elektronickým papírem? Chcete výkonný čip, který zvládne v reálném čase spoustu operací? Odpověď zní stále: ESP32.

Kupte kit, několik modulů – a zbytek je jen na vaší fantazii a schopnostech. Schopnosti se vám budou zlepšovat s tím, jak si budete hrát, jak budete přicházet na nové věci a prošlapávat slepé uličky. Ano, vyhnuli byste se jim, kdybyste nejdřív jen seděli a šprtali teorii. Já ale věřím, a ve svých knihách se toho držím, že nejlepší získávání vědomostí je, když při tom taky něco děláte a zkoušíte si to, co jste se naučili.

Pro koho je tato kniha

Pro koho je tato kniha

Je fér na úplný začátek říct, že tato kniha předpokládá, kromě zájmu o téma, i nějakou úroveň znalostí a dovedností. Kniha je určena všem kutilům a nadšencům do elektroniky, kteří mají chuť prozkoumat možnosti moderních technologií. Pokud máte alespoň základní zkušenosti s elektronikou a nebojíte se pájet nebo manipulovat s drátky a součástkami, jste na správné adrese.

Zájemci o internet věcí (IoT) zde najdou spoustu inspirace a praktických návodů, jak propojit své zařízení s okolním světem. Ať už vás láká monitorování prostředí, domácí automatizace nebo vytváření chytrých gadgetů, ESP32 nabízí široké spektrum možností, které čekají na vaše objevení.

Důležitý předpoklad pro čtení této knihy je znalost programování v Arduino IDE nebo obdobném prostředí. Nebudeme probírat programování od úplného začátku; předpokládám, že již máte nějaké zkušenosti, ať už s Arduinem, nebo s obdobnými kity, minimálně na úrovni znalostí toho, jak se programuje v C/C++, a že vám nejsou cizí pojmy jako „flashovat“, „bootovat“, „sériové rozhraní“ nebo „instalace ovladače“.

Příklady a zdrojové kódy ke knize najdete na webu https://espx.cz

1 Co je ESP32?

1 Co je ESP32?

1.1 První projekt

Přemýšlel jsem, jakým projektem začít, a nakonec jsem si řekl, že ideální bude začít něčím jednoduchým, tedy systémem domácí automatizace, která využívá mesh síť a řídí spotřebiče podle senzorů, připojuje se na HomeKit a komunikuje přes Amazon Alexa, zatímco odpovědi formuluje GPT4. Je to opravdu jednoduché a pojďme rovnou na to!

Ne, promiňte, dělám si legraci. Samozřejmě že popsaný projekt lze udělat. A velmi pravděpodobně to po dočtení této knihy zvládnete sami. Ale rozhodně to není projekt, kterým se začíná. Začíná se od něčeho jednoduššího. Co takhle oblíbený „Hello world“?

1.1.1 Hello world

Známý „Hello world“, v češtině jako „Ahoj světe“, je první příklad, jakým začíná většina návodů a učebnic. Je jednoduchý, a přitom je vidět, že to, co děláte, dobře dopadlo a funguje to. Což člověka povzbudí mnohem víc, než když složitě opíše dlouhý kód, chce ho spustit – a obdrží sérii chybových hlášení, v horším případě nesmyslných výstupů, v tom nejhorším jen ticho.

Takže začneme „ahojsvětem“. Jenže zatímco třeba u Arduina nebo Micro:bitu máte jeden nebo několik málo typů zařízení, u ESP32 tomu tak není. Je k dispozici obrovské množství modulů s těmito obvody (protože ESP32 taky není jen jeden obvod, ale celá rodina různých obvodů) a pravděpodobnost, že máte doma zrovna ten, o kterém píšu já, je poměrně malá. Ale na druhou stranu je pravda, že minimálně sériový port mít bude, a bude umět poslat ono „ahoj světe“ do počítače.

Dejme tomu, že máte nějaký kit s ESP32, třeba nejznámější, nejběžnější a nejdostupnější kit DOIT s označením ESP-WROOM-32. Dejme tomu, že jej máte připojený k PC, na PC máte nainstalované vývojové prostředí (IDE) Arduino a v něm nainstalovanou platformu ESP32.

Výběru modulů, popisu jejich funkcí, stejně jako vývojovým prostředím a jejich instalaci se budou věnovat další kapitoly knihy. Pokud v tuto chvíli ještě nemáte modul nebo vývojové prostředí připravené, pročtěte si patřičné kapitoly a pak se vraťte, nebo použijte emulátor – jak na to si ukážeme za chviličku.

Zadejte následující kód:

void setup() {

// put your setup code here, to run once:

Serial.begin(115200);

Serial.println("Ahoj světe");

}

void loop() {

// put your main code here, to run repeatedly:

}

Vlastně je potřeba dopsat jen dva řádky do funkce setup():

Serial.begin(115200);

Serial.println("Ahoj světe");

První nastaví přenosovou rychlost sériového portu na 115 200 baudů (bitů za sekundu) a druhý vypíše zadaný řetězec na sériový port.

Pokud správně nastavíte typ desky (záleží na tom, který máte, u ESP-WROOM-32 zvolte „ESP32 Dev Module“) a číslo portu (to je přiřazeno při připojení desky k PC), měl by kód jít přeložit a nahrát (ikona Nahrát / Upload, klávesová zkratka Ctrl+U, volba menu Sketch > Nahrát).

A nyní, fakt takhle úplně na začátku celé knížky, mám jeden trik pro lidi, co si zatím nenainstalovali ani Arduino IDE, ani si nekoupili žádný kit: použijte emulátor!

1.1.2 Wokwi

Emulátor je k dispozici na adrese https://wokwi.com/. Vyberte z nabídky ESP32 (můžete zkusit i Arduino, STM32 nebo Raspberry Pi Pico) a ze seznamu „Starter Templates“ vyberte ESP32. Otevře se vám nový editor, kde vlevo můžete editovat sketch („sketch“ u Arduina odpovídá zhruba softwarovému „projektu“) a vpravo můžete vidět nejen vizualizaci modulu, ale můžete zde i tvořit jednoduchá zapojení s různými součástkami a moduly.

Zkopírujte do sketch.ino výše uvedený kód a přidejte do funkce loop() drobné čekání – autoři jej doporučují pro lepší fungování simulátoru. Pak v pravé polovině klikněte na spuštění programu (zelená ikona s šipkou) – a uvidíte výsledek:

Samotný modul nemá zabudovanou LED, jako třeba Arduino, takže druhý nejběžnější příklad, totiž blikání, musíte vyřešit přidáním reálné LEDky, rezistoru a několika vodičů.

Ve Wokwi můžete použít modré tlačítko „plus“ – zkuste si přidat LED a rezistor:

Následně součástky propojte (klikněte na vývod, myší natáhněte propojení a klikněte na druhý vývod):

• Propojte katodu LED s výstupem GND

• Propojte anodu LED s jedním vývodem rezistoru

• Druhý vývod rezistoru propojte s pinem 2

Do kódu přidejte jeden řádek do funkce setup(), který se postará o to, aby byl pin 2 přepnut do módu výstup, a do funkce loop() čtyři řádky, které přepnou výstup 2 na vysokou úroveň, počkají, pak jej přepnou na nízkou a opět počkají. A aby se to celé lépe spravovalo, tak si v prvním řádku nadefinujeme makro LED, které má hodnotu 2, abychom všude tam, kde odkazujeme na vývod s připojenou LEDkou, mohli psát jen LED a nemuseli psát číslo:

#define LED 2

void setup() {

// put your setup code here, to run once:

Serial.begin(115200);

Serial.println("Ahoj světe");

pinMode(LED, OUTPUT);

}

void loop() {

// put your main code here, to run repeatedly:

digitalWrite(LED, HIGH);

delay(500);

digitalWrite(LED, LOW);

delay(500);

}

Spusťte, program se přeloží – a jupí, LEDka bliká!

Teda zatím jen virtuální, ale pokud uděláte úplně totéž na nepájivém kontaktním poli a propojíte LED, rezistor, vstup 2 a GND stejně jako v simulátoru, můžete si zkusit nahrát program přímo do desky. Všechno by mělo blikat na první zapojení.

Možné problémy:

• Program se nenahrává: nemáte vybranou desku, nemáte vybraný port

• Program se nahraje, ale neběží: zkontrolujte, že jste vybrali správný typ desky.

• Program se nahraje, v Sériovém monitoru vidíte, že běží (napsal „Ahoj světe“), ale nebliká: nejčastější příčina je obráceně zapojená LED.

Pokud jste si už dřív hráli s Arduinem, tak máte teď příležitost zkusit si to, co umíte, přeložit a spustit na ESP32. Většina by měla fungovat na „první dobrou“. A my ostatní si zatím řekneme, co je vlastně ESP32, jaké jsou nejběžnější desky a jaké budeme používat v této knize.

1.2 Trocha historie

Pojďme od začátku.

V roce 2014 přišel na trh „bastlířských modulů“ relativně nenápadný modul od společnosti AI Thinker, nazvaný ESP-01. Modul obsahoval čip ESP8266 tehdy málo známé čínské společnosti Espressif a fungoval jako jednoduchý „WiFi modem“. Modul jste mohli připojit k nějakému systému, například postaveném na Arduinu, pomocí klasického sériového UART rozhraní a ovládat jej pomocí známých „AT“ příkazů.

AT příkazy, někdy zvané i „Hayes AT commands“, je způsob, jakým se komunikovalo s prvními modemy, které se připojovaly k telefonnímu vedení. Definuje, jak se posílá příkaz (např. „vytoč číslo“ nebo „zavěs“) a jak data. Příkazy začínají dvojicí znaků AT („attention“, tedy „pozor“) a mají pevně daný formát. Několik příkazů je de facto standardních, jako ATDT („ATtention, Dial, Tone“ – tedy vytáčení čísla tónovou volbou), ATH („Attention, Hang up“ – ukončuju spojení, zavěšuju), ATA („Attention, Answer“ – přijmout příchozí volání), ale většina modemů si definovala k tomu proprietární sadu příkazů.

ESP-01 jste tedy mohli připojit (a dodneška můžete, samozřejmě) ke svému systému a posílat mu po sériové lince příkazy, kterými jste mohli získat seznam WiFi sítí v okolí, připojit se k nějaké, přepnout modul do módu přístupového bodu nebo do módu WiFi klienta, poslat požadavek nebo přijmout data.

V té době existovaly už různé WiFi shieldy pro Arduino atd., ale byly poměrně drahé. ESP-01 tehdy stál zhruba sto korun, což byla cena výrazně nižší. Jeho většímu rozšíření bránil nedostatek informací a dokumentace. Ale nízká cena a dobrá dostupnost přitáhly zájem nadšenců do elektroniky z celého světa a postupně se podařilo zjistit podrobnosti o čipu, o jeho software, o nedokumentovaných instrukcích, a dokonce i přeložit originální dokumentaci z čínštiny.

Na rozdíl od jiných modulů s jednoúčelovými čipy byl ESP8266 plnohodnotný RISCový mikrokontrolér a WiFi rozhraní byla pouze jedna jeho část. Díky překladu dokumentace a experimentům se podařilo připravit pro tento modul i celé vývojové prostředí a implementovat jej do známého ekosystému Arduina.

Brzy přišly moduly, které byly s Arduinem kompatibilní, ale místo ATMega32 používaly právě ESP8266 (například od společnosti Wemos). A tehdy dostalo celé hnutí nadšenců do elektroniky novou sílu: konečně bylo možné levně a rychle připojovat konstrukce k síti, navíc bezdrátově…

Modulů s ESP8266 vznikla celá řada, kdybych byl příznivce floskulí, tak napíšu, že ESP8266 vzal bastlířský svět útokem, takže když společnost Espressif oznámila nový, zásadně vylepšený čip, všichni napjatě očekávali něco velmi výrazného. A dočkali se: čip ESP32, představený v roce 2016, byl opravdu velkým krokem vpřed.

1.3 ESP32

ESP32 nabízí výrazné vylepšení oproti svému předchůdci. Má výkonný dvoujádrový procesor Tensilica Xtensa LX6 dual-core, který může běžet až na frekvenci 240 MHz, a obsahuje také integrované rozhraní WiFi a Bluetooth.

Díky svému otevřenému vývojovému prostředí a podpoře komunity se ESP32 stal populární platformou pro různé projekty, od domácí automatizace a robotiky po wearable technologie. Je podporován mnoha vývojovými nástroji, včetně Arduino IDE a MicroPython, což usnadňuje vývojářům začít s jeho používáním.

Integrované bezdrátové rozhraní WiFi a Bluetooth umožňuje snadné připojení k sítím a ovládání zařízení z chytrého telefonu nebo jiného zařízení. ESP32 podporuje protokoly Bluetooth Classic a Bluetooth Low Energy (BLE). ESP32 také obsahuje řadu periférií, včetně UART, SPI, I2C, I2S, ADC, DAC, GPIO a touch senzorů.

Důležitá funkce, především pro různá IoT zařízení, je schopnost přepnout se do režimu spánku a tím šetřit elektrickou energii. Mikrokontrolér ESP32 nabízí více režimů úspory energie, které umožňují snížit spotřebu energie během provozu.

1.3.1 Základní charakteristika ESP32:

• Jedno- nebo dvoujádrové 32bitové mikroprocesory Xtensa LX6

• Podpora aritmetické jednotky s pohyblivou řádovou čárkou (FPU) s jednoduchou přesností

• WiFi: 802.11 b/g/n

• Bluetooth: v4.2 BR/EDR a BLE (s rádiovou částí sdílenou s WiFi)

• 34 programovatelných GPIO linek

• 12bitový SAR A/D převodník s až 18 kanály

• 2 × 8bitový D/A převodník

• 10 dotykových senzorů (GPIO s kapacitním snímáním)

• 4 × SPI

• 2 × rozhraní I²S

• 2 × rozhraní I²C

• 3 × UART

• SD/SDIO/CE-ATA/MMC/eMMC server řadič

• SDIO/SPI slave řadič

• Ethernet MAC rozhraní s vyhrazeným DMA a plánovanou podporou IEEE 1588 Precision Time Protocol

• CAN bus 2.0

• Infračervené dálkové ovládání (TX/RX s až 8 kanály)

• Čítač impulsů (umožňující plně kvadraturní dekódování)

• PWM výstup pro motor

• PWM výstup pro LED (s až 16 kanály)

• Analogový předzesilovač s ultranízkou spotřebou

• Podporuje všechny bezpečnostní prvky standardu IEEE 802.11, včetně WPA, WPA2, WPA3 (podle verze) a WLAN Authentication and Privacy Infrastructure (WAPI)

• Secure boot

• Flash šifrování

• 1024bitové OTP, pro zákazníky až 768bitové

• Kryptografické hardwarové akcelerátory: AES, SHA-2, RSA, kryptografie nad eliptickými křivkami (ECC), generátor náhodných čísel (RNG)

• Interní regulátor s nízkým úbytkem napětí (LDO)

• RTC v samostatné výkonové doméně

• odběr 5 μA v režimu hlubokého spánku

• Probuzení GPIO přerušením, časovačem, ADC měřením nebo událostí z kapacitního dotykového senzoru

1.3.2 Moduly s ESP32

ESP32 se distribuuje, jako jiné integrované obvody, především v podobě klasických čipů pro povrchovou montáž (SMD). K tomuto obvodu je potřeba připojit nezbytné periferie, především anténu pro komunikaci přes WiFi a Bluetooth.

V této podobě by ESP32 nebyl pro bastlíře moc použitelný. Je zapotřebí pájet velmi malá pouzdra, a hlavně správně navrhnout plošný spoj – a návrh plošného spoje, kde je veden rádiový signál, není tak jednoduchá disciplína, jak by se mohlo zdát. Proto výrobce nabízí několik modulů, které jsou mnohem praktičtější. Obsahují totiž anténu (nebo anténní konektor), oscilátor a další komponenty, a mají plechový kryt, který sníží RF rušení.

Modul WROOM-32 bez kovového krytu. Foto: Brian Krent, CC-BY-SA

Existuje několik základních typů modulů ESP32, které se liší velikostí, počtem GPIO pinů a dalšími funkcemi. Mezi základní používané typy první generace (ESP32) patří:

Hlavní charakteristiky

Modul

Čip

Flash

PSRAM

Anténa

ESP32-WROOM-32

ESP32-D0WDQ6

4 MB

–

MIFA

ESP32-WROOM-32D

ESP32-D0WD

4 MB

–

MIFA

ESP32-WROOM-32U

ESP32-D0WD

4 MB

–

U.FL

ESP32-SOLO-1

ESP32-S0WD

4 MB

–

MIFA

ESP32-WROVER

ESP32-D0WDQ6

4 MB

8 MB

MIFA

ESP32-WROVER-I

ESP32-D0WDQ6

4 MB

8 MB

U.FL

ESP32-WROVER-B

ESP32-D0WD

4 MB

8 MB

MIFA

ESP32-WROVER-IB

ESP32-D0WD

4 MB

8 MB

U.FL

ESP32-D označuje čipy s dvěma jádry (dual core), ESP32-S označuje jednojádrové čipy (single core). MIFA je anténa, vytvořená pomocí obrazce na plošném spoji, U.FL označuje modul, kde je k dispozici miniaturní anténní konektor (též IPEX).

Srovnání modulů s anténou MIFA (nahoře) a s konektorem U.FL (dole)

S těmito moduly se stále můžete setkat v konstrukcích i ve skladech prodejců elektroniky, i když je výrobce označuje jako „nedoporučené pro nové návrhy“. Nové moduly používají inovovanou architekturu (verze V3) a jsou to:

Hlavní charakteristiky

Modul

Nahrazuje

Čip

Flash (MB)

PSRAM (MB)

Anténa

ESP32-WROOM-32E

ESP32-WROOM-32, ESP32-WROOM-32D

ESP32-D0WD-V3,

ESP32-D0WDR2-V3

4, 8,

16

–

MIFA

ESP32-WROOM-32UE

ESP32-D0WD-V3,

ESP32-D0WDR2-V3

4, 8,

16

–

U.FL

ESP32-MINI-1

ESP32-U4WDH

4

–

MIFA

ESP32-MINI-1U

ESP32-U4WDH

4

–

U.FL

ESP32-PICO-MINI-O2

ESP32-PICO-V3-02

8

–

MIFA

ESP32-WROVER-E

ESP32-WROVER-B

ESP32-D0WD-V3,

ESP32-D0WDR2-V3

4, 8,

16

8

MIFA

ESP32-WROVER-IE

ESP32-WROVER-IB

ESP32-D0WD-V3,

ESP32-D0WDR2-V3

4, 8,

16

8

U.FL

Čipy ESP32 jsou založené na 32bitovém procesoru Xtensa LX6 s operační frekvencí 80‒240 MHz. ESP32-U i ESP32-D jsou dvoujádrové. Číslice za tímto označením udává velikost paměti FLASH přímo na čipu (ESP32-U4 má 4 MB FLASH). Čipy ESP32-D0 neobsahují FLASH; musí být připojena externě. Písmena WD označují „WiFi a Bluetooth“, R2 znamená „2 MB PSRAM na čipu“ a konečně -V3 říká, že jde o třetí verzi čipu (novou).

1.4 ESP32: Nová generace

Další generaci čipů pak představují modelové řady ESP32-P, ESP32-S, ESP32-C a ESP32-H.

1.4.1 ESP32-P

ESP32-P je (v době psaní knihy) oznámená a připravená řada nejvýkonnějších modelů ESP32. Oznámený model ESP32-P4 je určený pro vysoce výkonné aplikace, které vyžadují silné zabezpečení, které spoléhají na podporu HID, efektivní edge computing a mají zvýšené požadavky na konektivitu. Obsahuje dvoujádrový procesor s architekturou RISC-V, rozšířený o instrukce pro podporu AI a taktovaný až na 400 MHz. Kromě toho je v ESP32-P4 integrováno jádro LP-Core (Low power), které může pracovat až na frekvenci 40 MHz. To má zásadní význam z hlediska podpory aplikací s velmi nízkou spotřebou, které mohou občas vyžadovat vysoké výpočetní výkony. Takové aplikace mohou mít HP jádra po většinu času vypnuta, fungovat jen s LP jádrem, a HP zapnout pouze na nezbytně nutnou dobu, kdy je potřeba vysoký výkon – např. pro rozpoznávání obličeje.

ESP32-P4 má více než 50 programovatelných GPIO a podporuje všechny běžně používané periferie, jako jsou SPI, I2S, I2C, PWM, RMT (rozhraní pro IR dálkové ovládání), ADC, DAC, UART a TWAI. Dále ESP32-P4 podporuje USB OTG 2.0 HS, Ethernet a SDIO Host 3.0 pro vysokorychlostní připojení. Kromě toho ESP32-P4 integruje hardwarové akcelerátory pro různé formáty médií a kompresní protokoly pro zpracování obrazu a streamování videa, včetně podpory kódování H.264.

1.4.2 ESP32-H

ESP32-H je v současnosti zastoupena jediným modelem ESP32-H2. Jde o jednojádrový mikrokontroler s jádrem RISC-V a rychlostí až 96 MHz. Obsahuje 320 kB SRAM, 128 kB FLASH a řadu periferií. Hlavním rysem této modelové řady je, že nemá WiFi, pouze Bluetooth BLE 5.3, ale implementuje rozhraní standardu IEEE 802.15.4 – tedy ZigBee, Thread, Matter apod.

• Jednojádrový 32bitový procesor RISC-V, až 96 MHz

• 256 KB SRAM

• IEEE 802.15.4 (Vlákno + ZigBee)

• Bluetooth 5.3 (LE)

• 19 programovatelných GPIO linek

1.4.3 ESP32-C

ESP32-C je řada, která nabízí modely ESP32-C2, ESP32-C3 a ESP32-C6. Všechny jsou jednojádrové, založené na RISC-V architektuře (implementuje RV32IMAC), s operační frekvencí až 160 MHz. ESP32-C2 (někdy označovaný i jako ESP8684) je starší a levnější verze ESP32-C3, obsahuje méně paměti (272 kB RAM u C2 vs 400 kB u C3) a je pomalejší (120 MHz vs 160 MHz). Verze C6 nabízí výkon verze C3, ale kromě WiFi 6 a BLE 5 přidává i podporu Zigbee 3.0.

ESP32-C2

• 32bitový RISC-V jednojádrový procesor, s hodinovým kmitočtem až 120 MHz, implementující RV32IMC ISA

• Výkon a VF schopnosti a úrovni své doby

• 576 KB ROM, 272 KB SRAM (16 KB pro cache) na čipu

• 14 programovatelných GPIO linek: SPI, UART, I2C, LED PWM řadič, obecný řadič DMA (GDMA), SAR A/D převodník, teplotní senzor

ESP32-C3

• Jednojádrový 32bitový procesor RISC-V, až 160 MHz

• 400 KB SRAM, 384 KB ROM, a 8 KB RTC SRAM

• WiFi 2.4 GHz (IEEE 802.11b/g/n)

• Bluetooth 5 (LE)

• 22 / 16 programovatelných GPIO linek

• 2 12bitové ADC

• Pinově kompatibilní s ESP8266

ESP32-C6

• Vysoce výkonný 32bitový procesor RISC-V, až 160 MHz, implementující RV32IMAC

• 32bitový procesor RISC-V s nízkým výkonem, až 20 MHz, implementující RV32IMAC

• 512 KB SRAM a 320 KB ROM

• IEEE 802.11ax (WiFi 6) na 2.4 GHz, podporující šířku pásma 20 MHz v 11ax režim, šířku pásma 20 nebo 40 MHz v 11b/g/n režim

• IEEE 802.15.4 (Thread + ZigBee)

• Bluetooth 5.3 (LE)

• 30 (QFN40) / 22 (QFN32) programovatelných GPIO linek

1.4.4 ESP32-S

Řada ESP32-S nabízí modely S2 a S3. Oba jsou založené nikoli na RISC-V, ale na Xtensa LX7. S2 je jednojádrová verze, S3 dvoujádrová s matematickým koprocesorem (FPU). S2 nabízí 320 kB RAM a 128 kB ROM, S3 pak 512 kB RAM a 384 kB ROM. U verze S2 pozor na to, že nemá Bluetooth, pouze WiFi.

ESP32-S2

• Jednojádrový procesor Xtensa LX7, až 240 MHz

• bez aritmetické jednotky s pohyblivou řádovou čárkou (FPU)

• 320 KB SRAM, 128 KB ROM a 16 KB RTC SRAM

• WiFi 2.4 GHz (IEEE 802.11b/g/n)

• Žádný Bluetooth

• 43 programovatelných GPIO linek

• 2 13bitové SAR A/D převodníky, s až 20 kanály

• USB OTG

ESP32-S3

• Dvoujádrový procesor Xtensa LX7 s hodinovým kmitočtem až 240 MHz, a podporující FPU s pohyblivou řádovou čárkou (FPU) s jednoduchou přesností

• Přidané instrukce pro zrychlení aplikací strojového učení

• 512 KB SRAM, 384 KB ROM a 16 KB RTC SRAM

• Umožňuje připojení externí PSRAM a Flash pomocí Quad SPI nebo Octal SPI, a sdílení stejného adresního prostoru o velikosti 32 MB

• RISC-V (RV32IMC) koprocesor s ultranízkou spotřebou s hodinovým kmitočtem přibližně 17,5 MHz

• FSM koprocesor s ultranízkou spotřebou podobný předchozímu ESP32 a ESP32-S2

• WiFi 2.4 GHz (IEEE 802.11 b/g/n)

• Bluetooth 5 (LE)

• 45 programovatelných GPIO linek

• bez zabudovaného adaptéru Ethernet

• 2 12bitové SAR A/D převodníky s až 20 kanály

• USB OTG

Pro domácí i poloprofesionální použití pravděpodobně zvolíte některý z modulů WROOM / WROVER, které jsou dostupné i s procesory z řad -S, -C a -H. Moduly jsou dostupné jak s variantou integrované antény (např. ESP32-S3-WROOM-1), tak i s anténním konektorem (označení končí písmenem U: ESP32-S3-WROOM-1U)

WROOM znamená „Wireless Room“ a naznačuje hlavní použití těchto modulů. WROVER je „WROOM with RAM Overlay“ a říká, že v modulu je externí paměť RAM.

Modul

Procesor

Flash

PSRAM

ESP32-S2-MINI-2

ESP32-S2FH4

4

0, 2

ESP32-S2-SOLO-2

ESP32-S2

4

0, 2

ESP32-S3-MINI-1

ESP32-S3FN8

8

0

ESP32-S3-WROOM-1

ESP32-S3

4, 8, 16

0, 2, 8

ESP32-S3-WROOM-2

ESP32-S3R8V

16, 32

8

ESP32-C6-MINI-1

ESP32-C6FH4

4

0

ESP32-C6-WROOM-1

ESP32-C6

4, 8, 16

0

ESP32-C3-MINI-1

ESP32-C3FH4

4

0

ESP32-C3-WROOM-O2

ESP32-C3

4

0

Zdroj informací: Espressif, https://cs.wikipedia.org/wiki/ESP32

1.5 ESP8266

Jde o čip, který je už dnes považovaný za zastaralý. Výrobce doporučuje přejít na verzi ESP8684 (ESP32-C2), ale přesto se s ním můžete stále potkat. Šlo o první široce dostupný a levný čip, který nabízel opravdu jednoduché připojení k WiFi.

ESP8266 je založený na procesoru L106 (Tensilica), obsahuje 32 kB RAM pro instrukce, 80 kB RAM pro data, umožňuje připojit až 16 MB externí sériové FLASH (QSPI), nabízí rozhraní SPI, I2C, I2S, UART, analogově-digitální převodník, 17 GPIO pinů a integrované rozhraní pro WiFi (signálovou část, síťový protokol a WEP/WPA/WPA2 autentizaci).

V porovnání s ESP32 tedy nenabízí Bluetooth ani nijak závratný výkon. Pro základní použití ovšem stačí. Výhodou je jeho extrémně nízká cena, která bývá pod sto Kč.

2 Co budeme používat?

2 Co budeme používat?

Možná to bude znít jako výkřik Kapitána Zjevného, ale: k experimentování s ESP32 a stavění vlastních konstrukcí budete potřebovat nějaký vhodný kit. Na trhu jich je k dispozici nepřeberné množství, takže se naskýtá logická otázka: Který vybrat? A na tuto otázku následuje neméně objevná odpověď: Záleží na tom, co budete s kitem dělat.

Pojďme si proto představit hlavní a nejznámější zástupce kitů z rodiny ESP32. Přehled není ani kompletní, ani aktuální, odráží stav v době psaní knihy (jaro 2024), a byl sestaven i s přihlédnutím k dostupnosti kitů v českých e-shopech.

2.1 ESP-WROOM-32 (DOIT)

Pokud by ve světě kitů s ESP32 existoval ekvivalent „vanilkové zmrzliny“, tedy modul, který mají všude, nikoho neurazí, ničím nevyniká, ale přitom je dobrý, funkční a spolehlivý, tak je to právě tento modul. Používá dříve popsaný modul ESP-WROOM-32 a vyrábí ho velké množství výrobců. Má integrovaný USB řadič, takže stačí připojit k počítači kabelem a můžete začít programovat a testovat. Nevýhodou je, že nemá žádné periferie, ani tlačítko, takže i prosté „blikni LEDkou“ budete muset zapojovat na nepájivém kontaktním poli.

Některé modely od některých výrobců mají LED připojenou k portu GPIO 2, ale já sám mám asi pět modulů tohoto typu od různých výrobců a z různých dob, a LED nemá ani jeden.

V Arduino IDE nastavte typ desky na „ESP32 Dev Module“

2.2 TTGO T-Display

Vanilková zmrzlina s čokoládovou polevou. Tedy pardon – ekvivalent předchozího kitu se stejným čipem, ale s konektorem USB-C a barevným TFT displejem s úhlopříčkou 1,14" a rozlišením 135 × 240 pixelů. Na rozdíl od předchozího kitu si s tímto nemusíte lámat hlavu, jak zobrazit data, protože displej je součástí. Pro experimenty je to o něco lepší řešení než předchozí kit, ale pro použití např. někde v IoT zařízení bude displej zbytečnou přítěží.

Nová verze TTGO T-Display nese název TTGO T-Display-S3. Nabízí, jak název napovídá, vylepšený čip ESP32-S3, větší displej (1,9", 170 × 320 px) a dvě tlačítka, kterým můžete naprogramovat libovolnou funkci. Výrobce nabízí i verzi s dotykovým displejem T-Display-S3 Touch a verzi s AMOLED displejem (1,91", 240 × 536 px). Popřípadě můžete sáhnout i po verzi T-Display-S3 Pro, která obsahuje displej 2,33" s rozlišením 222 × 480px a spoustu dalšího vybavení, které bývá zvykem hledat spíš u mobilních telefonů: senzor světla a přiblížení, kamera, slot na microSD kartu, USB OTG nebo MPU9250 (akcelerometr, gyroskop a kompas).

V Arduino IDE nastavte typ desky na „ESP32 Dev Module“

2.3 TTGO LoRa32 V1.6 433Mhz

Tento kit je postaven na čipu ESP32-PICO-D4, což je zmenšená varianta čipu, který pohání moduly WROOM.

Zatímco WROOM je celý modul, kde je integrována i anténa nebo konektor, tak PICO je pouhý miniaturní čip a anténu řeší výrobce zařízení externě.

Kit obsahuje malý OLED displej (0,96", 128 × 64 pixelů), slot pro microSD kartu, konektor pro připojení LiPol baterie (možno nabíjet přes USB) a modul pro komunikaci pomocí sítě LoRa. Dodává se v několika verzích, podle frekvence, použité pro LoRa. V ČR jsou dostupné verze 433 MHz a 868 MHz.

LoRa (Long Range) je bezdrátová technologie pro přenos dat na dlouhé vzdálenosti, která je často používána v aplikacích internetu věcí (IoT). Tato technologie se vyznačuje nízkou spotřebou energie, což umožňuje, aby zařízení mohlo být napájeno bateriemi po dlouhou dobu, často i několik let. Díky své schopnosti přenášet signály na velké vzdálenosti (až několik kilometrů v městském prostředí a desítky kilometrů ve volném prostoru) je LoRa ideální pro monitorování a ovládání zařízení umístěných na odlehlých nebo obtížně dostupných místech. LoRa využívá bezlicenční pásmo, což snižuje náklady na provoz a zvyšuje dostupnost. Tato technologie je klíčovou součástí sítí LPWAN (Low-Power Wide-Area Network), které umožňují propojení velkého množství zařízení s minimálními nároky na šířku přenosového pásma a energii.

V Arduino IDE nastavte typ desky na „ESP32 PICO D4“

2.4 TTGO VGA32

Tento kit trochu vybočuje z řady kitů s ESP32. Není zaměřený ani na Internet věcí, ani na nízký příkon, ani na moderní periferie. Už z fotografie je patrné, že těžiště jeho práce leží jinde: ke kitu lze připojit VGA monitor, PS/2 klávesnici, PS/2 myš a stereo audio zařízení s konektorem JACK 3,5mm.

Tento kit je ve spojení s knihovnou FabGL ideální pro stavění emulátorů osobních počítačů z 80. let, nebo pro recyklaci starších periferií, například monitorů a klávesnic. Může pak sloužit jako inteligentní terminál s klávesnicí a myší a být připojený např. k jinému zařízení, nebo přes WiFi (např. terminál pro Telnet).

Kit obsahuje opět modul ESP32-PICO-D4.

V Arduino IDE nastavte typ desky na „ESP32 PICO D4“

2.5 LaskaKit ESP32-C3-LPKit

Český výrobce LaskaKit nabízí hned několik modulů, založených na ESP32. Tento kit nabízí modul ESP32-C3 v minimální variantě s důrazem na nízký odběr (Low Power, proto LP). Deska obsahuje samotný modul, konektor USB-C, konektor pro připojení I2C periferií (výrobcem nazývaný μŠup, kompatibilní s podobnými konektory), konektor pro LiPol baterii a obvody, potřebné k napájení z USB a nabíjení baterie.

Výrobce pro svou sběrnici μŠup nabízí celou sadu různých snímačů a čidel, od teplotních přes tlak a vlhkost až po koncentraci CO2 nebo detekci gest. Sběrnice je navíc kompatibilní se Sparkfun Qwiic a Adafruit STEMMA, takže nejste omezeni pouze sortimentem jednoho výrobce.

Rozměrově i vývodově je tento modul kompatibilní se známou řadou Wemos D1 Mini a může tedy využívat existující periferie a desky, kompatibilní s Wemos D1 Mini. Na rozdíl od tohoto modulu je ESP32-C3-LP výkonnější a víc zaměřený na nízký příkon, což ho předurčuje k použití v zařízeních, která mají být napájena z baterií.

V Arduino IDE nastavte typ desky na „ESP32C3 DEV MODULE“, v menu Tools („Nástroje“) nastavte „USB CDC on Boot“ na Enabled a Flash mode (menu Tools) na „DIO“ (standardně je QIO)

2.6 LaskaKit Meteo Mini

Další kit z dílny LaskaKitu – dalo by se zjednodušeně říct, že jde o zvětšenou a rozšířenou verzi předchozího kitu. Kromě modulu ESP32-C3, konektorů USB-C, μŠup a LiPol obsahuje i konektor pro připojení solárního panelu, kterým můžete nabíjet připojenou baterii, mechanický vypínač a pozici pro zapájení čidla DS18B20.

Meteo Mini kit je hlavně díky zabudovaným obvodům, které se starají o správu připojené baterie a nabíjení ze solárního panelu, ideální pro zařízení, které má pracovat autonomně někde na místě, kde by bylo nákladné vést kabely.

V Arduino IDE nastavte typ desky na „ESP32C3 DEV MODULE“, v menu Tools („Nástroje“) nastavte „USB CDC on Boot“ na Enabled a Flash mode (menu Tools) na „DIO“ (standardně je QIO)

2.7 LaskaKit ESPink

Další specializovaný kit od LaskaKitu. Tento kit je navržen speciálně pro připojování displejů s elektronickým papírem (e-ink) od výrobců Good Display nebo Waveshare, a proto je na něm použit i specializovaný konektor pro připojení 24pinových plochých vodičů (FFC), které tyto displeje používají. Opět, jak je u kitů od LaskaKitu zvykem, jsou k dispozici i konektory USB-C, μŠup a LiPol, a je kladen důraz na nízký odběr. Displeje e-ink jsou samy o sobě nízkoodběrové, protože spotřebovávají energii pouze v okamžicích, kdy se překresluje obraz, ale výrobce pro zvýšení výdrže přidal i možnost programového vypnutí napájení displeje. Kit je postaven opět na modulu ESP32-WROOM.

V Arduino IDE nastavte typ desky na „ESP32 Dev Module“

2.8 AI-Thinker ESP32-CAM

ESP32-CAM AI-Thinker je jedna z nejoblíbenějších vývojových desek ESP32 s kamerou – má spoustu užitečných funkcí a lze ji sehnat za velmi příznivé ceny.

Je vybavena čipem ESP32-S a dodává se s „obyčejnou“ 2MP kamerou OV2640. Tato deska má 4 MB PSRAM, která slouží k ukládání snímků z kamery do vyrovnávací paměti při streamování videa nebo jiných úlohách a umožňuje používat vyšší kvalitu snímků, aniž by došlo k pádu ESP32.

Na desce je slot pro kartu microSD a deset vyvedených GPIO a napájecích pinů. Ne všechny GPIO však lze použít, protože některé jsou využívány buď kamerou, nebo kartou microSD. Musíte si tedy dávat pozor, které GPIO budete používat.

Deska ESP32-CAM je dodávána s vestavěnou anténou, ale také s konektorem IPEX, který umožňuje použít externí anténu pro zlepšení dosahu komunikace WiFi. Pokud chcete použít externí anténu, musíte přepájet propojky na desce: odpojit interní PCB anténu a připojit konektor IPEX.

Deska je vybavena vestavěným tlačítkem reset pro restartování desky a vestavěnou LED diodou, která funguje jako blesk. Blesk může být užitečný pro osvětlení prostoru před streamováním videa nebo pořízením snímku. LED pro blesk však sdílí svůj GPIO s jedním z GPIO karty microSD. To znamená, že při používání funkcí souvisejících s kartou microSD se LED dioda občas rozsvítí, i když to nechcete.

Jednou z hlavních nevýhod ESP32-CAM je, že nemá rozhraní USB-UART. To znamená, že ESP32-CAM nemůžete připojit přímo k počítači pomocí kabelu USB. Musíte použít programátor – převodník USB na sériový port (FTDI, CH340 a podobné). Přesto se jedná o jednu z nejuniverzálnějších a nejlevnějších vývojových desek ESP32 s kamerou.

Ačkoli se dá tato deska programovat pomocí breadboardu (nepájivého kontaktního pole), převodníku a několika propojovacích vodičů, vřele doporučuju programovací modul ESP32-CAM-MB. Jde o desku s USB převodníkem a s konektory, které odpovídají rozložení pinů u modulu ESP32-CAM. Navíc obsahuje tlačítka RESET a BOOT, umístěná zboku na desce, takže programování je výrazně pohodlnější.

V Arduino IDE nastavte typ desky na „AI Thinker ESP32 Cam“

3 Vývojová prostředí

3 Vývojová prostředí

3.1 Arduino IDE

Integrované vývojové prostředí Arduino (IDE) je softwarová aplikace, která umožňuje psát, nahrávat a ladit kód pro desky Arduino. Je to primární softwarový nástroj používaný pro vývoj a nahrávání kódu na desku Arduino. Arduino IDE má jednoduché, snadno použitelné rozhraní, které umožňuje psát, upravovat a nahrávat kód na desku Arduino. Obsahuje funkce, jako je zvýrazňování syntaxe, automatické odsazování a vestavěný sériový monitor pro ladění kódu.

Za roky vývoje a své existence dospělo toto IDE do verze 2. A jak už to ve světě software chodí, ještě nějakou dobu bude udržována „legacy“ verze 1.8.X (aktuálně 1.8.19), protože některé komponenty a některá rozšíření po přechodu na verzi 2 přestávají fungovat. Pro vývoj s ESP32 někteří autoři doporučují zůstat u verze 1.8, jiní říkají, že jim vše bez problémů funguje i s verzí 2.

Za sebe mohu potvrdit, že nová verze 2.3.x má některá vylepšení, jako snazší práci se správcem desek i platforem nebo ukládání nastavení projektu a desky, ale v základních rysech se od verze 1.8 neliší. Stále je to, odpusťte mi ta slova, obyčejný textový editor s překladačem. I když má navíc našeptávač a některé pokročilé editační možnosti editoru Monaco (více kurzorů apod.) O nějaké vyspělejší správě zdrojového kódu si můžete nechat jen zdát, natož o funkcích, které znáte z opravdových programátorských editorů, od integrované nápovědy po AI Copilot. Arduino je stále primárně orientované na koncepci „projekt – jeden .ino soubor se stejným názvem – nanejvýš několik dalších souborů“. Což je výhoda pro naprosté začátečníky, ale poměrně brzo se z ní stane brzda pro vývoj složitějších věcí.

Pro mě osobně byl největší problém Arduino IDE špatně optimalizovaný překlad. Co u Arduina s malým ATMega328 proběhne za několik sekund, protože výsledkem je několik kilobytů kódu a překládá se doslova pár souborů, tak u ESP32 trvá přes minutu, protože se překládá několik set souborů a výsledkem je kód s velikostí v řádu stovek kB. A v případě spousty úprav, testování různých knihoven atd. to zkrátka zdržuje.

Přesto sem Arduino IDE patří, protože spousta projektů a příkladů pro ESP32 používá právě toto prostředí a framework Arduina. Pojďme si ho tedy představit a nastavit.

3.1.1 Instalace prostředí Arduino IDE

Arduino IDE získáte na adrese https://www.arduino.cc/en/software. Vyberte si verzi, jakou chcete nainstalovat – pravděpodobně to bude aktuální verze 2, ale můžete nalézt i příklady, které budou vyžadovat „legacy“ verzi 1.8. Na stránce s nabídkou verzí ke stažení budete muset scrollovat dolů, tam najdete starší verzi.

Instalace IDE v2

Stáhněte instalační soubor a nainstalujte vše tak, jak jste zvyklí. Po instalaci a spuštění vyberte menu „Tools“ (Nástroje) → „Board“ (Deska) → „Boards Manager“ (Manažér desek). Vyhledejte „esp32“ a klikněte na „Install“ (Instalovat) vedle balíčku „esp32 by Espressif Systems“. Nedoporučuji v současnosti verzi 3.x, protože některé knihovny s ní nejsou kompatibilní. Zvolte nejvyšší možnou verzi 2.x (2.0.17).

Pozor, „ESP32 Arduino“ je sada, určená pro originální desky Arduino s čipem ESP32, což je v současnosti pouze Arduino Nano ESP32 (čip ESP32-S3)

Instalace IDE v.1.8

Doporučuju instalaci stylem „stáhnu ZIP a rozbalím jej“. Vlastní IDE pak spustíte dvojklikem na „arduino.exe“.

Instalace platformy ESP32 do Arduino IDE 1.8

Arduino IDE má po instalaci zabudovanou podporu pouze pro desky Arduino. Potřebné knihovny a nástroje pro ESP32 je potřeba doinstalovat. Postupujte takto:

1. Jděte do File > Preferences. (Soubor – Předvolby)

2. V části „Additional Board Manager URLs“ přidejte následující dvě položky. https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

3. Klikněte na OK

4. Jděte do „Tools“ > „Board“ > „Boards Manager“ (česky Nástroje – Desky – Manažér desek)

5. Do pole pro vyhledávání zadejte „esp32“

6. Vyberte „esp32 by Espressif Systems“ a klikněte na tlačítko Instalace.

7. Nedoporučuji v současnosti verzi 3.x, protože některé knihovny s ní nejsou kompatibilní. Zvolte nejvyšší možnou verzi 2.x (2.0.17)

8. Počkejte, až instalace doběhne (stahuje se cca 1 GB dat). Pak zavřete správce desek.

9. Z menu „Tools“ > „Board“ vyberte možnost „ESP32 Dev Module“.

10. Hotovo, můžete programovat ESP32 pomocí Arduino IDE 1.8

3.1.2 Příklady pro ESP32

Jak je u Arduina zvykem, tak i s vývojovým prostředím pro ESP32 přichází spousta příkladů a ukázkových kódů. V Arduinu právě příklady a ukázky často nahrazují dokumentaci. Příklady najdete v menu „File“ > „Examples“ – scrollujte nabídkou až dolů do sekce, nadepsané ESP32.

3.1.3 Aktualizace jádra ESP32 v prostředí Arduino IDE

Je dobré jednou za čas zkontrolovat, zda máte v počítači nainstalovanou nejnovější verzi doplňku pro desky ESP32.Jednoduše přejděte na Nástroje > Desky > Správce desek, vyhledejte „ESP32“ a poté zkontrolujte verzi nainstalovaného softwaru. V případě, že se k instalaci nabízí novější verze, ujistěte se, že jste zvolili tuto verzi.

3.1.4 Nahrání kódu do ESP32

Abychom si ukázali, jak nahrát kód na desku ESP32, vyzkoušíme si jednoduchý příklad, který je součástí příkladů Arduino IDE pro ESP32.

Začněte tím, že přejdete do nabídky Nástroje > Deska a zkontrolujete, zda je tam vybrána deska ESP32. Poté z příkladů, které najdete v nabídce Soubor > Příklady > WiFi, vyberte WiFiScan.

Pokud budete používat k testu základní modul WROOM, zvolte desku ESP32. Pokud budete používat třeba kity s procesorem C3, S2 apod., tak musíte zvolit odpovídající možnost.

POZOR! Pokud budete používat kity s čipem C3, musíte nastavit dva speciální parametry, bez nichž tento čip nenaprogramujete. Oba se nacházejí v menu Nástroje. Nastavte zde „Flash Mode“ na „DIO“ (normálně je QIO) a možnost „USB CDC on Boot“ nastavte na „Enabled“. Bez těchto nastavení se program buď nenahraje, nebo se nahraje, ale nespustí. Nebojte, pokud to zapomenete, já vám to ještě několikrát připomenu…

Otevře se ukázkový kód, který prohledává blízké WiFi sítě a vypisuje jejich názvy.

Pomocí kabelu USB připojte vývojovou desku ESP32 k počítači. Většina kitů má diodu, která se rozsvítí, když je kit připojen k počítači.

Důležité: Budete muset využít kabel USB, který má datové linky. Některé kabely USB dodávané s nabíječkami nebo přenosnými powerbankami poskytují pouze napájení a neumožňují přenos dat; tyto kabely nebudou fungovat.

Dál postupujte podle níže uvedených kroků:

1. Vyberte typ své desky ESP32 tak, že přejdete do nabídky Nástroje > Deska, přejdete dolů do sekce ESP32 a tam vyberete název desky. V mém konkrétním případě používám desku s názvem DOIT ESP32 DEVKIT V1.

2. Vyberte port COM ze seznamu tak, že přejdete do nabídky Tools (Nástroje) a vyberete možnost Port. Pokud je port COM, který chcete použít, zašedlý, znamená to, že nemáte nainstalovány potřebné ovladače USB. Než budete pokračovat, ujistěte se, že jste si přečetli část nazvanou „Instalace ovladačů USB“.

3. Klikněte na tlačítko Upload (nebo Ctrl+U). U většiny desek se kód přeloží (může to trvat poměrně dlouho, zejména pokud jste zvyklí na rychlý překlad pro Arduino AVR) a rovnou nahraje na desku.

U některých desek se kód úspěšně nahraje, jakmile deska přejde do režimu nahrávání (Flash mode), což se může, ale nemusí stát automaticky. Pokud vaše deska do režimu bootování nepřechází automaticky, může se vám stát, že se zobrazí následující chyba:

Failed to connect to ESP32: Timed out... Connecting...

Nebo například:

A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.

Pokud se taková chyba objeví, tak nejpravděpodobnější příčina je, že se při pokusu o nahrání kódu ESP32 nenacházel v režimu nahrávání, který je k tomu potřeba. V takovém případě hledejte na desce tlačítko, nazvané FLASH nebo BOOT. Na deskách většinou bývají dvě tlačítka, RESET a FLASH (BOOT). Před nahráváním stiskněte BOOT a držte jej (deska musí být připojena k počítači). Pak krátce stiskněte RESET (BOOT stále držte). Může se stát, že uslyšíte zvuk odpojovaného a připojovaného USB zařízení, to je v pořádku. Nakonec pusťte BOOT a zkuste nahrát program znovu.

Pokud k žádné chybě nedošlo, nahrávání skončí po krátkém čase s hlášením „Done uploading“ (česky „Konec nahrávání“).

3.1.5 Demonstrace

Spusťte Sériový monitor s přenosovou rychlostí 115 200, abyste zkontrolovali funkčnost kódu a ujistili se, že funguje, jak má. Po spuštění Sériového monitoru se deska většinou resetuje a spustí nově nahraný program. Někdy se tak nestane a je potřeba stisknout tlačítko RESET na desce (je-li), popřípadě odpojit a připojit znovu (ale takových desek, které by neměly ani interní RESET, ani tlačítko, moc není).

Pokud se objeví podobný výsledek, tak gratuluji: vše funguje, jak má, a vy jste právě naprogramovali svůj kit s ESP32!

3.1.6 Instalace USB ovladačů pro kity

Pokud jste úspěšně připojili desku ESP32 k počítači, ale port COM v Arduino IDE zůstal zašedlý nebo se ani neobjevil, znamená to, že v počítači nejsou nainstalovány potřebné ovladače USB. Na většině desek ESP32 se nachází nějaký USB-to-UART převodník, jako CP2101 nebo CH340. Zkontrolujte, jaký má vaše deska převodník (někdy bývá vidět na desce, někdy musíte hledat v dokumentaci), a pak najděte vhodné ovladače pro váš systém a daný čip. Zde bohužel neexistuje univerzální způsob, jak nainstalovat potřebné, a budete muset pravděpodobně chvíli hledat.

3.2 Platformio

Platformio se stalo velmi populární alternativou k Arduino IDE. Na rozdíl od Arduino IDE je Platformio postaveno na osvědčeném a velmi robustním editoru VS Code a může tak nabídnout všechny funkce pro pohodlné psaní kódu. Platformio nainstalujete stejně jako kterýkoli jiný plugin pro VS Code – přes nabídku Marketplace.

Bohužel z mého pohledu je práce s Platformiem poněkud nedotažená a některé věci jsou na místech, kde by je člověk nehledal. Například existuje sériový monitor, ale jeho rychlost se nastavuje tak, že do souboru platformio.ini, který je jakýmsi konfiguračním souborem pro váš projekt, dopíšete řádek:

monitor_speed = 115200

Není to zcela intuitivní a budete muset, minimálně na začátku, hodně zkoumat a experimentovat – a hlavně hledat v diskusních fórech.

Po instalaci podpory pro ESP32 do prostředí Platformio si můžete u nových projektů vybrat, jestli budou používat framework Arduino, nebo framework ESP-IDF. Moje zkušenost je taková, že prostředí Arduino je funkční, ovšem s výhradami: instalace knihoven občas skončí s podivnými chybami, popřípadě vůbec, a budete hodně hledat.

Moje nejvýraznější zkušenost byla ta, že překlad pro konkrétní desku s čipem ESP32-C3 končil s chybou, a po hledání po fórech jsem přišel na to, že je potřeba do platformio.ini přidat řádek „platform_packages = toolchain-riscv32-esp@8.4.0+2021r2-patch5“ Po přidání tohoto řádku začal překlad fungovat.

Prostředí ESP-IDF v Platformiu nabízí v době psaní knihy spoustu nepříjemných zkušeností – nástroje nedoběhnou, prostředí namátkově hlásí, že nemůže vytvořit projekt atd. Důvodem může být nedostatečná podpora pro ESP ze strany vývojářů Platformia.

V době psaní knihy právě probíhal spor v komunitě okolo Platformia, způsobený prohlášením tvůrců, že výrobce ESP32 by měl finančně přispět na vývoj Platformia, pokud chce, aby se vývojáři věnovali zlepšování podpory pro tento čip. Prohlášení bylo brzy staženo, ale budoucnost podpory ESP32 v Platformiu je nejasná.

Pro ESP-IDF se jako jednoznačně nejlepší řešení ukázalo vlastní prostředí pro VS Code.

Přes výše řečené je Platformio dobrým kompromisem mezi jednoduchostí platformy Arduino a komfortním prostředím editoru VS Code. Můžete přímo použít soubory .ino, stačí je přejmenovat na .cpp a na začátek vložit

#include <Arduino.h>

3.3 ESP-IDF

ESP-IDF neboli Espressif IoT Development Framework je oficiální vývojový framework pro mikrokontroléry řady ESP32.

Framework ESP-IDF poskytuje sadu knihoven, nástrojů arozhraní API pro vývoj aplikací vC/C++. Nabízí širokou škálu funkcí, běžně potřebných pro aplikace IoT, aje navržen tak, aby poskytoval komplexní aflexibilní platformu.

ESP-IDF poskytuje sadu možností, jako např:

• Podpora připojení WiFi aBluetooth

• Bohatá sada ovladačů pro různé senzory, periferie akomunikační protokoly

• Podpora aktualizací OTA (over-the-air) azabezpečeného spouštění

• Podpora FreeRTOS, operačního systému reálného času pro mikrokontroléry

• ESP Rainmaker, vývojová platforma pro vytváření zařízení připojených ke cloudu

• ESP-IDF Github: https://github.com/espressif/esp-idf

• Programovací příručka ESP-IDF: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/

Pokud jde ovýběr mezi ESP-IDF aESP Arduino Core, je třeba mít na paměti několik zásadních rozdílů:

ESP-IDF plně podporuje programovací jazyky C aC++, což umožňuje využívat funkce, které tyto jazyky nabízejí. Platforma Arduino sice také podporuje jazyky C aC++, ale je třeba poznamenat, že se nejedná oplnou implementaci těchto jazyků, ale onadstavbu nad C++.

Pokud sprogramováním elektroniky začínáte, nebo jste zvyklí na moderní jazyky, pravděpodobně sáhnete po Arduino IDE. Vývoj vněm bude, minimálně zpočátku, rychlejší asnazší avystačíte si docela dlouho spostupem „najdu knihovnu, kouknu na demo aupravím to, co je nejpodobnější tomu, co chci“. Problémy nastanou ve chvíli, kdy budete kombinovat víc hardware afunkcí: zdrojový kód se stane nepřehledným, jeho správa bude problematická, budete muset začít řešit problémy anekompatibility mezi knihovnami, …

Kromě toho ESP-IDF nabízí řadu nástrojů afunkcí, které jsou speciálně navrženy pro vývoj IoT smikrokontroléry ESP32 aESP8266, včetně aktualizací firmwaru OTA (Over-the-Air).

Hlavní výhodou ESP IDF je podpora nových verzí mikrokontrolérů ESP32 ajejich funkcí. Vsoučasné době například nejsou čipy ESP32-C5 aESP32-C6 oficiálně podporovány jádrem ESP Arduino amůže to vést kproblémům, například pokud potřebujete, aby vaše projekty využívaly 5 GHz WiFi.

Celkově má ESP-IDF několik funkcí, které nejsou kdispozici nebo mají horší podporu vArduinu:

• Nativní podpora FreeRTOS

• Efektivnější správa paměti anástroje pro ladění

• Lepší podpora vícejádrových procesorů

• Častější aktualizace arychlejší adopce nových verzí mikrokontrolérů ESP

Vzhledem ktomu je ESP-IDF výkonnější aflexibilnější volbou, pokud vyžadujete pokročilejší hardwarové funkce, efektivnější správu zdrojů, chcete používat nejnovější verze mikrokontrolérů ESP32 aplně využít jejich výhod.

Můj tip: Pro první osahání nebo rychlé prototypování sESP32 je prostředí Arduino dobré adostatečné. SESP-IDF možná ze začátku zažijete trochu problémy, podobně jako uPlatformia, když nebudete vědět, jak nastavit to či ono nebo jak přidat novou komponentu, ale během několika dní si zvyknete avaše efektivita stoupne.

Nejprve musíte nainstalovat Visual Studio Code, některé knihovny pro ESP-IDF arozšíření ESP-IDF pro Visual Studio Code.

3.3.1 Instalace Visual Studio Code

Přejděte na oficiální stránky Visual Studia astáhněte si Visual Studio Code pro svůj operační systém. VSCode funguje voperačních systémech MacOS, Linux aWindows.

3.3.2 Instalace ESP-IDF

Výrobce nabízí několik způsobů instalace. Doporučuji začít instalací potřebných nástrojů aknihoven pomocí nástroje ESP-IDF Tools Installer. Postup je popsaný na stránkách výrobce.

https://docs.espressif.com/projects/esp-idf/en/stable/esp32/get-started/windows-setup.html

3.3.3 Instalace rozšíření Espressif IDF

Chcete-li začít pracovat sESP-IDF pomocí Visual Studio Code, musíte si nainstalovat oficiální rozšíření vscode od společnosti Espressif.

Stačí otevřít Visual Studio Code avnabídce na levé straně vybrat ikonu „Extensions“ (pokud používáte Mac, můžete použít klávesovou zkratku shift+cmd+x) avyhledat „Espressif IDF“.

Najděte rozšíření ESP-IDF aklikněte na tlačítko „Instalovat“.

3.3.4 Konfigurace rozšíření ESP-IDF

Po úspěšné instalaci rozšíření Espressif IDF jej musíme nakonfigurovat. Vaplikaci Visual Studio Code klikněte nahoře na „Zobrazit“ → „Paleta příkazů“ (vsystému Mac můžete použít klávesovou zkratku shift+cmd+p) avyhledejte „ESP-IDF: Konfigurace rozšíření ESP-IDF“. Tím se otevře okno snastavením.

Vpředchozím kroku jste si nainstalovali ESP-IDF apotřebné nástroje, proto můžete zvolit možnost „Využít existující nastavení“ (Use existing setup). Instalační program se pokusí najít nainstalované nástroje aknihovny, apodle nich nastaví celé rozšíření.

Pokud vše proběhne vpořádku, zobrazí se zpráva „ESP-IDF Extension for Visual Studio Code. Všechna nastavení byla nakonfigurována. Toto okno můžete zavřít.“.

3.3.5 Další doporučené kroky

Pro správné zvýraznění syntaxe C/C++, navigaci vkódu anávrhy kódu důrazně doporučuji nainstalovat rozšíření „C/C++ Extension“ pro VSCode od společnosti Microsoft. Můžete tak učinit výběrem ikony „Extensions“ (Rozšíření) vnabídce na levé straně aplikace Visual Studio Code (pokud používáte Mac, můžete použít klávesovou zkratku shift+cmd+x) avyhledat položku „C/C++“. Po instalaci rozšíření se doporučuje restartovat Visual Studio Code.

Výchozí konfigurace rozšíření C/C++ pro ESP-IDF by již měla být vytvořena alze ji nalézt vsouboru {PROJECT_DIR}/.vscode/c_cpp_properties.json.

3.3.6 Sestavení anačtení prvního příkladu

Klikněte na „View“ → „Command Palette“ avyhledejte ESP-IDF: Zobrazit příklady projektů. Po kliknutí na tlačítko enter se zobrazí výzva kvýběru frameworku, který chcete použít. Vyberte „ESP-IDF“.

Otevře se okno spříklady kódu ESP-IDF, včásti „get-started“ byste měli vidět příklad „blink“. Po jeho výběru se zobrazí podrobnosti opříkladu, jako jsou hardwarové požadavky, výstup příkladu adalší.

Nahoře klikněte na tlačítko „Create aproject using example blink“ (Vytvořit projekt pomocí příkladu blink). Otevře se okno, ve kterém je třeba zadat umístění vpočítači, kam bude projekt uložen. Po výběru složky vytvoří rozšíření ukázkový projekt aotevře jej ve vašem Visual Studio Code.

3.3.7 Výběr mikrokontroléru ESP32

Než budeme moci projekt zkompilovat asestavit, musíme nastavit cíl překladu, abychom mohli říci, který mikrokontrolér přesně používáme, například ESP32, ESP32S2, ESP32C3 atd. Pokud tento krok přeskočíte, měl by být výchozí cíl nastaven jako esp32.

Pokud budete potřebovat tato nastavení později změnit, můžete vždy znovu spustit nástroj pro konfiguraci cílového zařízení.

3.3.8 Překlad asestavení projektu

3.3.9 Příprava prostředí proflashování

3.3.10 Flashování projektu domikrokontroléru ESP32

3.3.11 Monitorování mikrokontroléru ESP32

3.3.12 Rychlý přístup kzákladním funkcím ESP-IDF

Zleva najdete:

• Terminál

3.3.13 Další nástroje poskytované ESP-IDF

Průzkumník ESP-IDF

Vyhledávání vdokumentech ESP-IDF

Šablony projektu ESP-IDF

Kde nalézt idf.py