A méltán népszerű ESP8266 utódja az ESP32 fantázianéven jelent meg 2016-ban. Érdekes módon közel sem terjed olyan iramban mint elődje, bár igaz, ára is majdnem a duplája. (liciten, 1400Ft-ért jutottam a tesztpéldányhoz)
Update: ESP32 és a MicroPython (2020)
Nézzük miben térnek el egymástól:
ESP8266 | ESP32 | |
CPU | egy magos | két magos |
Sebesség | 80Mhz | 160Mhz |
Memória | 160 kByte | 520 kByte |
Flash tárhely | SPI <=16MB | SPI <=16MB |
GPIO | 17 | 36 |
PWM | csak szoftveres | hardveres+szoftveres |
802.11 b/g/n Wi-Fi | Támogatja, 20Mhz csatornaszélességgel | Támogatja, 40Mhz csatornaszélességgel |
Bluetooth | - | BT 4.2 |
Kapacitív érintésérzékelő bemenet | 0 | 10 |
ADC bemenet | 1 db (10bit felbontással) | 18 db (12 bites felbontással) |
DAC kimenet | 0 | 2 |
Belső CPU hőmérő | - | van |
Ez mind szép és jó, de miért kellhet ez nekem?
- CPU: A két külön mag előnyös lehet, ha az egyik pl a kommunikációt intézi, a másik pedig e közben a szenzorok eredményeit gyűjti be. Az egymagos ESP8266 esetén bizony a kommunikáció akadozhat, ha egy szenzor lekérdezése, vagy egyéb kódrészlet blokkolja a program futását...
- Memória: no ez mindig el szokott fogyni, sosem lehet elég...
- GPIO: multiszenzoroknál a 17 (ami csak elméletileg ennyi, szabadon nem mind használható) tű éppen csak elég, sosem árthat eggyel több...
- PWM: Amennyiben használunk szoftveres PWM-et bárhol, láthatjuk, hogy nem túl jó, "remeg" néha a kimenet. A hardveres gyorsabb és stabilabb. Ha nem használtunk ilyet, akkor a hardverest se fogjuk.
- WiFi: A HT40 csatornaszélesség nagyobb elméleti sebességet biztosít, cserébe két csatornát foglal be, vagyis kevesebb eszköz fér el így egymás mellett, és igazából ESP modulokkal szemben ritka igény, hogy 150mb/s-el streameljenek valami műsort, bár az ESP32 már képes lenne rá ilyen módon
- Bluetooth: jelenlétérzékelésre és okostelefonnal/PC-vel való kommunikációra, de akár a WiFi kapcsolat megszakadása esetére tartalék kapcsolatként is remek lehet
- Kapacitív érintésérzékelés: igazából nem támadt még erre igényem, de
- ADC: bizony ha az akkumulátor feszültségén kívül vízszintet, nedvességet, illetve távolságot akarunk valamiért mérni egy időben, egynél több ADC-re van szükség, a 18 meg egyenesen Kánaán!
- DAC: primitív hangkimenetre lehet használni
- Hőmérő: valós időben láthatjuk, hogy nem melegszik-e túl a készülék, MQTT-n gyűjthetjük is az adatot, és dönthetünk, hogy könnyítünk a feladatain, vagy hűtjük, ha szükséges. :) De közeli meghibásodás előrejelzésére is jó lehet.
Elképesztő egyébként, hogy a teljesítmény ilyen mértékű növekedése ellenében a fogyasztása nem növekedett. A chipen levő felirat szerint egy ESP-WROOM-32 büszke tulajdonosa lettem, ám én úgy vagyok ezzel, hogy hiszem, ha működik.
Ezért beizzítottam:
A microUSB-USB számítógéphez való csatlakoztatása után, a NodeMCU-nál már megszokott módon rögtön belép programozói módba, gyorsan meg is néztem, mit vettem:
sudo python2 esptool.py --port /dev/ttyUSB0 flash_id
esptool.py v2.0.1
Connecting........____
Detecting chip type... ESP32
Chip is ESP32D0WDQ6 (revision 1)
Uploading stub...
Running stub...
Stub running...
Manufacturer: c8
Device: 4016
Detected flash size: 4MB
Hard resetting...
Az ESP32D0WDQ6, bár egy korai szériás darab, de valóban egy kétmagost sikerült szereznem 6x6mm, beágyazott flash nélkül, a 4MB flash a fejlesztői lapra van integrálva és SDIO-n keresztül csatlakoztatva.
Sajnálatos módon a használata sem túl egyszerű. Pár órát rááldoztam az életemből, hogy az Arduino alá feltegyem az arduino-esp32 könyvtárat, majd még pár továbbit, hogy le tudjam fordítani az ESPEasy Mega legújabb változatát.. és be kell valljam, csak mérsékelt sikereket értem el. Sok kivágott pluginnal később sikerült egy binárist készítenem, de akkor jött a firmware feltöltése az esptool-al... és nem indult el.
Próbálkoztam a még béta stádiumban levő uPyEasy-vel is, hasonló sikertelenséggel.
Szerencsére aztán rátaláltam egy kész binárisra, amiben a flasheléshez szükséges egyéb fájlok is megtalálhatóak:
A benne levő állományok windowshoz készültek, a flashSerial.cmd segítségével tudják eme nagyszerű operációs rendszer hívei feltölteni az USB kábellel csatlakoztatott ESP32-re a firmware-t. A többiek hozzám hasonló módon Linuxon az alábbi parancs segítségével érhetik egy ugyanezt:
sudo python2 esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 57600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 boot_app0.bin 0x1000 bootloader.bin 0x10000 ESPEasy32_R20000.bin 0x8000 ESPEasy.ino.partitions.bin
Ez persze még erősen teszt verzió, néhány pluginnal, és szerintem teljes mértékben csak a jelenleg is még kezdeti stádiumban levő uPyEasy segítségével lehet majd kihasználni az ESP32 által nyújtott lehetőségeket. Addig megmarad az erős programozói vénákkal rendelkezők játékszerének, egyelőre én is félreteszem.
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.