Płytka Nano ESP32 została pokazana na fotografii tytułowej, bazuje na układzie SoC Espressif ESP32-S3 z dwurdzeniowym MCU XTensa LX7 i zintegrowaną komunikacją bezprzewodową Wi-Fi 802.11 b/g/n oraz Bluetooth 5 (LE) przeznaczonym dla aplikacji IoT. Wykonana jest w niewielkim i wygodnym formacie płytek prototypowych – Nano. Standardowo dostępna jest bez wlutowanych szpilek (ABX00092) oraz z wlutowanymi (ABX00093). Cena w oficjalnym sklepie arduino.cc została ustalona odpowiednio na 18 i 19 €.
Specyfikacja
Arduino Nano ESP32 ma ułatwić tworzenie zaawansowanych aplikacji IoT, dzięki wydajnemu procesorowi i komunikacji bezprzewodowej. W tabeli 1 zestawiono podstawowe parametry nowego rozwiązania.
W firmowym pudełku otrzymujemy płytkę, ulotkę i naklejki oraz złącza szpilkowe, jeśli wybraliśmy wersję bez wlutowanych złącz. Płytka ma otwory z metalizacją krawędzi, która umożliwia wlutowanie jej bezpośrednio do urządzenia traktując ją jak element SMD.
Sercem Nano ESP32 jest moduł firmy uBLOX typu Nora W106-10B przystosowany do współpracy z zewnętrzną pamięcią programu QSPI. Dlatego na płytce znajduje się także układ pamięci typu GD25B128EWIGR – 128 Mbitów (16 MB).
Ponadto moduł Nora W106-10B jest wyposażony we wbudowaną antenę pcb, bez możliwości podłączenia anteny zewnętrznej, co może być przeszkodą w niektórych zastosowaniach. Warto wspomnieć, że uBlox oferuje też moduły z wbudowaną pamięcią 8 MB i wyprowadzonym pinem anteny zewnętrznej typu NoraW-101-00B oraz z wbudowaną anteną pcb typu Nora W106-00B.
Na rysunku 1 został pokazany schemat blokowy płytki Nano, pokazujący wszystkie kluczowe komponenty tego małego systemu.
Układ wyprowadzeń
W przypadku Nano ESP32, pomimo zachowania formatu należy zwrócić uwagę na wyprowadzenia GPIO, których kilka przypisanych jest nieco inaczej niż w pozostałych płytkach Nano. Inne są też funkcje wyprowadzeń zasilania. Przyporządkowanie wyprowadzeń modułu zostało pokazane na rysunku 2.
Płytka może być zasilana poprzez złącze USB-C z typowym napięciem 5 V oraz poprzez wyprowadzenie VIN napięciem z zakresu 6...21 V. Moduł Nora wymaga zasilania napięciem 3,3 V pochodzącym z wbudowanej przetwornicy obniżającej firmy MPS typu MP2322. Przetwornica w całym zakresie zasilania cechuje się sprawnością przekraczającą 85%. Wyprowadzenia GPIO są zgodne ze standardem 3,3 V, podłączenie wyższego napięcia uszkodzi moduł.
Zasilanie
Schemat bloku zasilania został pokazany na rysunku 3. Dosyć dziwną rzeczą jest brak jakiegokolwiek wsparcia dla zasilania z baterii lub akumulatora, płytka nie ma obwodów ładowania, ani przełączania zasilania rezerwowego. Podtrzymanie zasilania lub wsparcie dla zasilania akumulatorowego jest wymagane w większości urządzeń IoT, bo w przeważającej ilości przypadków są to jednak urządzenia przenośne. Z kolei zakres zasilania VIN większy niż 6 V wymaga zastosowania kilku akumulatorów połączonych w pakiet szeregowy, co nie jest rozwiązaniem ani tanim, ani kompaktowym. Mamy więc sytuację, gdzie komunikacja jest bezprzewodowa, a zasilanie nie…
Ewentualną próbą uratowania sytuacji jest użycie zworki SJ1 do odłączenia przetwornicy 3,3 V i doprowadzenia własnego zasilania 3,0...3,6 V poprzez wyprowadzenia +3V3. Wymaga to dodatkowej przetwornicy obniżająco-podwyższającej np. TPS63031, aby zapewnić 3,3 V w całym zakresie napięcia typowego akumulatora litowego lub pakietu baterii. Naprawdę szkoda, że nie dopracowano obwodu zasilania, to niepotrzebne utrudnienie w aplikacji Nano.
Sekcja zasilania ma też kilka innych uproszczeń, które należy mieć na uwadze przy aplikacji płytki. Na wyprowadzeniu VIN podczas zasilania z USB pojawia się napięcie VUSB, obniżone o spadek napięcia na diodzie D2. Więc wyprowadzenie VIN, staje się wyprowadzeniem VOUT – trzeba na to zwrócić uwagę.
W szereg z VUSB nie wprowadzono, żadnego elementu zabezpieczającego, co przy przypadkowym zwarciu na VIN może mieć opłakane skutki, jeżeli równie oszczędnościowo zaprojektowany jest HUB lub port USB w współpracującym komputerze.
Obecność zasilania +3,3 V sygnalizowana jest przez diodę. Płytka nie udostępnia też napięcia 5 V. W przypadku Nano Every na wyprowadzeniu +5 V, było obecne napięcie używane do zasilania układów współpracujących. W przypadku ESP32 zmieniona została funkcjonalność wyprowadzenia +5 V i jest na nie wyprowadzone napięcie VUSB, które dostępne jest tylko wtedy, gdy zasilamy moduł z USB. Zasilając z napięcia VIN, nie mamy źródła 5 V przydatnego np. do zasilania konwerterów poziomu i urządzeń niezgodnych z 3,3 V. To kolejna płytka po serii UNO R4, w której uproszczenia w obwodach zasilania, są uciążliwe dla użytkownika w większości możliwych aplikacji.
Różnica w GPIO nie jest duża, ale należy na nią zwrócić uwagę, szczególnie jeżeli używany płytek rozszerzeń. Nano Every ma wyprowadzony sygnał RESET na dwa wyprowadzenia (fizyczne zmostkowanie na pcb), ESP32 tylko na jedno. Drugie z wyprowadzeń pełni funkcję GPIO0 oraz pinu BOOT1 (B1 – Board Reset 1). Różnica jest także w wyprowadzeniu AREF, które w ESP32 jest drugim pinem trybu BOOT0 (B0 – Board Reset 0). Bez modyfikacji pcb się nie obejdzie, inaczej możemy mieć problemy z uruchomieniem płytki NANO ESP32. Arduino rekomenduje użycie pinów B0/GPIO46, B1/GPIO0 tylko jako wyjść, aby uniknąć problemów ze startem płytki w przypadku nieokreślonych stanów tych wyprowadzeń. Oba z wyprowadzeń odpowiadają za zmianę trybu bootowania ESP32 podczas startu/resetu.
Płytka nie jest wyposażona w żadne peryferia oprócz przycisku RESET, diody LED oraz dodatkowej diody RGB, która w pierwszych wersjach płytki miała zamienione kolory niebieski z zielonym. Dla eksperymentujących, na spodzie płytki są wyprowadzone pady interfejsu JTAG i USB.
Oprogramowanie
Od strony programowej płytka oczywiście wspierana jest poprzez środowisko Arduino, które zostało uzupełnione o podstawowe przykłady zgodne z Nano ESP32. W dalszym ciągu nie usunięto problemów z DFU – po załadowaniu programu nie jest w stanie odnaleźć portu do którego podłączony jest ESP32:
(LIBUSB_ERROR_NOT_SUPPORTED)
Zapewniona została zgodność z Arduino Cloud. Możliwa jest też instalacja Micropythona z obrazów udostępnionych na stronie producenta (aktualnie: ARDUINO_NANO_ESP32-20230824-unstable-v1.20.0-396-g1dedb65e6.uf2) i współpraca ze środowiskiem Arduino Lab for Micropython. Debugowanie dalej nie jest wspierane, jak twierdzi i przeprasza Arduino – „jeszcze”, ponieważ jest niezgodne z aktualnym środowiskiem, czyli znowu rzeczywistość nie zdążyła za reklamą. Jak zwykle pozostaje więc poszukać alternatywy.
Podsumowanie
Bardzo niepokojąca staje się tendencja do wypuszczania na rynek mocno niedopracowanych produktów, która oczywiście nie tylko dotyczy zespołu Arduino. Mamy więc dostępne płytki z BLE, który jest nieaktywny, płytki z debuggerem, który jeszcze nie działa itp. Oczywiście wszystkie te funkcje są w materiałach reklamowych i niebawem zostaną uruchomione…
Adam Tatuś, EP