Table des matières
ESP32
L'ESP32 est un SOC développé par la société Espressif dédié à l'internet des objets (IoT) et plus particulièrement les communications sans fil Wifi et Bluetooth pour un coût réduit. Il a été décliné en version module l'ESP-WROOM-32 qui a lui même été intégré par différents fabricants (Essentiellement Chinois) sur des cartes de développement.
Il présente plusieurs intérêts :
- Prix faible ~5€ pour le module ~8€ pour une petite carte de développement
- Intègre du Wifi 802.11 b/g/n/e/i (WPA)/WPA2/WPA2-Enterprise/Wi-Fi Protected Setup (WPS)
- Intègre Bluetooth 5.0 - BLE Bluetooth low Energy
- Compatible avec l'environnement de développement ARDUINO
- Intègre un microcontrôleur 32 bits performants et de nombreux périphériques (ADC 12bit, DAC, 3xUART, PWM, I2C, SPI, etc …)
- S'alimente directement en USB
- etc.
Quel micro ?
Il existe un nombre important de références. Il peut être compliqué de définir ce qu'on doit utiliser en fonction de nos besoins. Donc pour résumer :
- ESP32 : Première série maintenant remplacée mais toujours largement utilisée
- ESP32-Sx : Remplacement des ESP32
- ESP32-Cx : Moins performants que les ESP32-Sx mais aussi moins cher.
- ESP32-Hx : Orienté basse consommation
Modèle | Année | Core | Wifi | BLE | Zigbee/Thread | Matter | Commentaire |
---|---|---|---|---|---|---|---|
ESP32-C2 | 2020 | 1 | 4 | 5.0 | Non | Non | |
ESP32-C3 | 2020 | 1 | 4 | 5.0 | Non | Non | Remplace l'ancien ESP8266 |
ESP32-C5 | 2022 | 1 | 6 2.4+5Ghz | 5.2 | Oui | Oui | |
ESP32-C6 | 2021 | 1 | 6 | 5.3 | Oui | Non | Wifi 6 + Zigbee |
ESP32-C61 | 2025? | 1 | 6 | 5.0 | Oui | Oui | |
ESP32-H2 | 2023 | 1 | Non | 5.0 | Non | Oui | Basse consommation |
ESP32-S2 | 2020 | 1 | 4 | Non | Non | Non | |
ESP32-S3 | 2020 | 2 | 4 | 5.0 | Non | Non | Remplace l'ancien ESP32 |
ESP32 | 2016 | 2 | 4 | 4.2 | Non | Non | Ancien |
Vous voulez un micro performant 2 coeurs pour du Wifi+BLE ? ESP32-S3
Vous voulez du Wifi 6 ? ESP32-C6
Vous voulez du Matter ? ESP32-H2
Vous voulez du Zigbee ? ESP32-C6
Pourquoi choisir un ESP32-S3 vs un ancien ESP32 ?
Le -S3 est plus performant pour une consommation 10 fois plus faible
Pourquoi choisir un ESP32-C6 vs un ancien ESP32 ?
Le -C6 a plus de fonctionnalité (Wifi 6, BLE 5.3, Zigbee/Thread) pour une consommation plus faible
Sources:
Caractéristiques de l'ESP32
CPU
Xtensa® single-/dual-core 32-bit LX6 microprocessor(s), up to 600 DMIPS (200 DMIPS for single-core microprocessor)
- 448 kB ROM
- 520 kB SRAM
- 16 kB SRAM in RTC
- QSPI flash/SRAM, up to 4 x 16 MB
- Power supply: 2.3V to 3.6V
Hardware
- Périphériques : SD card, UART, SPI, SDIO, I2C, LED PWM, Motor
PWM, I2S, IR
- GPIO : capacitive touch sensor, ADC, DAC, LNA preamplifier
- Capteurs intégrés : Hall sensor, temperature sensor
- Alimentation : 2.7 ~ 3.6V
- Courant max : 500 mA
- Température de fonctionnement : -40°C ~ +85°C
WIFI
- Wi-Fi Protocols : 802.11 b/g/n/e/i (802.11n up to 150 Mbps)
- Wi-Fi mode : Station/SoftAP/SoftAP+Station/P2P
- Wi-Fi Security : WPA/WPA2/WPA2-Enterprise/WPS
- Network protocols : IPv4, IPv6, SSL, TCP/UDP/HTTP/FTP/MQTT
OS
- FreeRTOS
Brochage
PINOUT
ESP-WROOM-32
Installation de l'environnement de développement
Procédure d'installation de l'environnement ARDUINO
- Installer l'environnement ARDUINO : https://www.arduino.cc/en/Main/Software
- Télécharger l'add-on pour l'ESP32 : https://github.com/espressif/arduino-esp32
- Deziper l'add-on dans le répertoire : Mes Documents\Arduino\hardware\espressif\esp32
* Executer get.exe qui se trouve dans le répetoire Mes Documents\Arduino\hardware\espressif\esp32\tools * L'executable get.exe va télécharger et intégrer l'add-on dans l'environnement ARDUINO
* Démarrer l'environnement ARDUINO et vérifier que l'ESP32 apparait bien dans les types de carte :
* Brancher votre carte ESP32, vérifier le port COM qui lui a été attribué :
* Créer un nouveau sketch, sélectionner la carte: ESP32 Dev Module et le port qui lui a été associé
* Vérifier la compilation et le transfert
1er sketch de test - clignotement LED
void setup() { // put your setup code here, to run once: pinMode(2, OUTPUT); // set pin to input } void loop() { // put your main code here, to run repeatedly: digitalWrite(2, HIGH); // sets the LED on delay(200); // waits for a second digitalWrite(2, LOW); // sets the LED off delay(800); }
Sketch exemples
Sketch transmission wifi
Le sketch ci dessous va transmettre une trame toutes les secondes vers un serveur UDP. Remplacer par your-ssid par le nom de votre réseau WIFI, your-password par le mot de passe de votre réseau WIFI et 192.168.1.10 par l'adresse IP de votre PC.
/* * This sketch sends random data over UDP on a ESP32 device * */ #include <WiFi.h> #include <WiFiUdp.h> // WiFi network name and password: const char * networkName = "**your-ssid**"; const char * networkPswd = "**your-password**"; //IP address to send UDP data to: // either use the ip address of the server or // a network broadcast address const char * udpAddress = "**192.168.1.10**"; const int udpPort = 2205; //Are we currently connected? boolean connected = false; //The udp library class WiFiUDP udp; void setup(){ // Initilize hardware serial: Serial.begin(115200); //Connect to the WiFi network connectToWiFi(networkName, networkPswd); } void loop(){ //only send data when connected if(connected){ //Send a packet udp.beginPacket(udpAddress,udpPort); udp.printf("Seconds since boot: %u", millis()/1000); udp.endPacket(); } //Wait for 1 second delay(1000); } void connectToWiFi(const char * ssid, const char * pwd){ Serial.println("Connecting to WiFi network: " + String(ssid)); // delete old config WiFi.disconnect(true); //register event handler WiFi.onEvent(WiFiEvent); //Initiate connection WiFi.begin(ssid, pwd); Serial.println("Waiting for WIFI connection..."); } //wifi event handler void WiFiEvent(WiFiEvent_t event){ switch(event) { case SYSTEM_EVENT_STA_GOT_IP: //When connected set Serial.print("WiFi connected! IP address: "); Serial.println(WiFi.localIP()); //initializes the UDP state //This initializes the transfer buffer udp.begin(WiFi.localIP(),udpPort); connected = true; break; case SYSTEM_EVENT_STA_DISCONNECTED: Serial.println("WiFi lost connection"); connected = false; break; } }
L'ESP32 va transmettre toutes les secondes une trame vers le port 3333 de votre PC. Pour visualiser les trames envoyées, il suffit d'utiliser un serveur UDP comme HERCULE
Démarrer HERCULE et dans l'onglet UDP mettre 3333 dans le port à utiliser puis cliquer sur “Listen”
Consommation
Source : Andreas Spiess