Elektroda.pl
Elektroda.pl
X
BotlandBotland
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Nowy układ Espressif ESP32-S2 - następca ESP8266?

khoam 11 Kwi 2020 21:09 3732 17
  • Nowy układ Espressif ESP32-S2 - następca ESP8266?
    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.

    Nowy układ Espressif ESP32-S2 - następca 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.

    Nowy układ Espressif ESP32-S2 - następca ESP8266?
    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 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 20uA10uA deep-sleep Automatic RF power management 5uA in idle mode, 24uA at 1% duty cycle

    Nowy układ Espressif ESP32-S2 - następca ESP8266?
    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.

    Fajne! Ranking DIY
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
    O autorze
    khoam
    Poziom 38  
    Offline 
    Specjalizuje się w: c++ refactoring
    khoam napisał 4468 postów o ocenie 445, pomógł 406 razy. Mieszka w mieście Piaseczno. Jest z nami od 2007 roku.
  • BotlandBotland
  • #2
    krzbor
    Poziom 19  
    Fajny artykuł. Drobna poprawka - ESP8266 ma 80/160 MHz.
    Mam też pytanie - rozumiem, że wgrywanie czegoś do pamięci Flash (w przyszłości w Arduino) zawsze spowoduje, że będzie to zaszyfrowane?
  • BotlandBotland
  • #3
    khoam
    Poziom 38  
    krzbor napisał:
    Drobna poprawka - ESP8266 ma 80/160 MHz.

    Faktycznie, poprawiłem, dziękuję.

    krzbor napisał:
    że wgrywanie czegoś do pamięci Flash (w przyszłości w Arduino) zawsze spowoduje, że będzie to zaszyfrowane?

    Tak, pytanie jest tylko, czy i w jaki sposób będzie wspierane generowanie klucza szyfrującego ze strony Arduino. Jeżeli taki klucz nie zostanie wygenerowany, to wtedy nie ma mowy o szyfrowaniu zawartości flash. W tej chwili tak się dzieje w ESP32, Arduino HAL wykorzystuje "development mode", czyli bez szyfrowania flash - flaga CONFIG_FLASH_ENCRYPTION_ENABLED w sdkconfig nie jest ustawiona.
  • #4
    bremenpl
    Poziom 13  
    To juz mozna jakiegos sensownego linuxa postawic na 1 GB flashu.
  • #5
    jack63
    Poziom 42  
    W kwestii ADC. Przecież nie jest ich 20 tylko pewnie jeden i multiplekser. Pytanie czy jakiś sample and hold lub coś w tym stylu? No i najważniejsze: częstotliwość próbkowania?
    Kolejna kwestia jaki rodzaj flash jest obsługiwany? W esp32 pewnie NOR, a w S2 NAND, a obie przez SPI ?

    Artykuł bardzo dobry i potrzebny. Zwraca też uwagę na bezsensowność traktowania mocnego procesora tylko jako interfejs WiFi do 8bit capka... Jednak bez dostępnych i solidnych bibliotek obsługi sprzętu będzie trwała ta chora sytuacja.
  • #7
    khoam
    Poziom 38  
    jack63 napisał:
    W kwestii ADC. Przecież nie jest ich 20 tylko pewnie jeden i multiplekser. Pytanie czy jakiś sample and hold lub coś w tym stylu? No i najważniejsze: częstotliwość próbkowania?

    Dwa kontrolery ADC, każdy z nich multipleksuje 10 kanałów. Różnią się częstotliwością próbkowania: ten w ULP ma 200ksps, drugi 2 Msps

    jack63 napisał:
    Kolejna kwestia jaki rodzaj flash jest obsługiwany? W esp32 pewnie NOR, a w S2 NAND, a obie przez SPI ?

    SPI, zarówno w ESP32, jak i w ESP32-S2.

    szymon122 napisał:
    Ja widzę to w zastosowaniu w panelach reklamowych, podłączony duży wyświetlacz, pendrive z reklamami.

    Albo coś takiego? To jeszcze na ESP32 :)
    https://twitter.com/yves28077967/status/1212011143096606721

    bremenpl napisał:
    To juz mozna jakiegos sensownego linuxa postawic na 1 GB flashu.

    Nie wiem, na ile można wierzyć informacji z poniższego linku, ale ktoś bootował linuxa na ESP32 :)
    https://www.reddit.com/r/esp32/comments/dtlj7n/booting_linux_on_esp32_realtime_video/
  • #8
    jack63
    Poziom 42  
    bremenpl napisał:
    To juz mozna jakiegos sensownego linuxa postawic na 1 GB flashu.

    Tu się mocno mylisz. Nie chodzi o flash, tylko o RAM.
    Z resztą linuksy, choćby OpeWrt, stoją od lat na dość ubogich sprzętach jak routery. Jednak tam proporcje RAM/Flash były 4:1, a obecnie 1:1. Niestety nowe jajka są dużo cięższe.
    Poza tym chyba nie o to chodzi aby na bazie opisywanego procesora robić desktopa. Opisywany główny cel to IoT.
  • #9
    khoam
    Poziom 38  
    jack63 napisał:
    Tu się mocno mylisz. Nie chodzi o flash, tylko o RAM.

    Nie wspomniałem o tym w artykule, ale zgodnie z dokumentacją ESP32-S2:

    "The CPU accesses the external flash and RAM via the cache. According to the MMU settings, the cache maps the CPU’s address to the external physical memory address. Due to this address mapping, the ESP32-S2 can address up to 1 GB external flash and 1 GB external RAM."

    Zewnętrzna duża RAM będzie wolna (połączenie po SPI). Też nie widzę sensu uruchamiania linuxa na ESP, skoro jest do dyspozycji już RTOS dostarczany przez producenta, który moim zdaniem zdecydowanie lepiej nadaje się do urządzeń IoT.
  • #10
    Piotrek_I
    Poziom 11  
    khoam napisał:
    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.

    Niekoniecznie trzeba mieć dostęp fizyczny. Dla ESPEasy praktycznie nikt nie zmienia hasła domyślnego dla trybu AP bo i po co jak tryb AP jest potrzebny tylko na początku do wprowadzenia ustawień. A wystarczy wiedzieć, że ktoś maESPEasy, zakłócić sygnał WiFi (do tego są też gotowce na ESP) i połączyć się z ESPEasy który przejdzie do trybu AP i w pliku konfiguracyjnym mamy jak byk zapisane hasło do WiFi :P
    Sprawdzone w praktyce.
  • #11
    khoam
    Poziom 38  
    @Piotrek_I To nie jest podatność układu ESP8266, ale niefrasobliwość użytkownika. W zasadzie, to może się zdarzyć w każdym urządzeniu WiFi pracującym w trybie AP, gdzie użytkownik nie zmienia domyślnego, "fabrycznego" hasła. Inna sprawą jest to, że chyba ESPEasy nie umożliwia chyba zmiany hasła dla trybu AP?
  • #14
    Slawek K.
    Poziom 33  
  • #16
    khoam
    Poziom 38  
    uzi18 napisał:
    Akurat ESP Easy mozesz sobie zbudwac soft z jakims innym domyslnym haslem

    To nie jest dobra metoda, ponieważ wymaga re-kompilacji i ponownego załadowania kodu po wystąpieniu konieczności zmiany tego hasła - szczególnie, kiedy mamy do czynienia z wieloma ESP z tym samym firmware. Lepiej jest przechowywać takie hasło w postaci zaszyfrowanej w SPIFFS, czego ESPEasy nie robi.
  • #17
    khoam
    Poziom 38  
    Dzisiaj ukazała się informacja o nowej płytce ESP32-S2-DevKit-Lipo, producentem jest Olimex. Na uwagę zasługuje fakt, że wg producenta pobór prądu tej płytki w trybie deep-sleep wynosi zaledwie 6µA.
    https://olimex.wordpress.com/2020/05/18/new-o...ernal-record-for-esp32-low-power-consumption/
  • #18
    khoam
    Poziom 38  
    Dostępne są dwie kolejne płytki rozwojowe z ESP32-S2:

    Cucumber ESP32-S2
    https://www.elektroda.pl/rtvforum/topic3699485.html
    oraz
    TTGO ESP32-S2
    https://www.elektroda.pl/rtvforum/topic3699609.html