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 :
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 :
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:
Xtensa® single-/dual-core 32-bit LX6 microprocessor(s), up to 600 DMIPS (200 DMIPS for single-core microprocessor)
PWM, I2S, IR
Procédure d'installation de l'environnement ARDUINO
* 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
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); }
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”
Source : Andreas Spiess