ESP32 vs ESP8266 : c'est la première décision matérielle de la plupart des projets MQTT en Wi-Fi, et la bonne réponse dépend moins de la vitesse brute que de la mémoire, du TLS et des périphériques dont vous avez besoin. Ce comparatif passe en revue les différences qui comptent lorsque votre appareil doit rester connecté à un broker pendant des mois. À la fin, vous saurez quelle puce acheter pour votre prochain capteur, actionneur ou passerelle.
La réponse courte
Choisissez l'ESP32 pour les nouvelles conceptions qui nécessitent des connexions chiffrées, plus de quelques capteurs, le Bluetooth, des mises à jour à distance (OTA) avec de la marge, ou tout type de traitement local. Choisissez l'ESP8266 pour des nœuds très simples et sensibles au coût, comme un relais unique ou un capteur de température, surtout si vous possédez déjà les cartes ou une base de code éprouvée.
Le reste de cet article explique pourquoi.
Comparaison des caractéristiques
Le tableau compare l'ESP32 classique (modules de la classe ESP32-WROOM-32) à l'ESP8266 (modules de la classe ESP-12). Les variantes plus récentes de l'ESP32 sont abordées plus bas.
| Caractéristique | ESP8266 | ESP32 (classique) |
|---|---|---|
| CPU | Tensilica L106 monocœur, 80/160 MHz | Xtensa LX6 double cœur, jusqu'à 240 MHz |
| RAM de données | Environ 80 Ko de RAM utilisateur, bien moins de libre pour votre sketch | 520 Ko de SRAM |
| Wi-Fi | 802.11 b/g/n, 2,4 GHz | 802.11 b/g/n, 2,4 GHz |
| Bluetooth | Non | Bluetooth classique et BLE |
| GPIO | Environ 17, dont plusieurs avec des contraintes au démarrage | Environ 34 |
| ADC | Un canal 10 bits | Jusqu'à 18 canaux, 12 bits |
| Cryptographie matérielle | Non | Accélération AES, SHA, RSA |
| Autres périphériques | UART, SPI, I2C (logiciel), PWM | UART, SPI, I2C, I2S, CAN (TWAI), tactile, DAC, nombreux canaux PWM |
| Courant en deep sleep | Faible | Faible, plus coprocesseur ULP |
| Core Arduino | esp8266 by ESP8266 Community | esp32 by Espressif Systems |
| FreeRTOS | Non (SDK non-OS sous Arduino) | Oui |
Pour les fiches techniques de référence et les tableaux des variantes, consultez la documentation Espressif.
La mémoire : la différence qui compte le plus
MQTT en lui-même est léger. Une connexion PubSubClient avec un petit buffer tient sans problème sur l'une ou l'autre puce. La mémoire devient le facteur décisif dès que vous ajoutez ce dont les vrais produits ont besoin.
Sur l'ESP8266, le Wi-Fi, la pile TCP/IP et le core Arduino consomment déjà une grande part de la RAM, ce qui laisse un heap relativement réduit à votre application. Une session TLS a ensuite besoin d'un bloc contigu conséquent pour ses buffers d'enregistrements et ses vérifications de certificat. Ajoutez une bibliothèque JSON, une page web de configuration et un buffer MQTT de 2 Ko, et vous êtes à la limite. L'appareil peut fonctionner sur votre bureau puis échouer quelques jours plus tard parce que le heap s'est fragmenté et que la poignée de main TLS suivante ne trouve pas de bloc assez grand.
Les 520 Ko de SRAM de l'ESP32 changent la donne. Vous pouvez faire tourner simultanément le TLS, un serveur web, un buffer MQTT plus grand et un document JSON avec beaucoup de marge, et de nombreux modules ajoutent de la PSRAM pour aller encore plus loin.
Règle pratique : si votre projet ESP8266 nécessite le TLS et autre chose qu'une simple boucle de capteur, prévoyez du temps pour optimiser la mémoire, ou passez à l'ESP32.
Capacités TLS
Un MQTT de production doit utiliser le TLS sur le port 8883 avec des identifiants. Les deux puces en sont capables, mais l'expérience diffère :
- Validation des certificats. Le
WiFiClientSecurede l'ESP32 utilise mbedTLS et accepte un certificat racine PEM avecsetCACert(). L'ESP8266 utilise BearSSL, qui valide aussi les dates des certificats : vous devez donc synchroniser l'heure via NTP avant de vous connecter. - Vitesse de la poignée de main. L'accélération matérielle et les cœurs plus rapides de l'ESP32 bouclent rapidement les poignées de main. L'ESP8266 est nettement plus lent, surtout à 80 MHz, ce qui compte pour les appareils sur batterie qui se reconnectent à chaque réveil.
- Sessions simultanées. Un ESP32 peut sans difficulté maintenir plus d'une connexion TLS, par exemple MQTT plus un téléchargement OTA en HTTPS. Sur un ESP8266, c'est risqué.
- Réglage des buffers. L'ESP8266 ne peut réduire ses buffers TLS via la négociation de la longueur maximale de fragment que si le serveur la prend en charge : vous ne pouvez donc pas compter dessus.
Notre tutoriel ESP8266 MQTT montre la configuration BearSSL exacte, et le tutoriel ESP32 MQTT présente l'équivalent pour l'ESP32.
Périphériques et capteurs
L'unique ADC 10 bits de l'ESP8266 est sa limitation la plus courante. Si vous avez besoin de plus d'une entrée analogique, vous ajoutez un ADC externe comme un ADS1115 en I2C. Plusieurs de ses GPIO ont aussi des fonctions au démarrage : le nombre de broches réellement utilisables est donc plus faible qu'il n'y paraît.
L'ESP32 offre de nombreux canaux ADC, des entrées tactiles capacitives, l'I2S pour les microphones et l'audio, un contrôleur CAN (TWAI) pour les bus automobiles et industriels, ainsi que le Bluetooth Low Energy. Le BLE est particulièrement utile pour les passerelles MQTT : l'ESP32 peut collecter les mesures de capteurs BLE et les publier vers un broker en Wi-Fi.
Logiciels et bibliothèques
Les deux puces sont bien prises en charge par l'écosystème Arduino, mais c'est sur l'ESP32 que se concentre le développement actif.
| Bibliothèque | ESP8266 | ESP32 |
|---|---|---|
| PubSubClient | Oui | Oui |
| ArduinoMqttClient | Oui | Oui |
| AsyncMqttClient | Oui, avec ESPAsyncTCP | Oui, avec AsyncTCP |
Client MQTT natif ESP-IDF (esp-mqtt) |
Non | Oui, avec prise en charge de MQTT 5 |
| Tâches FreeRTOS | Non | Oui |
La base FreeRTOS de l'ESP32 compte pour un firmware MQTT. Vous pouvez exécuter le client réseau dans une tâche et l'échantillonnage des capteurs dans une autre, de sorte qu'une reconnexion lente au broker ne bloque pas votre boucle de contrôle. Sur l'ESP8266, tout partage une seule boucle, et les longs appels bloquants déclenchent le watchdog. Pour en savoir plus sur les conceptions non bloquantes, lisez client MQTT asynchrone sur ESP32.
Consommation électrique
Les deux puces dépensent l'essentiel de leur énergie dans la radio. Pour les capteurs sur batterie qui se réveillent, publient et se rendorment, les facteurs dominants sont la rapidité de connexion et la durée pendant laquelle la radio reste active, et non le courant au repos du CPU. La poignée de main TLS plus rapide de l'ESP32 peut compenser son courant actif plus élevé, et son coprocesseur ultra-basse consommation peut surveiller un capteur pendant que les cœurs principaux dorment. L'ESP8266 reste un choix raisonnable pour de simples nœuds réveil-publication-sommeil en MQTT en clair au sein d'un réseau de confiance.
Coût et disponibilité
L'ESP8266 est généralement le module le moins cher, et les cartes de développement des deux puces sont peu coûteuses et largement disponibles. Dans la plupart des projets, l'écart de prix est faible comparé au capteur, au boîtier, à l'alimentation et à votre temps de développement. Dépenser un peu plus pour un ESP32 fait souvent gagner des heures d'optimisation mémoire. Les prix changent souvent : comparez les offres actuelles de fournisseurs fiables plutôt que de vous fier à d'anciens chiffres de forums.
Et les variantes plus récentes de l'ESP32 ?
La famille Espressif s'est largement étendue au-delà de l'ESP32 classique :
- ESP32-C3 : RISC-V monocœur, Wi-Fi et BLE, faible coût. C'est le remplaçant moderne naturel de nombreuses conceptions ESP8266, et il gère le TLS confortablement.
- ESP32-S3 : double cœur avec instructions vectorielles, USB OTG et souvent de la PSRAM, adapté aux charges de travail caméra, audio et traitement en périphérie.
- ESP32-C6 : ajoute le Wi-Fi 6 et une radio 802.15.4 pour Thread et Zigbee, utile pour les passerelles.
Si l'ESP8266 vous tente uniquement pour son prix, regardez d'abord l'ESP32-C3.
Liste de décision
Répondez à ces questions dans l'ordre. Le premier « oui » tranche :
- Avez-vous besoin du Bluetooth, du CAN, de l'I2S, du tactile ou de plus d'une entrée analogique ? Choisissez l'ESP32.
- L'appareil utilisera-t-il le TLS et fera-t-il tourner un serveur web, de l'OTA ou de gros payloads JSON ? Choisissez l'ESP32.
- Avez-vous besoin de traitement local, de plusieurs tâches ou de MQTT 5 sur l'appareil ? Choisissez l'ESP32 (ESP-IDF).
- S'agit-il d'un capteur ou d'un relais unique en MQTT en clair dans un réseau de confiance, avec des cartes ESP8266 existantes ? L'ESP8266 convient.
- Toujours indécis ? Choisissez un ESP32-C3 pour une option moderne, peu coûteuse et à l'aise avec le TLS.
Côté broker, rien ne change
Quelle que soit la puce choisie, le broker n'en a cure. Les deux se connectent avec les mêmes paquets MQTT 3.1.1 aux mêmes topics. Commencez vos tests sur broker.connectmq.com, le serveur MQTT public gratuit de ConnectMQ, avec un client ID et un préfixe de topic uniques :
mosquitto_sub -h broker.connectmq.com -p 1883 -i compare-91c4 -t "connectmq/demo/compare-91c4/#" -v
Flashez ensuite la même organisation de topics sur un ESP32 et un ESP8266, puis comparez les temps de reconnexion et le heap libre dans votre propre environnement. Cette petite expérience vous en apprendra plus que n'importe quelle fiche technique. Le tutoriel IoT ESP32 est une bonne étape suivante une fois votre choix fait, et PubSubClient est la bibliothèque idéale pour débuter sur les deux cartes.
Connectez l'une ou l'autre puce à ConnectMQ
Lorsque votre appareil quitte l'établi, donnez-lui des identifiants privés sur un broker MQTT managé. ConnectMQ fait tourner MQTT 3.1.1 et 5.0 en TCP sur 1883, en TLS sur 8883 et en WebSockets, avec un portail qui affiche les topics en direct, les appareils connectés et les alertes de seuil, que votre flotte soit composée d'ESP32, d'ESP8266 ou des deux. Pour choisir votre infrastructure, consultez notre guide des options de broker MQTT cloud. Créez un broker Serverless gratuit sur app.connectmq.com, sans carte bancaire.
Questions fréquentes
L'ESP8266 est-il obsolète ?
Pas obsolète, mais ce n'est plus le meilleur choix pour la plupart des nouvelles conceptions. Il reste adapté aux nœuds simples, tandis que l'ESP32-C3 couvre le même créneau à bas coût avec plus de mémoire et un meilleur TLS.
L'ESP8266 peut-il gérer MQTT sur TLS ?
Oui, avec BearSSL et une gestion soigneuse de la mémoire. Synchronisez l'horloge, gardez un petit buffer MQTT et évitez la fragmentation du heap : cela fonctionne de manière fiable pour des capteurs simples.
L'ESP32 prend-il en charge MQTT 5 ?
Le client MQTT d'ESP-IDF prend en charge MQTT 5. Les bibliothèques Arduino populaires, PubSubClient et ArduinoMqttClient, utilisent MQTT 3.1.1, que tous les grands brokers prennent encore en charge.
Des appareils ESP32 et ESP8266 peuvent-ils partager le même broker ?
Oui. MQTT est indépendant du matériel : les deux puces peuvent publier et s'abonner aux mêmes topics sur le même broker, à condition que chaque appareil utilise un client ID unique.



