ESP32 – Když už nás Arduino „nebaví“.
Zatímco se v jednu chvíli zdálo, že tradiční elektrotechnické „bastlení“ se poslední dobou značně vytrácí, příchod vývojových modulů jako je třeba rodina modulů Arduino tuto disciplínu tak trochu opět restartoval. Vývoj však běží dál a upřímně řečeno, mohlo by se říci, že standardní modul Arduino pomalu ztrácí dech. Arduino je jistě prima na prvotní seznámení s problematikou IoT, jistě poslouží pro řadu zajímavých projektů. Ale jak postupně narůstají nároky vývojáře na další a složitější projekty, narazí modul Arduino na své technické limity – zejména to může být nízká rychlost, absence analogového výstupu nebo kupříkladu nemožnost bezdrátové komunikace (WiFi, Bluetooth).*
ESP32/ESP8266 vs Arduino: Jak se ESP liší od Arduina
Modul ESP32 nebo ESP8266 patří mezi levné a nenáročné systému založené na čipu s integrovaným Wi-Fi, popř. Bluetooth. Jinými slovy, desky ESP32 nebo ESP8266 lze použít podobně jako jakékoliv Arduino, a přitom získat něco navíc. Moduly ESP jsou vyvinuty společností Espressif Systems a mají mikroprocesor Tensilica Xtensa. Desky s moduly ESP dnes vyrábějí různí výrobci, někteří integrují OLED displej, jiní třeba fotoaparát, existují i desky pro konkrétní případy použití.
Lze tedy říci, že Arduino UNO je určen spíše pro začátečníky, modul ESP8266 nebo ESP32 je určen už i pro středně pokročilé až pokročilé uživatele.
Zatímco pro modul Arduino se dá na internetu dohledat spousta českých textů a návodů, tyto novější moduly si zatím zasloužily pozornost spíše jen anglickou. To je jistě škoda! Dovolíme si tedy zde postupně seznamovat i české čtenáře s programováním modulu ESP32, který by po modulu Arduino mohl být Vaším dalším krokem do světa IoT a domácí automatizace.
ESP32 nebo ESP8266?
Byly zde zmíněné desky založené na dvou modulech ESP8266 a ESP32, podíváme se na srovnání těchto dvou základních modulů, které se dnes v oblasti domácí automatizace používají.
Oba moduly jsou dodávány s GPIO piny, které podporují různé protokoly, jako jsou: SPI, I2C, UART, ADC, DAC a PWM. Nejlepší na tom je, že tyto desky obsahují podporu bezdrátových sítí, tím se odlišují od podobných mikrokontrolérů, jako je Arduino. To znamená, že můžete zařízení snadno ovládat a sledovat na dálku přes Wi-Fi nebo Bluetooth (v případě ESP32), a to vše za velmi nízkou cenu.
Jaký je rozdíl mezi moduly ESP32 a ESP8266?
Měli byste ve svých projektech používat ESP32 nebo ESP8266?
Na začátek si jasně řekneme, že modul ESP32 je nástupce modulu ESP8266. ESP32 přidává další jádro CPU, rychlejší Wi-Fi , více GPIO pinů a podporuje Bluetooth 4.2 a Bluetooth s nízkou spotřebou energie. ESP32 je navíc dodáván s piny citlivými na dotek, které lze použít k probuzení ESP32 z hlubokého spánku, dále je zde vestavěný snímač magnetického pole a vestavěný snímač teploty (nejnovější verze ESP32 již nemají přístupné vestavěné teplotní čidlo).
Oba čipy mají 32bitový procesor. ESP32 je dvoujádrový 160 MHz až 240 MHz, zatímco ESP8266 je jednojádrový procesor, který běží na 80 MHz. Pochopitelně, pokud nepotřebujete využívat bezdrátové možnosti, můžete moduly použít ESP32/ESP8266 k ovládání vstupů a výstupů stejně jako je tomu u Arduina. Měli byste však vzít v úvahu, že zatímco Arduino pracuje s logikou 5 V, ESP32 a ESP8266 fungují na 3,3 V!
Programování modulů
Arduino IDE
Existuje mnoho způsobů, jak programovat desky ESP32 a ESP8266. Obě desky lze naprogramovat pomocí prostředí Arduino IDE nebo jiných IDE, jako třeba VS Code s rozšířením PlatformIO.
To je docela dobrá zpráva, zejména pro ty, kteří doteď používali desky Arduino a znají „programovací jazyk“ Arduino. Začít tedy s ESP32 nebo ESP8266 pomocí Arduino IDE a tedy i spustit svůj první projekt je velmi jednoduché.
Jen je třeba zmínit jednu poznámku. Ačkoli můžete obě ESP desky naprogramovat pomocí Arduino IDE, nemusí být obě kompatibilní se stejnými knihovnami a funkcemi. Některé knihovny jsou kompatibilní pouze s jednou z desek. To znamená, že váš kód pro ESP8266 někdy nebude kompatibilní s ESP32. Obvykle je nutné provést pár úprav.
MicroPython
Dalším populárním způsobem programování desek ESP32 a ESP8266 je použití firmwaru MicroPython. MicroPython je implementace Pythonu 3 zaměřená na mikrokontroléry a vestavěné systémy. MicroPython je velmi podobný běžnému Pythonu. Pokud tedy již umíte programovat v Pythonu, víte také, jak programovat v MicroPythonu. V MicroPythonu je většina skriptů Pythonu kompatibilní s oběma deskami (na rozdíl od použití Arduino IDE). To znamená, že ve většině případů můžete použít stejný skript pro ESP32 i pro ESP8266.
Tak ESP32 nebo ESP8266?
To opravdu závisí na tom, co chcete dělat. Pro obě desky existuje prostor a obě mají svá pro a proti.
ESP8266 je levnější než ESP32. A ačkoliv nemá tolik funkcí, funguje dobře pro většinu jednoduchých DIY IoT projektů. Má však určitá omezení v mapování GPIO a nemusí mít dostatek pinů pro to, co chcete udělat. Pokud tomu tak je, měli byste sáhnout po ESP32.
ESP32 je mnohem výkonnější než ESP8266, přichází s více GPIO a s více funkcemi, má rychlejším Wi-Fi a podporuje Bluetooth. Někteří lidé si myslí, že s ESP32 je obtížnější práce než s ESP8266, protože je složitější. Naopak, podle našeho názoru je programování ESP32 stejně snadné jako ESP8266, zvláště pokud jej hodláte programovat pomocí „jazyka Arduino“ v prostředí Arduino IDE.
ESP32 má také určité nevýhody, kupříkladu je dražší než ESP8266. Pokud tedy stavíte jednoduchý projekt IoT, ESP8266 by mohl udělat daný trik za nižší cenu. Navíc, protože je ESP8266 „starší“ než ESP32, některé knihovny a funkce jsou pro ESP8266 lépe vyvinuty a najdete více podpůrných zdrojů (fóra, lidé se stejnými problémy a způsob jejich řešení atd.). Jak ale čas plyne, ESP32 je široce přijímáno a tyto rozdíly ve vývoji a knihovnách za chvíli nebudou patrné.
My se v dalších článcích budeme výhradně zabývat moduly založenými na mikrokontroléru ESP32. Je univerzálnější a přichází s mnohem více funkcemi, jako je Bluetooth, různé zdroje buzení a mnoho dalšího. Navíc cenový rozdíl již není tak velký problém. Jakmile přejdete na ESP32, nebudete se chtít vrátit k ESP8266.
Závěrem shrneme hlavní rozdíly mezi ESP32 a ESP8266:
- ESP32 je rychlejší než ESP8266;
- ESP32 má více GPIO s více funkcemi;
- ESP32 podporuje analogová měření na 18 kanálech (analogově aktivované piny) oproti pouze jednomu 10bitovému ADC pinu na ESP8266;
- ESP32 podporuje Bluetooth, zatímco ESP8266 ne;
- ESP32 je dvoujádrový a ESP8266 je jednojádrový;
- ESP8266 je levnější než ESP32;
- ESP8266 má širší komunitu (i když si nemyslíme, že v tomto okamžiku je rozdíl tak velký);
- U mnoha projektů IoT a Wi-Fi dokáže ESP8266 udělat práci za nižší cenu;
- Obě desky lze naprogramovat pomocí Arduino IDE nebo jiných podporovaných IDE.
- Obě desky podporují firmware MicroPython.
Pokud jste začátečník, asi se již vyplatí začít s ESP32 místo ESP8266. Pokud však již máte desku ESP8266, můžete s touto deskou začít také a asi stejně dříve či později se na ESP32 potkáme. 😉
Postupně zde budeme dále uvádět jednotlivé články seznamující české čtenáře s modulem ESP32.
* | Zatímco většina lidí zná moduly Arduino UNO, Arduino Mega a Arduino Mini, které se běžně používají, Arduino má i širší škálu desek, jako je kupříkladu Arduino MKR 1000, která má také Wi-Fi, Bluetooth, dokonce i slot pro SIM kartu. Ale náklady na toto Arduino jsou vyšší, než na modul ESP32, kterému se budeme nadále věnovat. |