W sierpniu 2014 Espressif (wówczas nieznana chińska firma) wydał układ ESP8266. Miał być on używany przede wszystkim jako mostek Wi-Fi dla innych mikrokontrolerów, dopóki ktoś nie zauważył, że ma znacznie większą moc przetwarzania i pamięć niż te mikrokontrolery. W listopadzie 2014 Ivan Grokhotkov (obecnie pracujący dla Espressif) wydał pierwszy projekt Arduino HAL dla ESP8266. ESP8266 osiągnął znaczny sukces na rynku pomimo swoich wielu ograniczeń, który doprowadził jednocześnie do problemu, jakim jest bezpieczeństwo przetwarzania danych przez ten układ. Setki, jeśli nie tysiące różnych urządzeń domowych, od inteligentnych przełączników, inteligentnych żarówek po sterowniki LED czy nawadniania ogrodów, stacje pogody wykorzystują ESP8266. W wielu z tych urządzeń zainstalowane jest oprogramowanie bazujące na Arduino HAL takie, jak Tasmota, ESPurna, ESPEasy, Blynk. Niestety ESP8266 nie zapewnia żadnych środków do zabezpieczenia kodu lub przechowywanych danych. Każdy, kto ma fizyczny dostęp do układu ESP8266 w urządzeniu, może odczytać bardziej wrażliwe informacje takie, jak np. dane uwierzytelniające Wi-Fi.
W marcu 2019 wyciekły niektóre zdjęcia nowego układu o nazwie „Chip7 2-2-A”. Od tego czasu pojawiły się spekulacje dotyczące specyfikacji i możliwości nowego układu, które zostały ucięte we wrześniu 2019, kiedy Espressif ogłosił wydanie ESP32-S2. Niestety, aż do końca lutego 2020 nowe układy praktycznie dostępne były tylko dla deweloperów oraz w postaci tzw. prototypowych modułów deweloperskich. Główny powodem był brak wsparcia nowego układu w stabilnej wersji SDK – IDF (IoT Development Framework). Opóźnienie w wydaniu nowej wersji IDF, jak i samego ESP32-S2 było w dużej mierze spowodowane sytuacją kryzysową w Chinach wywołaną epidemią koronawirusa. W dniu 28.02.2020 Espressif ogłosił, że układ ESP32-S2 SoC oraz powiązane z nim moduły (ESP32-S2-WROVER, ESP32-S2-WROOM) i płyta rozwojowa (ESP32-S2-Saola-1) weszły do masowej produkcji. Pełne wsparcie dla ESP32-S2 w IDF jest od wersji 4.2, wcześniej w wersji 4.0 pojawiło już się wsparcie dla ESP32-S2, ale jako testowe (beta).
Układ ESP32-S2 jest wyposażony w 32-bitowy procesor 240 MHz XTensa® LX7 z 320 KB SRAM i 128 KB ROM, a także koprocesor ULP (ultra-low-power processor) oparty na architekturze RISC-V. Dzięki jednordzeniowemu procesorowi ESP32-S2 ma niższe zużycie energii niż ESP32, zachowując jednocześnie bardzo dobre możliwości przetwarzania. ESP32-S2 przejął architekturę konstrukcji MCU z Wi-Fi od ESP32, ma bardzo dobrą wydajność Wi-Fi, obsługuje protokoły IEEE 802.11 b/g/n HT20/HT40 2,4 GHz. Dzięki zintegrowanemu rdzeniu Xtensa 240 MHz ESP32-S2 jest wystarczający do budowy najbardziej wymagających urządzeń IoT bez konieczności stosowania dodatkowych zewnętrznych MCU.
Jedną z wyróżniających cech nowego układu jest koprocesor ULP oparty na architekturze RISC-V, o niskim zużyciu energii i większej mocy obliczeniowej w porównaniu do ULP w ESP32. ULP to procesor o bardzo niskim poborze mocy, który pozostaje włączony, gdy reszta układu znajduje się w trybie głębokiego uśpienia (deep-sleep). Użytkownicy mogą przechowywać program w pamięci RTC koprocesora ULP w celu uzyskania dostępu do urządzeń peryferyjnych, wewnętrznych czujników i rejestrów RTC podczas głębokiego uśpienia. ESP32-S2 ma dwa koprocesory ULP, jeden oparty na architekturze RISC-V (ULP-RISCV), drugi na automacie skończonym (finite state machine, ULP-FSM), jak w ESP32. Użytkownicy mogą wybierać między dwoma koprocesorami w zależności od potrzeb – jednak ULP-FSM i ULP-RISCV nie mogą być używane jednocześnie.
ESP32-S2 wspiera różnorodne mechanizmy bezpieczeństwa dla urządzeń IoT, zapewniając ochronę zarówno szyfrowania lokalnego, jak i w chmurze:
- Bezpieczny rozruch układu oparty jest na algorytmie RSA, który zapewnia, że tylko zaufane oprogramowanie będzie uruchamiane i wykonywane.
- Szyfrowanie pamięci Flash oparte jest na algorytmie AES-XTS (256 lub 512 bitów, zgodny z IEEE Std 1619-2007), który zapewnia bezpieczeństwo danych wrażliwych użytkownika oraz danych konfiguracyjnych; kod programu w zewnętrznej pamięci Flash i PSRAM w ESP32-S2 jest również zawsze szyfrowany.
- Protokół TLS może wykorzystywać wbudowany akcelerator kryptograficzny, aby poprawić wydajność łączności np. w chmurze.
- Bezpieczeństwo samego układu zostało szczególnie wzmocnione. Jest ono odporne na ataki polegające na wstrzykiwaniu błędów przez sprzęt i oprogramowanie, a także zapobiega wyciekowi kluczy w przypadku awarii napięcia lub fizycznemu atakowi lokalnemu.
W ESP32-S2 dodano także funkcję określania odległości i względnego położenia jednego urządzenia klienckiego WiFi względem punktów dostępu ToF (Time of Flight), aby poprawić dokładność i stabilność zasięgu bezprzewodowego. Nowością jest też obsługa protokołu TWAI (Two-Wire Automobile Interface), który jest typu multi-master oraz multi-cast z wykrywaniem i sygnalizacją błędów, przeznaczony głównie do zastosowania w przemyśle motoryzacyjnym i automatyce budynkowej.
SDK dla ESP32-S2 zawiera narzędzia do implementacji protokołu bezpiecznej konfiguracji hasła (protocomm) oraz biblioteki wspomagające uaktualnienie oprogramowania OTA (Over the Air Technology), które pomagają w szybkim i bezpiecznym aktualizowaniu oprogramowania układowego przez sieć Wi-Fi, podobnie jak ma to miejsce w układzie ESP32.
Porównanie ESP8266 vs. ESP32 vs. ESP32-S2
Jak wcześniej wspomniałem, Espressif ogłosił również dostępność płytki rozwojowej ESP32-S2-Saola-1 z układem ESP32-S2. Opis tej płytki znajduje się w tym artykule, nie będę więc powielał tych informacji. Dostępna będzie jeszcze kolejna płytka o nazwie ESP32-S2-Kaluga-1 (zdjęcie obok), określana przez Espressif jako „multimedialna”, wyposażona w wyświetlacz LCD z ekranem dotykowym, układem akwizycji obrazu z kamery oraz układem odtwarzania audio. Panel dotykowy ESP32-S2-Kaluga-1 ma być pyłoszczelny i wodoodporny o niskim współczynnik fałszywego dotyku (low false-touch rate). Nie jest jeszcze dostępna szczegółowa specyfikacja tej płytki.
Entuzjaści Arduino na razie nie będą mogli skorzystać z układu ESP32-S2. Ostatnia wersja Arduino HAL dla ESP32 (1.0.4) oparta jest na ESP-IDF w wersji 3.2. Trzeba więc będzie trochę poczekać, ale w kodzie źródłowym HAL wnoszone są już stosowne poprawki od ok. 2 miesięcy. Z punktu widzenia użytkownika Arduino HAL niewiele się zmieni, nadal będą dostępne te same klasy i API, co w wypadku ESP32 z wyłączeniem nieobecnych interfejsów sprzętowych w ESP32-S2. Nie powinno być więc problemów z przeniesieniem programów z ESP32 na ESP32-S2.
Komplet ostatniej wersji dokumentacji dla układu ESP32-S2 znajduje się pod adresem:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html
Koszt modułów z ESP32-S2 przy zakupach jednostkowych wynoszą: ESP32-S2-WROOM ok. 2$, ESP32-S2-WROVER ok. 2.5$.
Podsumowując, w nowym układzie ESP32-S2 Espressif próbuje wypełnić lukę pomiędzy ESP8266 a ESP32, zarówno pod względem funkcjonalności, jak i ceny. Z całą pewnością ESP32-S2 nie jest „zabójcą” dla ESP32, a raczej godnym następcą ESP8266.
W marcu 2019 wyciekły niektóre zdjęcia nowego układu o nazwie „Chip7 2-2-A”. Od tego czasu pojawiły się spekulacje dotyczące specyfikacji i możliwości nowego układu, które zostały ucięte we wrześniu 2019, kiedy Espressif ogłosił wydanie ESP32-S2. Niestety, aż do końca lutego 2020 nowe układy praktycznie dostępne były tylko dla deweloperów oraz w postaci tzw. prototypowych modułów deweloperskich. Główny powodem był brak wsparcia nowego układu w stabilnej wersji SDK – IDF (IoT Development Framework). Opóźnienie w wydaniu nowej wersji IDF, jak i samego ESP32-S2 było w dużej mierze spowodowane sytuacją kryzysową w Chinach wywołaną epidemią koronawirusa. W dniu 28.02.2020 Espressif ogłosił, że układ ESP32-S2 SoC oraz powiązane z nim moduły (ESP32-S2-WROVER, ESP32-S2-WROOM) i płyta rozwojowa (ESP32-S2-Saola-1) weszły do masowej produkcji. Pełne wsparcie dla ESP32-S2 w IDF jest od wersji 4.2, wcześniej w wersji 4.0 pojawiło już się wsparcie dla ESP32-S2, ale jako testowe (beta).
Układ ESP32-S2 jest wyposażony w 32-bitowy procesor 240 MHz XTensa® LX7 z 320 KB SRAM i 128 KB ROM, a także koprocesor ULP (ultra-low-power processor) oparty na architekturze RISC-V. Dzięki jednordzeniowemu procesorowi ESP32-S2 ma niższe zużycie energii niż ESP32, zachowując jednocześnie bardzo dobre możliwości przetwarzania. ESP32-S2 przejął architekturę konstrukcji MCU z Wi-Fi od ESP32, ma bardzo dobrą wydajność Wi-Fi, obsługuje protokoły IEEE 802.11 b/g/n HT20/HT40 2,4 GHz. Dzięki zintegrowanemu rdzeniu Xtensa 240 MHz ESP32-S2 jest wystarczający do budowy najbardziej wymagających urządzeń IoT bez konieczności stosowania dodatkowych zewnętrznych MCU.
Jedną z wyróżniających cech nowego układu jest koprocesor ULP oparty na architekturze RISC-V, o niskim zużyciu energii i większej mocy obliczeniowej w porównaniu do ULP w ESP32. ULP to procesor o bardzo niskim poborze mocy, który pozostaje włączony, gdy reszta układu znajduje się w trybie głębokiego uśpienia (deep-sleep). Użytkownicy mogą przechowywać program w pamięci RTC koprocesora ULP w celu uzyskania dostępu do urządzeń peryferyjnych, wewnętrznych czujników i rejestrów RTC podczas głębokiego uśpienia. ESP32-S2 ma dwa koprocesory ULP, jeden oparty na architekturze RISC-V (ULP-RISCV), drugi na automacie skończonym (finite state machine, ULP-FSM), jak w ESP32. Użytkownicy mogą wybierać między dwoma koprocesorami w zależności od potrzeb – jednak ULP-FSM i ULP-RISCV nie mogą być używane jednocześnie.
ESP32-S2 wspiera różnorodne mechanizmy bezpieczeństwa dla urządzeń IoT, zapewniając ochronę zarówno szyfrowania lokalnego, jak i w chmurze:
- Bezpieczny rozruch układu oparty jest na algorytmie RSA, który zapewnia, że tylko zaufane oprogramowanie będzie uruchamiane i wykonywane.
- Szyfrowanie pamięci Flash oparte jest na algorytmie AES-XTS (256 lub 512 bitów, zgodny z IEEE Std 1619-2007), który zapewnia bezpieczeństwo danych wrażliwych użytkownika oraz danych konfiguracyjnych; kod programu w zewnętrznej pamięci Flash i PSRAM w ESP32-S2 jest również zawsze szyfrowany.
- Protokół TLS może wykorzystywać wbudowany akcelerator kryptograficzny, aby poprawić wydajność łączności np. w chmurze.
- Bezpieczeństwo samego układu zostało szczególnie wzmocnione. Jest ono odporne na ataki polegające na wstrzykiwaniu błędów przez sprzęt i oprogramowanie, a także zapobiega wyciekowi kluczy w przypadku awarii napięcia lub fizycznemu atakowi lokalnemu.
W ESP32-S2 dodano także funkcję określania odległości i względnego położenia jednego urządzenia klienckiego WiFi względem punktów dostępu ToF (Time of Flight), aby poprawić dokładność i stabilność zasięgu bezprzewodowego. Nowością jest też obsługa protokołu TWAI (Two-Wire Automobile Interface), który jest typu multi-master oraz multi-cast z wykrywaniem i sygnalizacją błędów, przeznaczony głównie do zastosowania w przemyśle motoryzacyjnym i automatyce budynkowej.
SDK dla ESP32-S2 zawiera narzędzia do implementacji protokołu bezpiecznej konfiguracji hasła (protocomm) oraz biblioteki wspomagające uaktualnienie oprogramowania OTA (Over the Air Technology), które pomagają w szybkim i bezpiecznym aktualizowaniu oprogramowania układowego przez sieć Wi-Fi, podobnie jak ma to miejsce w układzie ESP32.
Porównanie ESP8266 vs. ESP32 vs. ESP32-S2
| ESP8266 | ESP32 | ESP32-S2 |
MCU | Xtensa single-core 32-bit L106 | Xtensa single/dual-core 32-bit LX6 | Xtensa single-core 32-bit LX7 |
Częstotliwość zegara | 80/160 MHz | 160/240 MHz | 240 MHz |
Koprocesor | brak | ULP (FSM) | ULP (RISC-V, FSM) |
SRAM | 160 KB | 520 KB | 320 KB |
Pamięć RTC | brak | 16 KB | 16 KB |
Pamięć zewn. Flash | do 16 MB | do 16 MB | do 1 GB |
Bluetooth | brak | BT 4.2 BR/EDR & BLE | brak |
Ethernet | brak | 10/100 Mbps | brak |
CAN | brak | 2.0 | brak |
Time of Flight | brak | brak | TAK |
Liczba GPIO | 16 | 34 | 43 |
Czujniki dotykowe | brak | 10 | 14 |
SPI | 2 | 4 | 4 |
I2C | 1 (programowy) | 2 | 2 |
I2S | 2 | 2 | 1 |
UART | 1½ | 3 | 2 |
ADC | 1 (10-bit) | 18 (12-bit) | 20 (12-bit) |
DAC | brak | 2 (8-bit) | 2 (8-bit) |
PWM | 8 | 16 | 8 |
SDMMC | brak | TAK | brak |
RMT | brak | TAK | TAK |
USB OTG | brak | brak | TAK (1.1) |
Interfejs LCD | brak | brak | TAK (8-bit serial RGB/8080/68000, 8/16/24-bit parallel) |
Interfejs kamery | brak | brak | TAK (DVP 8/16) |
Wbudowany czujnik temperatury | brak | TAK | TAK |
Wbudowany czujnik Halla | brak | TAK | brak |
Mechanizmy bezpieczeństwa | brak | Secure boot Flash encryption 1024-bit OTP | Secure boot Flash encryption 4096-bit OTP |
Wsparcie sprzętowe dla funkcji kryptograficznych | brak | AES, SHA-2, RSA, ECC, RNG | AES-128/192/256, SHA-2, RSA, RNG, HMAC, Digital Signature |
Tryb niskiego zużycia energii | 20uA | 10uA deep-sleep | Automatic RF power management 5uA in idle mode, 24uA at 1% duty cycle |
Jak wcześniej wspomniałem, Espressif ogłosił również dostępność płytki rozwojowej ESP32-S2-Saola-1 z układem ESP32-S2. Opis tej płytki znajduje się w tym artykule, nie będę więc powielał tych informacji. Dostępna będzie jeszcze kolejna płytka o nazwie ESP32-S2-Kaluga-1 (zdjęcie obok), określana przez Espressif jako „multimedialna”, wyposażona w wyświetlacz LCD z ekranem dotykowym, układem akwizycji obrazu z kamery oraz układem odtwarzania audio. Panel dotykowy ESP32-S2-Kaluga-1 ma być pyłoszczelny i wodoodporny o niskim współczynnik fałszywego dotyku (low false-touch rate). Nie jest jeszcze dostępna szczegółowa specyfikacja tej płytki.
Entuzjaści Arduino na razie nie będą mogli skorzystać z układu ESP32-S2. Ostatnia wersja Arduino HAL dla ESP32 (1.0.4) oparta jest na ESP-IDF w wersji 3.2. Trzeba więc będzie trochę poczekać, ale w kodzie źródłowym HAL wnoszone są już stosowne poprawki od ok. 2 miesięcy. Z punktu widzenia użytkownika Arduino HAL niewiele się zmieni, nadal będą dostępne te same klasy i API, co w wypadku ESP32 z wyłączeniem nieobecnych interfejsów sprzętowych w ESP32-S2. Nie powinno być więc problemów z przeniesieniem programów z ESP32 na ESP32-S2.
Komplet ostatniej wersji dokumentacji dla układu ESP32-S2 znajduje się pod adresem:
https://docs.espressif.com/projects/esp-idf/en/latest/esp32s2/get-started/index.html
Koszt modułów z ESP32-S2 przy zakupach jednostkowych wynoszą: ESP32-S2-WROOM ok. 2$, ESP32-S2-WROVER ok. 2.5$.
Podsumowując, w nowym układzie ESP32-S2 Espressif próbuje wypełnić lukę pomiędzy ESP8266 a ESP32, zarówno pod względem funkcjonalności, jak i ceny. Z całą pewnością ESP32-S2 nie jest „zabójcą” dla ESP32, a raczej godnym następcą ESP8266.
Cool? Ranking DIY