ESP32
ESP32 est une série de microcontrôleurs de type système sur une puce (SoC) d'Espressif Systems, basé sur l'architecture Xtensa LX6 de Tensilica (en), intégrant la gestion du Wi-Fi et du Bluetooth (jusqu'à LE 5.0 et 5.1[1]) en mode double, et un DSP. C'est une évolution d'ESP8266. Le principal outil de développement est ESP-IDF, logiciel libre développé par Espressif, écrit en C et utilisant le système temps réel FreeRTOS. Il intègre un nombre important de bibliothèques et on retrouve dans son écosystème des bibliothèques tierce libres pour différents types de périphériques liés à l'embarqué et au temps réel.
Développeur | |
---|---|
Fabricant | |
Date de sortie |
Type |
---|
Alimentation |
3.3 V CC |
---|---|
Processeur |
Tensilica Xtensa LX6 |
Mémoire |
520 ko |
|
Le ESP32-C3, WiFi, BLE, Bluetooth, est une variante, annoncée et sorti en novembre 2020, compatible broche à broche avec l'ESP8266, mais utilisant l'architecture RISC-V 32 bits plutôt que Xtensa[2]. Le support du développement via la plateforme et l'IDE d'Arduino est disponible depuis la bibliothèque ESP32 2.0.0[3]. Plus généralement, La série ESP32-C est basée sur RISC-V et la série ESP32-S sur Xtensa LX6.
Son support Wi-Fi et Bluetooth, en fait un système apprécié dans le domaine de l'internet des objets.
Ce SoC rencontre un certain succès depuis quelques années à la fois pour son coût, ses capacités et son intégration dans un nombre croissant de systèmes.
Caractéristiques techniques
modifierLes ESP32 comprennent notamment les caractéristiques techniques suivantes[4] :
- Processeurs :
- CPU : Xtensa double-cœur (ou simple-cœur), microprocesseur LX 32 bits, fonctionnant à 160 ou 240 MHz et fournissant jusqu'à 600 DMIPS ;
- coprocesseur ultra basse consommation (ULP) ;
- Mémoire : 32 Mo SRAM ;
- Connectivité sans-fil :
- Interfaces de périphériques :
- Segmentation 12-bit sur les ADC (SAR ADC) jusqu'à 18 canaux ;
- 2 × 8 bit DAC ;
- 10 × capteurs de touché (GPIO de capteur capacitif (en)) ;
- 4 × SPI ;
- 2 × interfaces I²S ;
- 2 × interfaces I²C ;
- 3 × UART ;
- contrôleur hôte SD/SDIO/CE-ATA (en)/MMC/eMMC ;
- contrôleur esclave SDIO/SPI ;
- interface MAC Ethernet avec DMA dédié et support du protocole de temps précis IEEE 1588 ;
- Bus de données CAN 2.0 ;
- contrôleur infrarouge distant (TX/RX, jusqu'à 8 canaux) ;
- Moteur PWM ;
- LED PWM (jusqu'à 16 canaux) ;
- Capteur à effet Hall ;
- pré-amplificateur analogique ultra-basse consommation ;
- Sécurité :
- Standard de sécurité supportant complètement IEEE 802.11,incluant WPA/WPA2 et WAPI de WFA ;
- Secure boot (démarrage sécurisé) ;
- Chiffrement de la Flash ;
- 1024-bit OTP, jusqu'à 768 bit pour les clients ;
- Accélération matérielle du chiffrement : AES, SHA-2, RSA, Cryptographie sur les courbes elliptiques (ECC), Générateur de nombres aléatoires (RNG) ;
- Gestion de l'énergie :
- low-dropout regulator (en) interne.
- Domaines d'alimentation individuels pour le RTC
- Alimentation en sommeil profond de 5 μA ;
- Réveil depuis des interruption GPIO, timer, mesure ADC, interruption du capteur de touché capacitif.
Stockage intégré
modifierL'ESP32 comprend la mémoire intégrée suivante[5] :
Taille | mémoire |
---|---|
SRAM | 520 Kibits |
Mémoire flash | 448 Kibits |
NVRAM | 16 Kibits |
Variantes améliorées
modifierBase Xtensa
modifierESP32-S2
modifier- Comporte un processeur Xtensa LX7 pouvant monter jusqu'à 240 MHz
- Un coprocesseur RISC-V est introduit pour le mode ULP.
- Accélération matérielle du chiffrement
- Il n'y a pas de fonctions Bluetooth[6]
- WiFi 2.4 Ghz (IEEE 802.11b/g/n)[6]
- FPU
ESP32-S3
modifier- Comporte deux processeur Xtensa LX7 pouvant monter jusqu'à 240 MHz
- Accélération matérielle du chiffrement
- Wifi 802.11 b/g/n, Bluetooth 5.0 LE
- Un coprocesseur RISC-V est toujours présent pour le mode ULP[7].
ESP32-PICO-D4
modifierIl s'agit d'un System in package (système dans un paquet) et non d'un SoC[8].
- Deux processeurs Xtensa LX6
- 4MB SPI flash
- WiFi 802.11 b/g/n/e/i, BT
- consommation moyenne de 80 mA.
Base RISC-V
modifierESP32-C2 (ESP8684)
modifierCœur d'architecture RISC-V 272 ko de SRAM intégré (16 ko de cache).
- 1 cœur RISC-V 32 bits basse consommation à 120 MHz
- Accélération matériel du chiffrement
- 576 ko de ROM
- 1 ko eFuse
- WiFi 4.0 b/g/n 2.4 GHz largeur de bande 20 MHz (72.2 Mb/s max)
- Bluetooth 5.0 LE
- Extensions de chiffrement AES
ESP32-C3 (ESP8686)
modifierContrairement à ses prédécesseurs, le microcontrôleur principal est un unique cœur d'architecture RISC-V RV32IMC 400 ko de SRAM intégré (16 ko de cache). Il permet l'utilisation de ESP-IDF, basé sur FreeRTOS[9], à une fréquence maximum de 160 MHz[10]., il apporte cependant de meilleur performances qu'un seul cœur LX7 à 160 MHz[11].
- 1 cœur RISC-V 32 bits jusqu'à 160 MHz
- Accélération du chiffrement
- 384 ko de ROM
- WiFi 4.0 b/g/n 2.4 GHz largeur de bande 20 MHz, 40 MHz en 802.11n (150 Mb/s max)
- Bluetooth 5.0 LE
- Extensions de chiffrement AES
ESP32-C5
modifierBasé sur un cœur RISC-V pouvant monter jusqu'à 240 Mhz, ce module n'a pas d'unité d'accélération de chiffrement, mais gère par contre le WiFi 6.0 en double bande. Il permet l'utilisation de ESP-IDF, basé sur FreeRTOS[12].
- 1 cœur RISC-V 32 bits jusqu'à 240 MHz
- dual-band WiFi 6.0 802.11ax (largeur de bande 20MHz) en 2.4 GHz et 5.0 GHz, WiFi 4.0 802.11b/g/n (largeur 20MHz et 40MHZ)
- Bluetooth 5.0 LE
- Sur circuit intégré : 400 ko RAM, 384 ko ROM
- Capteur de température et système d'horloge temps-réel (RTC).
ESP32-C6
modifierComme le C3, il se base sur un processeur d'architecture RISC-V[13],[14].
- 1 cœur RISC-V 32 bits jusqu'à 160 MHz
- Extension d'accélération du chiffrement AES
- IEEE 802.11ax (Wi-Fi 6) à 2.4 GHz, supportant une bande passante de 20 MHz dans le mode 11ax et 20 or 40 MHz de bande passante dans les modes 802.11b/g/n
- Bluetooth 5.0 LE (2 Mbps)
ESP32-C61
modifierComme le C6, il se base sur un processeur d'architecture RISC-V[15],[16].
- 1 cœur RISC-V 32 bits jusqu'à 160 MHz
- Extension d'accélération du chiffrement AES, ECDSA-based Digital Signature (DS) peripheral, Trusted Execution Environment (TTE)
- IEEE 802.11ax (Wi-Fi 6) à 2.4 GHz, supportant une bande passante de 20 MHz dans le mode 11ax et 20 ou 40 MHz de bande passante dans les modes 802.11b/g/n
- Bluetooth 5.0 LE (2 Mbps) et BLE Mesh 1.1
- Quad SPI PSRAM jusqu'à 120 MHz
- module Event Task Matrix (ETM) module pour l'automatisation par déclencheur des tâches.
ESP32-P4
modifierL'ESP32-P4 est une version comportant deux contrôleurs RISC-V à 400Mhz et un contrôleur RISC-V basse consommation à 40 Mhz, pour le mode veille[17],[18] :
- 2 cœurs RISC-V 32 bits jusqu'à 400 MHz
- 1 cœur RISC-V 32 bits jusqu'à 40 MHz
- Un NPU, un décodeur H264 et JPEG, ainsi qu'un processeur géométrique 2D.
- Accélération du chiffrement AES jusqu'à ECDSA.
- Supporte ethernet, mais pas de réseau sans-fil.
- Compatible MIPI I3C
Série ESP32-H
modifierTous les SoC de la série ESP32-H utilise le jeu d'instruction RISC-V.
ESP32-H2
modifierÉgalement basé sur un cœur RISC-V 32 bits, orienté basse consommation et sécurité(en) « ESP32-H2 », sur Espressif.
- IEEE 802.15.4
- Thread, Zigbee, Bluetooth 5 (LE)
Outils de développement et systèmes
modifierIl est notamment supporté par les outils de programmation suivants :
- ESP-IDF (développement en C, avec outils en Python, se base sur FreeRTOS, c'est le système de développement de base ;
- Apache NuttX, système compatible POSIX, porté sur ESP32-C3 (RISC-V) uniquement.
- Arduino IDE avec le module ESP32 Arduino Core[19], interface en Java, développement en C++ ;
- Espruino (en) ;
- ESPHome, spécialisé domotique, comportant une interface web pour l'interaction ;
- FAUST, langage de programmation de traitement de données audio, utilisant son DSP[20] ;
- Lua RTOS pour ESP32 ;
- MicroPython, une variante pour l'embarqué du langage Python ;
- mruby (en), une variante pour l'embarqué du langage Ruby ;
- NodeMCU ;
- MicroEJ[21] ;
- ESP32forth, programmation en Forth 32 bits pour ESP32[22]
Systèmes électroniques l'utilisant
modifierIoT
modifier- Les Cartes IoT NodeMCU les plus récents utilisent ESP32-S à la place de ESP8266.
- Le kit de développement modulaire M5Stack.
- Les cartes IoT TTGO
- Les cartes ESP32 d'uPesy[23]
- Différents modules réseau sans fil, supportant LoRa, WiFi et Bluetooth, autonomes ou intégrés dans d'autres cartes de développement, telles que les cartes de Sipeed basés sur des processeurs RISC-V.
Synthétiseurs
modifierL'ESP32 est adapté à la création des Synthétiseurs avancés, dont des synthétiseurs analogiques. Le langage FAUST ou la bibliothèque ESP32soundsynth permettent de faciliter le développement de synthétiseurs basés sur cette architecture[24]. L'échantillonnage utilisant l'ADC intégré peut être effectué via la plateforme de développement Arduino[25].
Il est notamment adapté à des synthétiseurs au format Eurorack, comme le CTAG-Strämpler[26],[27],[28].
Qun-synthesizer est un synthétiseur analogique portable, basé sur la carte ESP32-LyraT, fonctionnant avec la carte mère Nunomo[29].
Console de jeu portable
modifier- Hardkernel, a créé en 2018 Odroid-Go, une console de jeu portable à très bas prix basée sur cette puce.
Annexes
modifierNotes et références
modifier- (en) Jean-Luc Aufranc, « Posted on January 3, 2020 by Jean-Luc Aufranc (CNXSoft) - 13 Comments on Espressif Systems ESP32 Gets Bluetooth LE 5.0/5.1 Certifications Espressif Systems ESP32 Gets Bluetooth LE 5.0/5.1 Certifications », sur CNX-Software,
- (en) Jean-Luc Aufranc, « ESP32-C3 WiFi & BLE RISC-V processor is pin-to-pin compatible with ESP8266 », sur CNX-Software,
- (en) Jean-Luc Aufranc, « ESP32 Arduino 2.0.0 release adds ESP32-C3 and ESP32-S2 support », sur CNX-Sotware
- (en) « ESP32 Datasheet », Espressif Systems, (consulté le )
- (en-US) jameswilson, « ESP32 Pinout, Datasheet, Features & Applications - The Engineering Projects », sur www.theengineeringprojects.com, (consulté le )
- « ESP32-S2 Family Datasheet v1.3 »,
- « ESP32-S3 Datasheet v1.1 »,
- (en) « ESP32-PICO-D4 System-in-Package Combines ESP32, 4MB SPI Flash, a Crystal Oscillator, and Passive Components », sur CNX-Software,
- (en) ESP32C3 Series - Datasheet, Espressif Systems, (lire en ligne), p. 17
- (en) « ESP32-C3 Datasheet », sur Espresssif
- (en) Elliot Williams, « Hands-On: The RISC-V ESP32-C3 Will Be Your New ESP8266 », sur Hackaday,
- Jean-Luc Aufranc, « ESP32-C5 RISC-V IoT MCU supports dual-band WiFi 6, Bluetooth 5.0 LE », sur CNX-Software,
- (en) « ESP32-C6 Datasheet », sur Espresssif
- (en) Kerry Scharfglass, « New Part Day: Espressif ESP32-C6 Includes WiFi 6 And A RISC-V Core », sur Hackaday,
- (en) « ESP32-C61: Delivering Affordable Wi-Fi 6 Connectivity », sur Espresssif
- (en) Tomisin Olujinmi, « Espressif announces the ESP32-C61 WiFi 6 SoC with improved affordability and wireless connectivity », sur CNX-Software,
- (en) « Espressif ESP32-P4 – A 400 MHz general-purpose dual-core RISC-V microcontroller », sur CNX-Software,
- (en) « Espressif Reveals ESP32-P4: A High-Performance MCU with Numerous IO-Connectivity and Security Features », sur Espressif,
- Hendry 2019.
- (en) « DSP on the ESP32 With Faust », sur faust.grame.fr
- (en) « MicroEJ Now Supports ESP32 Chipsets | Espressif Systems », sur www.espressif.com (consulté le )
- (en) « ESP32forth »
- « Cartes uPesy ESP32 », sur uPesy Electronics (consulté le )
- (en) Bokontep, « esp32soundsynth », sur compte Bokontep sur Gihub
- (en) Ivan Voras, « Working with ESP32 Audio Sampling », sur Toptal.com
- (en) Robert Manzke, « Eurorack audio synthesis platform », sur Hackaday.io,
- (en) Lewin Day, « Eurorack Synth Module Runs On ESP32 », sur Hackaday,
- (en) rma-31, « ESP32 real-time audio synthesis platform », sur ESP32.com,
- (en) raspy135, « Qun-synthesizer », sur compte raspy135 sur Github
Bibliographie
modifier- (en) Agus Kurniawan, Internet of Things projects with ESP32 : build exciting and powerful IoT projects using the all-new Espressif ESP32, Birmingham, UK, Packt Publishing, (ISBN 9781789953121)
- (en) Patrick Marchhart, ESP32 Light Controller, Grin Verlag (ISBN 9783668918344, OCLC 9783668918344)
- (es) Pedro Bertoleti, Proyectos com ESP32 y LORA (ISBN 9788595680661, OCLC 1123096640)
- (de) Udo Brandes, Erste Schritte: Eigene IoT-Lösungen mit dem ESP32 : Mikrocontroller, Internet und PC, Haar bei München Franzis, coll. « Mach's einfach », (ISBN 9783645606615)
- (en) Iain Hendry, ESP32 Development using the Arduino IDE,
- (sl) Jan Pleterski, Rok Vrabič et Peter Butala, Krmiljenje DC motorja z mikrokrmilnikom ESP32 : zaključna naloga univerzitetnega študijskega programa I. stopnje Strojništvo (OCLC 1016112028)
- (en) Romain Michon, Daniel Overholt, Stephane Letz, Yann Orlarey, DominiqueFober, Catinca Dumitrascu, A Faust Architecture for the ESP32 Microcontroller, Turin, Sound and Music Computing Conference (SMC-20), (lire en ligne)
Avec MicroPython
modifier- Nicholas H. Tollervey, Programmer avec MicroPython : Programmation Python de systèmes embarqués à microcontrôleurs, Paris, O'Reilly / First éditions, , X-213 p. (ISBN 978-2-412-03746-1, BNF 45512787) (programmation en MicroPhython, avec notamment des exemples sur ESP32)
- (en) Luca-Dorin Anton, MicroPython complete : the definitive guide to Python for microcontrollers using MicroPython and ESP32, Technics Publications, (OCLC 1122564653)