Immár két éve, hogy először kezem ügyébe került egy ESP32, és nem sikerült összebarátkoznom vele. Nem kizárólag azért, mert nem nagyon volt értelmes firmware, amivel üzemeltetni lehetett volna, de a gyártó Espressif által kiadott SDK is hemzsegett a hibáktól és hiányosságoktól. Az elmúlt két év során sokat javult a helyzet, immár az ESPEasy és a Tasmota is aránylag stabilan tudja kezelni - az alapfunkcióit legalábbis.
A Bluetooth kezelésével ugyan továbbra sem vagyok túl elégedett, mert még mindig hajlamos újraindítani az egész ESP32-t olykor... de a többi funkcióval nem láttam nagy problémákat.
ESP32-D0WDQ6 / ESP32-D0WD chippel kétféle kiszerelés létezik: az ESP32-WROOM-32 és az ESP32-WROVER.
Az ESP32 flash tárhelye 4/8/16MB lehet, a 4MB a legáltalánosabb. Nem összetévesztendő a tárhely a memóriával, mivel a flash csak tárolja a programot, nem abban fut!
A memóriája alapvetően 520KB méretű, kivételek ez alól a WROVER chipek, amiken extra 4MB PSRAM kapott még helyet. (esetleg 8MB) Nem lehetetlen persze WROOM-ot sem felbővíteni PSRAM-al, de kevés ilyet látni. Oda kell figyelni arra az apró különbségre is, hogy a PSRAM-al szerelt változatokon a GPIO16 és GPIO17 a PSRAM kapcsolattartásra van bekötve, így ha a felhasználó elkezdi saját célra használni, abból fagyás lesz. Valamivel a PSRAM hozzáférési ideje lassabb, mint az alapmemóriájáé, viszont sok feladatra az a bizonyos 520KB kevéske, pl képmegjelenítésnél, képtovábbításnál. (lásd ESP32 kamera, ami szintén PSRAM-al szerelt)
ESP32-S0WD / ESP32-SOLO-1 az egymagos kiszerelés, valamivel olcsóbb, de nem túl elterjedt. Minden más tulajdonsága megegyezik a WROOM-al. Ám mivel a kétmagos DOWD chipeken a fordítók úgy intézik, hogy az egyik magon fussanak az alapszintű rendszerfunkciók, Wifi+Bluetooth kezelés, a másikon pedig a felhasználói program, így nem hiszem, hogy a DOWD-ra fordított firmware elfutna a SOWD-n is...
Létezik integrált áramköri antennás és külső IPEX csatlakozós változat is ESP32-ből, nagyobb távolság esetére célszerű a külső antennás modellt választani. Az alapmodulokon túl már rengetegféle felszereltségű és méretű lap kapható, van amin audio dekóder chip van integrálva, vagy LAN csatlakozó, esetleg POE áramellátó chip.
A frissen szerzett ESP32-ket általában MicroPython firmware-el szoktam tesztelni.
De mi is az a MicroPython? A Python egy magas szintű, úgynevezett interpreteres nyelv, a megírt program máris futtatható, ha rendelkezünk a Python értelmezővel, nem kell lefordítani előbb a programot gépi nyelvre. (gyak: ha megírunk egy programrészt, máris tesztelhetjük) A MicroPython (MP) a Python 3-as verziójának egy "lecsupaszított" változata, az alapok ugyanazok, de a nagyobb/lassabb funkciókat kivették belőle. Számomra az is pozitívum, hogy gyengén típusos nyelv, így például ugyanaz a változó tartalmazhat szöveget, a következő pillanatban pedig számot.. keményvonalas programozók számára ez lehet, hogy rémálom, szerintem viszont rugalmasság, és ami nem hajlik, az törik. :) No meg az sem utolsó szempont, hogy rengeteg egyszerű példaprogram és leírás található hozzá. A Python-al már korábban összebarátkoztam, különösen az RPIEasy programom megírása közben.
Érdeklődéssel tesztelgetem hát a Micro változatot. Alapvetően az úgynevezett PyBoard-okkal fut a legjobban, ezek STM32 lapok. Támogatja viszont az ESP32-t is, ami azért még mindig olcsóbb és több tárhellyel bír. A letöltések között elég sok variáns van, két paraméterre kell figyelni:
- a gyártói SDK ESP-IDF v3 vagy v4, az utóbbi nem támogatja a vezetékes LAN kapcsolatokat = nem mindig a legújabb a legjobb, érdemes a v3-at választani egyelőre
- van Generic és SPIRAM változat, ez utóbbi a 4MB PSRAM-al szerelt modulokhoz való, érdemes ezt letölteni, mivel a PSRAM nélküli változaton is gond nélkül fut, kiír egy hibát a logba induláskor, de más problémát nem okoz
https://micropython.org/download/esp32/
Csatlakoztassuk az ESP32-t USB-re, meg fog jelenni valami efféle, amiből tudjuk, hogy ttyUSB0 címet kapott:
usb 1-1.1: new full-speed USB device number 3 using ehci-pci
usb 1-1.1: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.63
usb 1-1.1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
usb 1-1.1: Product: USB2.0-Serial
usbcore: registered new interface driver usbserial_generic
usbserial: USB Serial support registered for generic
usbcore: registered new interface driver ch341
usbserial: USB Serial support registered for ch341-uart
ch341 1-1.1:1.0: ch341-uart converter detected
usb 1-1.1: ch341-uart converter now attached to ttyUSB0
Első körben töröljük a flash tárhelyet, majd írjuk rá a 0x1000 címtől kezdve a számunkra szimpatikus binárist:
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash
esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash -z 0x1000 esp32spiram-idf3-20200902-v1.13.bin
De akinek nem szimpatikus a konzol, grafikus felületen is megteheti ugyanezt, példának okáért a Thonny segítségével, ami Windowson is fut. Ubuntun sudo apt install thonny és fenn is van. :)
Indulását követően a Run -> Select interpreter menüben válasszuk ki a MicroPython (ESP32) lehetőséget.
A firmware frissítésre kattintva az alábbi ablakban ismét ki kell választani a portot és kitallózni a letöltött bináris firmware állományt. Előzékenyen felajánlja a teljes törlést is, ezt első alkalommal célszerű megejteni. Az Install-ra kattintás után feltölti az eszközre a kiválasztott állományt.
Ha minden sikerült és zárjuk a két ablakot, a főablak alján levő shellben a REPL (Read Evaluate Print Loop) soros porti kimenet adatait látjuk és ide tudunk közvetlenül is python parancsokat bevinni például így:

import gc
gc.collect()
gc.mem_free()
A fenti példában a gc modul importálása után a gc.mem_free() parancs visszaadta, hogy 108.544 byte memória szabad az eszközön.. mivel indítás után közvetlenül vagyunk, ez semmiképpen sem PSRAM-al szerelt modell, hanem az 520KB memóriás alapmodell. Azért csak 100 kB van szabadon, mert az 520-ból igazából csak 328kB közvetlenül elérhető, 192kB eleve csak az utasítások tárolására van fenntartva, és a 328-ból a MicroPython indulása előtt elfoglal a FreeRTOS a TCP/IP, WiFi és Bluetooth valamennyit, és csak azután jön a micropython interpreter, és abban a mi programunk. Szóval a 4MB PSRAM-al szerelt ESP32 máris kívánatosabbnak látszik. :)
Nagyobb programot a középen levő fehér szöveges mezőbe lehet bevinni, például ha az alábbiba beírjuk a megfelelő helyre a saját WiFi-nk nevét és jelszavát, elmentjük a "MicroPython device" eszközre és megfuttatjuk a zöld körben levő fehér háromszög ikonra kattintva, akkor felcsatlakozik a wifire és máris kiírja milyen IP címet kapott:
Az ESP32 alapokról egyelőre ennyit, folytatás következik ESPEasy, Tasmota, mPyEasy és LAN használat témakörben hamarosan.
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.
Kommentezéshez lépj be, vagy regisztrálj! ‐ Belépés Facebookkal