ESP32: začínáme s Micropythonem a IoT

Tento „miniseriál“ je určen pro všechny ty, kteří se této problematice chtějí věnovat jako hobby, ale říkají si, že nastal ten moment kdy se odprostit od Arduina. Jinak řečeno, budou chtít začít používat pokročilejší platformu, která jim poskytne více možností. Jako jednu z nejzajímavějších možností doporučíme moderní a výkonnou platformu ESP32 obohacenou o Python, přesněji tedy Micropython. Desky z této rodiny jsou typicky velmi levné ($3.76 – Aliexpress) a už přímo v mikroprocesoru je vyřešená komunikace přes WiFi, takže se jedná o plnohodnotnou platformu.

ESP32

Čip s označením ESP32 od společnosti Espressif Systems je následovníkem oblíbeného modulu ESP8266, který byl zamýšlený pouze jako WiFi modul, ale dal se programovat, takže se využíval i jako mikrokontrolér.

esp32 devkit

Varianta vývojové desky ESP32 Devkit V1 s 2 x 15 piny (zdroj: https://www.banggood.com)

Nejvýznamnější novinkou ESP32 je, že tento čip je už primárně určený jako mikrokontrolér. Podporuje i bluetooth 4.0 LE, takže tento typ komunikace lze využívat společně s WiFi. ESP32 má dvoujádrový procesor s 32 bitovými jádry Xtensa LX6 taktovanými na 160 MHz. Jedno jádro řeší WiFi komunikaci a druhé máte k dispozici pro svůj program. Jádra se dají přetaktovat až na 240 MHz. K dispozici je až 36 GPIO pinů. Kapacita flash paměti je 4 MB a RAM je tvořená třemi bloky s celkovou kapacitou 520 kB. Pro program je k dispozici přibližně 400 kB RAM. Zaváděcí program je uložený v ROM a má kapacitu 448 kB.

esp32 core

Architektura čipu ESP32 (zdroj: https://www.exploreembedded.com)

Hardwarovou výbavu ESP32 tvoří:

  • 34 × programovatelných GPIO pinů. Jakýkoliv GPIO je možno využít jako PWM, maximálně však 16 kanálů zároveň
  • 12-bit SAR ADC do 18 kanálů. ESP32 disponuje 8 kanálovým ADC1 a 10 kanálovým ADC2 převodníkem. ADC1 je plně k dispozici. ADC2 převodník je dostupný pouze v omezeném množství, protože většinu jeho kanálu využívá modul bezdrátové komunikace
  • 2 × 8-bit DAC převodníky
  • 10 × dotykové senzory, které dokážou detekovat dotyk prstu na plošku připojenou k příslušnému pinu
  • 4 × SPI, jedno rozhraní je určené pro komunikaci s flash pamětí
  • 2 × I2S
  • 2 × I2C s maximální frekvencí 5 MHz.
  • 3 × UART, maximální přenosová rychlost je 5 Mbit/s
  • 1 host (SD/eMMC/SDIO)
  • 1 slave (SDIO/SPI)
  • Ethernet MAC interface s dedikovaným DMA a podporou IEEE1588
  • CAN 2.0
  • IR (vysílač/přijímač)
  • Motor PWM
  • Integrovaná Hallova sonda, jejíž výstup je možné interně připojit na zesilovač a AD převodník

Pokročilá správa napájení umožňuje přepínat mezi pěti různými módy spotřeby, čímž je možné podstatně prodloužit dobu funkce zařízení při běhu z baterií.

Pro konečné projekty je možné využít přímo modul ESP-WROOM-32 ve velikosti poštovní známky. Tento modul je osazený přímo na Devkitu.

ESP WROOM 32

Samostatný modul určený pro zástavbu do vlastního zařízení ESP WROOM 32 (zdroj: https://www.banggood.com)

Produktová stránka výrobce – společnost Espressif: https://www.espressif.com/en/products/hardware/esp32/overview

Nejjednodušší způsob ovládání modulu s ESP32 umožňuje ovládat pouze jeho WiFi část s původním firmwarem a to pomocí AT příkazů přes sériovou linku. ESP32 díky druhému jádru můžeme využít jako výkonný mikrokontrolér s bohatou výbavou portů. Nejčastěji je využívám firmware NodeMCU (Arduino), který umožňuje kromě ovládání WiFi i vytvoření vlastního programu pro řízení GPIO. NodeMCU je open-source firmware, který je nutné do ESP32 nahrát a přepsat tím firmware nahraný od výrobců. Vytvořený program se nahrává přímo do čipu, díku tomu je WiFi modul schopný samostatné funkce bez pomocného mikrokontroléru.

Na účely tohoto seriálu budeme využívat vývojový modul ESP32/Devkit V1, který má zabudované USB rozhraní pro programování přes sériovou linku a zároveň napájí celý modul z USB. Napájecí napětí samotného modulu je 3,3 V, samotný čip dokáže pracovat v rozsahu 2,3 V až 3,6 V. USB poskytuje napájecí napětí 5 V, proto je deska osazena stabilizátorem napětí 3,3 V.

Postupně budeme k modulu ESP32 připojovat komponenty (LED diody, displeje, relé, tranzistory, atd…). Modul Devkit V1 je konstruovaný tak, aby šel pohodlně zasunout do nepájivého pole.

esp32 pinout

 

Instalace Micropython

Micropython je opensource implementace programovacího jazyka Python 3, vytvořená v programovacím jazyku C a optimalizovaná pro běh na mikrokontrolérech. Micropython a Python všeobecně je interpretační jazyk, to znamená, že mikrokontrolér vykonává příkazy napsané v Pythonu bez toho aby je kompiloval. Proto aby jste mohli Micropython využívat v modulu ESP32, je nutné ho do modulu nainstalovat.

V tomto seriálu budeme využívat knihovnu octopus od octopusengine.org.

Na instalaci firmwaru do modulů ESP je určený nástroj esptool. Při prvním nahrávání se doporučuje vyčistit paměť flash pomocí příkazu erase_flash. Ve Windows stáhněte nástroj esptool.exe z adresy https://dl.espressif.com/dl/esptool-2.6.1-windows.zip, soubor uložte do adresáře. Nejlépe do adresáře s krátkou cestou (například C:\esptool\esptool.exe). Stáhněte binární obraz z webu https://octopusengine.org/download/micropython/micropython-octopus.bin a uložte ho do stejné adresáře jako esptool.exe.

Instalace firmwaru se provádí pomocí příkazové řádky ve Windows, tu spustím následujícím: Win+R, do kolonky otevřít zadejte cmd a potvrďte. Před zahájením je ještě nutné zjistit jaký COM port dostal modul přiřazený. Ten lze jednoduše zjisti přes Správce zařízení, v podsložce Porty (COM a LPT). Při přehrávání firmwaru je nutné při připojování modulu k napájení držet tlačítko BOOT, tlačítko pak můžeme pustit.

Instalaci zahájíme první vymázáním pamětu modulu, zadáním následujícího příkazu do cmd (místo otazníku vyplníme číslo portu):
C:\esptool\esptool.exe –chip esp32 -p /COM? erase_flash
esp32 python firmware

Následně se do modulu nahraje již samotný firmware příkazem:
C:\esptool\esptool.exe –chip esp32 -p /COM? write_flash -z 0x1000 C:\esptool\micropython-octopus.bin
esp32 update firmware

Tímto je přehrání firmwaru hotové.

 

Jak dostat program do modulu

Máte dvě možnosti. První z nich – komunikace s modulem pomocí emulátoru terminálu, například Putty, je jednoduchá, méně komfortní, hlavně když nechcete zadávat program postupně po řádcích, ale přenést ho do modulu jako soubor se zdrojovým kódem. Druhá možnost je využít nástroj přímo pro vývoj Micropythone, kde můžete využít příkaz ls na zobrazení souborů ve složce a na přenos souborů využít příkazy put a get. Po zadání klíčového slova repl se přejde do komunikačního rozhraní s modulem.

Na zadávání příkazů a výpis odezvy se používá emulátor terminálu, ve Windows software Putty, v Linuxu a MacOS screen. Aplikaci Putty lze stáhnout na adrese https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

Po spuštění Putty nastavte port na kterém je namapovaný modul ESP32 a komunikační rychlost na 115200 baud. Správně nakonfigurovaný modul vypíše na emulátor terminálu prompt >>>. Funkčnost si lze ověřit jednoduchým matematickým příkazem, například zadáním 1+2, vypíše výsledek 3.

Můžete vyzkoušet naimportovat nějakou knihovnu, například přímo knihovnu pro vnitřní periferie, provedete zadáním příkazu:
>>> import esp32
Hodnotu magnetického pole naměřenou Hallovou sondou načteme příkazem:
>>> esp32.raw_temperature()

putty esp32

V následujícím díle se seznámíme s obsluhou hardwaru a knihovnou Octopus.

 

Zdroj: https://www.pcrevue.sk/a/IoT-prakticky–Python-na-ESP32–popis-portov-a-rozhrani

Buďte první kdo přidá komentář

Napište komentář

Vaše e-mailová adresa nebude zveřejněna.


*