Il y a quelques jours, j'ai reçu un colis contenant 4 cartes de développement ESP32-C3 Super Mini d'un site de commerce électronique chinois bien connu. Leur prix était irrésistible. J'étais curieux à leur sujet en raison de l'antenne céramique compacte intégrée qui pourrait rendre ces cartes plus faciles à déployer que le XIAO ESP32C3 de SeeedStudio. Les cartes sont certes bon marché, mais elles ne sont pas nécessairement les meilleures dans un créneau devenu très encombré. Avant de porter un jugement définitif sur leur véritable valeur, voici le résultat de ma première rencontre avec ces dispositifs.
Table of content
- Matériel
- Programmation dans l'EDI Arduino
- Programmation dans PlatformIO
- Test avec des croquis simples
- Recommandation ?
Matériel
Selon la page produit du vendeur, le véritable prix réduit de la carte est de 7,70 $CDN, ce qui signifie que je les ai obtenues avec une remise importante.
Le prix régulier revendiqué de 20,84 $CDN n’a bien sûr aucun sens. Comme c'est souvent le cas, il existe des divergences dans la page Web du vendeur. Par exemple, la carte présentée ci-dessus ne correspond pas à celle présentée dans l'image montrant les vues de dessus et de dessous. Voici le dessous avec les fonctions des broches spécifiées par le fournisseur.

Les cartes reçues ne correspondaient à aucune des images affichées par le vendeur. Elles n'ont pas de marquages sérigraphiés pour les deux DEL intégrées. La sérigraphie inférieure ne contient pas le logo du matériel ouvert et les étiquettes ESP32-C3 et Super Mini sont presque illisibles. Cependant, les composants semblent très similaires à ceux qu'on voit sur l’image ci-dessus. En particulier, l'ensemble simplifié des composants à proximité de l'antenne est le même, ce qui peut être important comme nous le verrons plus loin. Heureusement, la numérotation des broches est la même. Voici une représentation du recto de la carte (le côté avec les composants).

Le voyant d'alimentation est une DEL rouge à gauche du connecteur USB-C. La DEL bleue à droite de la puce ESP32-C3, juste en dessous du bouton de réinitialisation, est connectée à la broche E/S 8. Ceci n'est en aucun cas universel, car de nombreuses cartes de développement ESP32-C3 avec une DEL simple ou une DEL connectée à une broche d'E/S différente alors que le XIAO ESP32C3 n'a pas de DEL intégrée
Le bouton-poussoir de démarrage (RST) est connecté entre la masse et la broche d'E/S 9. Tous les boutons de démarrage des cartes de développement ESP32-C3 seront connectés à cette broche d'E/S particulière nécessaire à la mise en mode chargeur de démarrage.
Connexion USB à un ordinateur
Lorsque qu'un Super Mini est connecté à un port USB sur un ordinateur Windows, ce dernier émet un son distinctif qui annonce que l'appareil est reconnu par le système d'exploitation. La carte se verra alors attribuer un port COM tel que COM6.
Sous Linux, on peut examiner les messages du bus des dispositifs et ainsi voir le système d'exploitation reconnaître le périphérique lors de son branchement. Démarrez l'utilitaire de ligne de commande dmesg avec le drapeau -w, puis branchez le Super Mini.
Utilisez la combinaison de touches CtrlC pour fermer cette application. On pourrait plutôt rechercher l’appareil une fois qu’il est branché.
Dans les deux cas, on voit que l'ID de périphérique de la carte est 303a:1001 et qu'il apparaît comme le périphérique série /dev/ttyACM0. Le nombre exact après ttyACM dépendra du système. Ces informations pourront être utiles ultérieurement
Mode chargeur de démarrage
Pour téléverser un nouveau micrologiciel sur la mémoire flash non volatile du ESP32-C3, ce dernier doit être en mode chargeur de démarrage (bootloader). Cela se fait en maintenant le bouton de démarrage (le bouton BOOT connecté à la broche E/S 9) enfoncé lorsque le bouton de réinitialisation (RST) est activé et relâché ou lorsque l'alimentation est appliquée à la carte. Les broches d'E/S 2 et 8 doivent également être connecté 3,3 volts lorsque la broche 9 est reliée à la masse (référence: 2.6 Strapping Pins ESP32-C3 Series Datasheet (Version 1.7)). Si certaines cartes de développement ESP32-C3 n'ont pas de bouton de démarrage, c'est que les signaux DTR et RTS d'une puce adaptateur USB-série telle que le CH340 ou le CP2912 gèrent la broche 9 et la broche de réinitialisation.
Quand le téléversement du micrologiciel est terminé, la carte doit être réinitialisée en appuyant sur le bouton RST pour revenir en mode normal, ce qui signifie que c'est le code dans la mémoire flash qui sera executé.
Exigences d'allimentation
La carte Super Mini peut être alimentée via le connecteur USB-C (donc avec une source d'alimentation 5 volts) ou directement via les broches 5V/Gnd. Dans ce cas, de 3,3 à 6 volts CC pourraient être utilisés. Selon le schéma, il existe une diode de blocage qui empêcherait le retour d'alimentation vers la source USB si l'alimentation est également fournie à la carte via la broche 5 V. Cependant, il n'y a pas de diode de blocage pour protéger une source d'alimentation connectée à la broche 5V, donc comme le dit la documentation "N'oubliez pas que lors de la connexion à une alimentation externe, l'USB ne peut pas être connecté et vous ne pouvez choisir qu'entre USB et une alimentation externe".
La broche 3,3 V est connectée directement à la broche de sortie de puissance du régulateur de tension intégré (ME6211). Ce régulateur est capable de produire un courant de sortie maximum de 500 mA dans des conditions optimales et c'est plus ou moins le courant minimum requis pour l'ESP32-C3 lors de l'utilisation de la radio (a href="https://espressif.github.io/esp32-c3-book-en/chapter_5/5.3/5.3.5.html">ref). De toute évidence, il faut faire preuve de prudence si vous utilisez cette sortie pour alimenter des charges externes.
Qui fabrique ces cartes ?
Il m'est impossible de déterminer qui fabrique les cartes de développement envoyées par le vendeur. Ou plus précisément je ne sais pas quoi penser de l'étiquette suivante sur le sachet antistatique contenant chaque carte.

Heureusement, une rubrique du forum Arduino contient des liens vers un vendeur sur Tindie affirmant que la carte a été conçue par Maker go go et un lien vers ICBbye qui semble être une traduction en anglais d'une partie de la documentation de nolog.tech sur la carte ou une carte similaire. Quel est le lien avec Wuming Technology et Guangdong ICP n° 2023016901-1 ?
En regardant les images d'autres fournisseurs et les commentaires sur les forums, il est clair que les cartes fabriquées par plusieurs entreprises sont vendues sous le nom de Super Mini ou SuperMini ESP32-C3. Si l'on peut en croire le logo du matériel ouvert, ce serait légal... peut-être. Cependant, des modifications non documentées de l’architecture ne constituent pas une bonne évolution, car elles créent de la confusion.
Schéma de la carte développement
Un schéma est disponible sur ICBbuy et nologo. Malheureusement, l’image ne comporte aucune légende l'attribuant à qui que ce soit. Je ne suis même pas sûr que le schéma corresponde aux cartes que j'ai reçues. Il s'agit peut-être d'une simple implémentation d'un schéma de référence d'Espressif. Vaut-il la peine d'examiner cette possibilité ?
Programmation dans l'EDI Arduino
À deux semaines d'intervalle, deux définitions de cartes Super Mini ont été affectées au noyau arduino-esp32.
-
Add MakerGo C3 SuperMini def (#9050) January 16, 2024.
-
Add board support for Nologo ESP32C3 Super Mini (#9174) January 31, 2024.
Elles sont assez similaires, mais la définition de MakerGo est préférable, car elle contient une constante pour la DEL, LED_BUILTIN = 8, une constante pour le bouton poussoir, BOOT_BUILTIN = 9 et deux macros identifiant un second port série (#define TX1 0 et #define RX1 1) alors que la définition de Nolog ne définit que LED_BUILTIN. Ces définitions et plusieurs autres pour des cartes basées sur la puce ESP32-C3 sont disponibles dans la version 3.0.1 de esp32, le noyau arduino-esp32 d'Espressif disponible depuis le 5 juin 2024.Pour obtenir ce noyau, ajoutez le fichier de configuration du gestionnaire de cartes suivant
dans les préférences de l'IDE Arduino.
Installez ensuite la version 3.0.1 (ou toute version plus récente) avec le GESTIONNAIRE DE CARTE.
Connectez la carte Super Mini à l'ordinateur avec un câble USB approprié. Sur mon ordinateur Linux, la carte apparaît comme le périphérique série /dev/ttyACM0.
Sélectionnez maintenant la définition de carte souhaitée soit MakerGO ESP32 C3 SuperMini
Lorsqu'il est compilé sans erreur, le micrologiciel peut être téléversé sur la carte. Bien entendu, ce dernier doit être mis en mode chargeur comme expliqué ci-dessus puis, une fois le téléversement complété, il faut réinitialiser la carte pour reprendre un fonctionnement normal.
Programmation dans PlatformIO
Autant que je sache, la plateforme Espressif32 (version 6.7.0) utilise toujours un noyau arduino-esp32 2.0.16 plus ancien pour le framework Arduino. Par conséquent, il n’existe pas de définitions de carte Super Mini ESP32C3. Les premiers utilisateurs des cartes Super Mini ont emprunté une définition de carte suffisamment proche et l'ont modifiée avec un fichier de configuration platformio.ini personnalisé, comme indiqué ci-dessous.
L'autre kit de développement Espressif ESP32-C3, le esp32-c3-devkitm-1 a également été utilisé. Ces deux cartes ont presque la même affectation de broches d'E/S que le SuperMini, mais elles ont des adaptateurs USB-série intégrés. Le Super Mini n'en a pas, car il utilise le périphérique USB intégré à la place. C'est la raison de l'ajout des macros ARDUINO_USB_MODE et ARDUINO_USB_CDC_ON_BOOT dans la section build_flats.
Depuis lors, DFRobot a introduit le Beetle ESP32-C3 Mini Size qui est presque identique au Super Mini à l'exception d'un connecteur GDI supplémentaire à l'arrière. Voici une définition de la carte Super Mini basée sur le dispositif de DFRobot qu'on peut utiliser de préférence aux précédentes.
Il y a un problème mineur avec ces définitions de cartes empruntées ; ils ont la mauvaise valeur pour la variable BUILTIN_LED et la macro du même nom. J'ai donc décidé de créer ma propre définition de carte et une définition variante des broches. Voici d’abord le fichier de définition de la carte, que j’ai nommé super_mini_esp32c3.json.
Et voici la variante du fichier de définition de broches pins_arduino.h.
Il s'agit évidemment d'une fusion des deux fichiers de variantes Super Mini trouvés dans le dernier noyau Arduino ESP32. J'ai copié ces fichiers à l'emplacement approprié dans le répertoire .platformio de mon ordinateur.
/home/michel/.platformio/platforms/espressif32/boards/super_mini_esp32c3.json/home/michel/.platformio/packages/framework-arduinoespressif32/variants/super_mini_esp32c3/pins_arduino.h
On peut télécharger ces deux fichiers dans le dossier resources depuis un référentiel sur GitHub.
Ensuite, j'ai redémarré VSCodium et créé un nouveau projet PlaftformIO avec l'assistant de projet.

Et, comme le montre la capture d'écran, la nouvelle définition de la carte était disponible.
Le fichier de configuration platformio.ini suivant a été automatiquement créé.
Encore une fois, il sera nécessaire de mettre manuellement la carte en mode chargeur de démarrage avant d'y téléverser un nouveau micrologiciel. Une fois cela fait, la carte devra être réinitialisée pour reprendre un fonctionnement normal.
Test avec des croquis simples
J'ai créé quelques croquis pour tester la carte Super Mini. En fait, deux sont des reprises de croquis dans xiao_esp32c3_sketches et trois testent les capacités Wi-Fi de la carte de différentes manières. Le code source se trouve sur mon compte Github dans le référentiel super_mini_esp32c3_sketches. Comme auparavant, les programmes sont structurés de manière à pouvoir être testés dans l'IDE Arduino et dans PlatformIO.
Bonjour
Le premier croquis est 01_pin_namesune version allongée d'un croquis "Bonjour!" qui deux choses.
- Il imprime sur la console les noms et numéros de toutes les broches d'E/S.
- Il vérifie que le bouton de démarrage de la carte peut être activé.
Le fichier de configuration platformio.ini contient deux définitions de cartes: ma propre définition telle de décrite ci-dessus et celle pour le dfrobot_beetle_esp32c3 pour ceux qui ne veulent pas ajouter une définition de carte.
Le deuxième croquis 02_blink_pulse_led est la version IdO d'un programme "Bonjour!" puisque qu'il clignote la DEL bleue intégrée au Super Mini. En fait, il alterne, faisant clignoter la DEL en utilisant un rythme cardiaque pendant 10 secondes, puis en pulsant la DEL (en s'estompant lentement puis en l'éclairant) pendant 10 secondes. Ce dernier illustre le fonctionnement d'un signal PWM qui est disponible sur toutes les broches E/S de l'ESP32-C3.
Fonctionalité Wi-Fi
Les trois croquis suivants testent la fonctionnalité Wi-Fi de la carte Super Mini. Les commentaires sur les forums ont révélé qu'il pourrait y avoir des problèmes de Wi-Fi liés à l'antenne. Espressif estime que les antennes en céramique utilisées sur le Super Mini comme le seul type « à faible gain ». L'antenne FPC utilisée sur le XIAO ESP32C3 aurait un « gain moyen ». Les résultats lors de l’exécution de la troisième esquisse 03_scan_wifi sont cohérents avec cette évaluation. Seuls deux réseaux ont été trouvés avec un SuperMini ESP32-C3.
Le même code sur un XIAO ESP32C3 a trouvé quatre réseaux.
Il convient de préciser que 1 et 2 sont nos réseaux domestiques et que le test a été réalisé avec les microcontrôleurs à moins d'un mètre du routeur Wi-Fi. Je suppose que les deux autres réseaux non trouvé par le Super Mini, proviennent de notre voisin le plus proche, situé à environ 80 mètres.
Beaucoup plus contrariant, même après deux minutes d'essai, le Super Mini n'a pas pu se connecter au réseau Wi-Fi local lors de l'exécution du 4e croquis, wifi_connect.ino. Un XIAO ESP32C3 se connecte généralement en une demi-seconde environ. C'est clairement un problème d'impédance. En fait, je ne sais pas du tout de quoi je parle et je ne fais que répéter certaines choses que j'ai lues. Néanmoins, cela a un peu de sens puisque j'ai remarqué que le Super Mini se connectait rapidement si ma main touchait ou était très proche de la carte. De plus, il semble qu'il manque certains composants entre l'antenne céramique et la broche LNA_IN de la puce ESP32-C3.
De toute évidence, toucher à la carte pour faire fonctionner le Wi-Fi n’est pas une solution viable. Heureusement, un message d'al1fch sur le forum Arduino contenait la solution.
WiFi.setTxPower(WIFI_POWER_8_5dBm); à mettre avant WiFI.begin()
Effectivement, ça fonctionne.
Si un Super Mini rencontre des problèmes de connexion à un réseau Wi-Fi, activez la macro #define TRY_TX_POWER dans le croquis wifi_connect et ça pourrait fonctionner comme indiqué ci-dessus. Pour être honnête, il peut être nécessaire d'ajuster la macro TX_POWER sur une autre valeur. Néanmoins, la bonne nouvelle est qu’il a été possible de connecter le Super Mini au réseau Wi-Fi.
Choisir une puissance de transmission aléatoire n’est pas le meilleur moyen d’obtenir des connexions Wi-Fi. J'ai écrit le programme wifi_tx_power pour essayer de déterminer le meilleur réglage pour des résultats fiables. Le tableau suivant indique le temps nécessaire à cinq cartes de développement ESP32-C3 différentes pour établir une connexion au réseau Wi-Fi (en millisecondes). Les cartes SM xsont les quatre cartes Super Mini ESP32C3 que j'ai obtenues récemment tandis que XIAO est une carte de développement SeeedStudio XIAO ESP32C3.
| Carte | XIAO | Super Mini | |||
|---|---|---|---|---|---|
| SM 1 | SM 2 | SM 3 | SM 4 | ||
| WIFI_POWER_default | 1143 | - | - | - | - |
| WIFI_POWER_19_5dBm | 443 | - | 1230 | - | - |
| WIFI_POWER_19dBm | 430 | 477 | - | - | - |
| WIFI_POWER_18_5dBm | 440 | 546 | 961 | - | - |
| WIFI_POWER_17dBm | 391 | 443 | 389 | 532 | - |
| WIFI_POWER_15dBm | 404 | 410 | 425 | 422 | - |
| WIFI_POWER_13dBm | 376 | 729 | 684 | 469 | 1440 |
| WIFI_POWER_11dBm | 429 | 423 | 399 | 409 | 484 |
| WIFI_POWER_8_5dBm | 729 | 1929 | 414 | 425 | 443 |
| WIFI_POWER_7dBm | 1923 | 718 | 413 | 430 | 399 |
| WIFI_POWER_5dBm | 904 | 388 | 427 | 546 | 442 |
| WIFI_POWER_2dBm | 678 | 507 | 390 | 937 | 408 |
Là où il y a un tiret (-), la carte n'a pas pu se connecter en 2 minutes. La bonne nouvelle est que toutes les cartes ont réussi à établir une connexion avec notre réseau Wi-Fi local. La mauvaise nouvelle est que le réglage de la puissance de transmission est différent d'une carte à l'autre, bien que le XIAO ait réussi à établir une connexion, quelle que soit la puissance de transmission réglée. N'oubliez pas que la carte de développement se trouve à environ un mètre du routeur Wi-Fi.
Fonctionalité Bluetooth LE
Lors d'un survol du XIAO ESP32C3 de SeeedStudio, une vérification sommaire des capacités Bluetooth® Low Energy (BLE) du microcontrôleur ESP32-C3 a été réalisée. Je ne vais pas reprendre cette discussion ici. J'ai adapté le programme pour qu'on puisse l'utiliser avec le Super Mini C3. Il est dans le répertoire 07_ble_led du référentiel supermini_esp32c3_sketches sur GitHub. La discussion sur ce sujet sera très courte, parce que mes connaissances en matière de BLE sont très limitées. De plus, le programme utilise la bibliothèque ArduinoBLE qui ne semble pas être l'option la plus utilisée quant au BLE sur les puces ESP32. En revanche, elle semble plus simple que l'offre d'Espressif.
Il est facile d'utiliser la bibliothèque ArduinoBLE dans PlatformIO. Dans l'EDI Arduino, on aura un conflit entre cette bibliothèque et celle qui est incluse dans le noyau esp32 (3.0.1) d'Espressif. Le fichier ble_led.ino contient une démarche possible pour compiler ble_led avec l'EDI Arduino. J'espère que d'autres trouveront quelque chose de mieux, car la solution proposée n'est pas du tout pratique.
Le microcontrôleur est configuré comme un périphérique BLE (serveur) avec un service DEL et ayant une caractéristique de commutation. Tout appareil central (client) peut obtenir l'état de la DEL, l'allumer ou l'éteindre en envoyant les messages appropriés. Bluetooth Controlled LED explique comment utiliser LightBlue, une application Android comme client. J'ai aussi utilisé nRF Connect de Nordic pour faire la même chose.
L'important ici c'est la performance des cartes Super Mini C3. Or elle est minable. Parfois, la connexion entre le microcontrôleur et la tablette Android prenait un temps considérable. À d’autres moments, la tablette devait être très proche, pratiquement en contact, avec le microcontrôleur pour que la connexion soit établie. Il arrivait qu'une connexion ne puisse pas être établie du tout, même si LightBlue avait trouvé le Super Mini lors de la recherche d'appareils. Or le XIAO-ESP32C3 était fiable montrant que le problème ne peut pas être attribué au ESP32-C3. Il se peut très bien qu'il se situe au niveau de l'antenne. Si c'est le cas, peut-être que moduler la puissance de transmission permettrait de contourner le problème comme pour le Wi-Fi. Malheureusement, je n'ai pas trouvé de façon simple de moduler cette puissance dans la bibliothèque ArduinoBLE.
Recommandation?
Est-ce que je recommanderais d’acheter un Super Mini ESP32C3 ? Dans la plupart des cas, non. Je ne suis pas le seul à me poser des questions au sujet de ce dispositif. Lisez le commentaire de mabbaco d'il y a environ un an sur des cartes de valeur douteuse proposées par certains vendeurs. Continuez et lisez les commentaires qui suivent même si tout cela est un peu confus.
Je dois mentionner que toutes les cartes que j'ai reçues avaient une ESP32-C3FN4 qui est une puce en fin de vie. Ce n’est probablement pas très important; la version actuelle a une plage de températures ambiantes plus élevées, ce qui aurait rarement des conséquences pour les amateurs. Les problèmes de contrôle qualité dans la fabrication des cartes comme l'illustre Treza88 sont plus importants.

En effet, deux des quatre cartes que j'ai reçues avaient une connexion crénelée endommagée à l'emplacement de la broche 5. Même s'ils ne rendent pas la planche inutilisable, ces défauts n'inspirent pas confiance.
De plus, sans couvercle métallique, on peut deviner que ces cartes ne sont pas conformes aux réglementations FCC. Dans certaines circonstances, une carte émettant des interférences RF peut constituer un réel problème.
Il n'y a aucune raison d'acheter du vendeur Aliexpress d'autres cartes au prix réduit habituel. Est-ce que j'en achèterais à nouveau au prix de 2,50 $ CA ? Peut-être pour un projet extérieur où les interférences RF ne poseraient pas de problème et qui n'utiliserait pas Bluetooth LE. Cependant, je devrai tester la portée Wi-Fi effective avant de porter un jugement définitif à ce sujet.
J'avoue avoir un préjugé favorable en ce qui concerne les cartes de la série XIAO. Leur qualité et leur forme cohérente en font l’un de mes préférés. Les frais d'expédition sont souvent un obstacle avec les produits Seeed, mais il y a des soldes avec livraison gratuite. Le XIAO ESP32C3 peut alors être moins coûteux que les Super Mini C3.
Qui suis-je pour pérorer de cette manière ? Chacun devrait se faire sa propre opinion. D'ailleurs mon échantillon de seulement quatre dispositifs achetés chez un seul fournisseur est bien trop limité. Sachez que Bertrand M. Électro-Bidouilleur publiait une 637e vidéo intitulée Découverte - Micro-Contrôleur ESP32-C3 avec WiFi et BLE où il n'est jamais question des problèmes décrits ci-dessus. Il a obtenu sa carte Super Mini auprès d'un autre vendeur et, d'après l'étiquette sur le sachet antistatique, le fabricant pourrait est différent.
Enfin, si quelqu'un envisage d'acheter le XIAO ESP32C3, il devrait examiner le XIAO ESP32C6 qui est le grand frère du XIAO ESP32C3 proposé à un prix à peine plus élevé.
Coup d'oeil sur la carte de développement XIAO ESP32C3 de Seeed Studio (en anglais)