ESP32 – mikrokontroler dla retro maniaków i demosceniaków?
KaiN
Parę lat temu w świecie elektroniki pojawił się mały moduł WiFi o nazwie ESP-01. Moduł ten cechował się bardzo prostym schematem połączeń, co zachęciło hobbystów do gromadzenia i tłumaczenia głównie chińskiej dokumentacji dotyczącej zawartego w nim scalaka oznaczonego ESP8266. Okazało się, że jest on tanią i potężną bestią – 32-bitowym mikrokontrolerem taktowanym zegarem 80 MHz, zawierającym 1 MB pamięci flash, do kupienia za pojedyncze dolary. Wysiłkiem społeczności i przy wsparciu producenta pojawiła się dedykowana wersja kompilatora C, co spowodowało szeroką popularyzację tej platformy sprzętowej, czyniąc go konkurentem dla oryginalnej platformy Arduino i głównym sercem wielu projektów z dziedziny Internet of Things.
Nie trzeba było długo czekać, by w sprzedaży pojawiła się kolejna wersja mikrokontrolera. Chipy z serii ESP32 oprócz WiFi wspierają także technologię Bluetooth, zawierają dwa 32-bitowe rdzenie Tensilica LX6 taktowane zegarem do 240 MHz, dysponują 512 KB RAM-u i domyślnie pracują pod kontrolą FreeRTOS. Możliwości wykorzystania tego modułu są olbrzymie, zwłaszcza w stosunku do cen – w chwili pisania tego artykułu moduły ESP-WROOM32 kosztują mniej niż 30 zł, zaś ceny wygodnych płytek rozwojowych (np. ESP32 DEVKIT) zaczynają się już od 50 zł. Lecz czemu ja o tym piszę w Hot Style?
Otóż, drogi fanie retro, ESP32 lubi puszczać oko w stronę starych technologii. Za każdym wysypaniem się urządzenia na porcie szeregowym otrzymasz informację o Guru Meditation Error zawierającym stack trace. Jedną z pierwszych przykładowych aplikacji udostępnionych przez producenta był emulator NES-a. No ale ktoś zaraz pewnie pomyśli: „ale to przecież kwestia software’u, hardware nie ma z tym nic wspólnego”. Głęboko w krzemie siedzi easter egg, który społeczność odkryła stosunkowo niedawno. Zwierając pin GPIO12 do masy i wymuszając reset, wysłanie pustej linii do terminala spowoduje uruchomienie pełnoprawnego interpretera języka BASIC. I tu już można się wyszaleć, bo działają również komendy PEEK i POKE. Niestety nie udostępnia on łatwego sposobu na zapisanie programów, ale nic nie stoi na przeszkodzie, by do pamięci flash wgrać TinyBasic Plus i pobawić się z zapisywaniem własnych wypocin na karę SD.
Czy to jednak oferuje coś więcej niż zmuszanie mikrokontrolera do wystawiania zer i jedynek na piny? Zdecydowanie nie – na horyzoncie pojawiają się możliwości demoscenowe. Można podpiąć zewnętrzny wyświetlacz pod interfejs SPI lub I2C i pokusić się o napisanie jakichś demek. Ponadto, ESP8266 było na tyle potężne, że pozwalało na generowanie sygnałów NTSC przy użyciu zewnętrznych przetworników cyfrowo-analogowych. Używając ESP32 może być łatwiej osiągnąć podobny efekt, zwłaszcza że do dyspozycji jest większa moc obliczeniowa i dwa 8-bitowe wyjścia analogowe. Jeden rdzeń można by oddelegować do generacji sygnałów audio/video, zaś drugim rysować w buforze ramki. Kto wie, być może ESP dorówna w popularności PICO-8 a może i nawet doczeka się własnego compo na którymś z party?
KaiN