Pratique: le RISC-V ESP32-C3 sera votre nouvel ESP8266

Nous venons de mettre la main sur des pré-échantillons d’ingénierie de la puce et des modules ESP32-C3, et il y a beaucoup à aimer sur cette puce. La question est de savoir à quoi devez-vous comparer cela; est-ce plus un ESP32 ou un ESP8266? La nouvelle variante «C3» a un seul noyau RISC-V 160 MHz qui surpasse l’ESP8266, et en même temps inclut la plupart des périphériques d’un ESP32. Alors que la RAM finit souvent par se raréfier sur un ESP8266 avec environ 40 ko, l’ESP32-C3 dispose de 400 ko de RAM et parvient à tout faire fonctionner tout en brûlant moins d’énergie. Comme l’ESP32, il dispose du Bluetooth LE 5.0 en plus du WiFi.

Le site Web d’Espressif dit à plusieurs reprises qu’il sera «rentable», ce qui est un code secret pour pas cher. Les rumeurs disent qu’il y aura des modules ESP-O1 à huit broches dans les rues à un prix aussi bas que 1 $. Nous avons généralement besoin de plus de broches, mais si le prix des modules ESP32-C3 de taille moyenne est proche des modules de style ESP8266-12, nous ne voyons aucune raison d’acheter ces derniers; pour nous, ce sera littéralement un tueur ESP8266.

D’un autre côté, il manque les doubles cœurs de l’ESP32 et n’a tout simplement pas autant de broches GPIO. Si vous êtes un fervent abuseur d’ESP32, vous trouverez sans aucun doute certaines fonctionnalités manquantes, comme le coprocesseur à ultra faible puissance ou les DAC. Mais ça Est-ce que partagent beaucoup de points forts de l’ESP32: le périphérique LEDC (PWM) et le parallèle unique I2S viennent à l’esprit. De plus, il partage le cadre ESP-IDF avec l’ESP32.Par conséquent, malgré une architecture de processeur entièrement différente, beaucoup de code s’exécutera sans changement sur les deux puces simplement en modifiant l’environnement de construction avec une seule ligne.

Une de ces choses n’est pas comme les autres

Si vous étiez confus par le nom du jeton, comme nous l’étions, une semaine ou deux à jouer avec le nouveau jeton rendra tout clair. L’ESP32-C3 ressemble beaucoup plus à une version réduite de l’ESP32 qu’à une amélioration par rapport à l’ESP8266, même s’il est probablement destiné à jouer ce dernier rôle dans nos projets. Si vous comptez dans le nouvel ESP32-S3 qui intègre l’USB, la famille ESP32 est plus grande qu’une seule puce. Bien qu’il Est-ce que semble étrange de regrouper les processeurs RISC-V et Tensilica, à la fin de la journée, ce sont les périphériques plus que les processeurs qui différencient les microcontrôleurs, et sur ce front, le C3 est fermement dans la famille ESP32.

Notre point à retenir: l’ESP32-C3 va remplacer l’ESP8266 dans nos projets, mais il ne remplacera pas l’ESP32 qui a simplement plus de tout quand nous en avons besoin. La base de code partagée et l’architecture périphérique facilitent le basculement entre les deux lorsque nous n’avons pas besoin de l’ESP32 à part entière. Dans cet esprit, nous souhaitons la bienvenue au nouveau venu dans la famille.

Mais naturellement, nous avons beaucoup plus à dire à ce sujet. Plus précisément, nous nous sommes intéressés à ce que le noyau RISC-V apportait exactement à la table et avons fait fonctionner le module à travers des comparaisons de puissance et de vitesse avec l’ESP32 et l’ESP8266 – et il les bat tous les deux par une petite marge dans nos benchmarks. Nous sommes également devenus beaucoup plus amis avec le SDK ESP-IDF que toutes les puces de la famille ESP32 utilisent, et nous adorons le chemin parcouru au cours de la dernière année. Ce n’est pas aussi convivial que l’ESP-Arduino pour les débutants, bien sûr, mais c’est beaucoup plus puissant, et nous sommes totalement heureux de laisser le SDK ESP8266 derrière nous.

RISC-V: puissance et vitesse

L’ESP32-C3 partage le cadre de codage avec l’ESP32, certains des périphériques, et dispose à peu près de la même quantité de mémoire. Qu’est ce qui est different? Le processeur RISC-V du C3 contre les cœurs Tensilica de l’ESP32 et de l’ESP8266. Nous avons donc pensé que nous allions les mettre à l’épreuve et voir comment ils se comparent en termes de vitesse de traitement et de consommation d’énergie globale.

En termes de benchmarks standard pour les microcontrôleurs et autres appareils embarqués, CoreMark est probablement la référence. Et nous avons constaté qu’il avait déjà été porté sur l’ESP8266 et l’ESP32 par [Ochrin]. (Merci!) CoreMark comprend trois tests: trouver et trier avec des listes liées pour taxer les unités de mémoire, exécuter une machine à états pour tester la vitesse de branchement du commutateur / boîtier, et une tâche de multiplication de matrice pour taxer le processeur et le compilateur.

En pratique, et imitant notre expérience générale avec les frameworks ESP8266 et ESP32, le code compilé sans aucun problème pour l’ESP32 et l’ESP32-C3. En revanche, le faire fonctionner sur l’ESP8266 a été des heures épouvantables passées à dégrader les versions du framework RTOS, en installant des modules dans Python 2 à l’intérieur. virtualenvs, et obtenir l’ensemble de PATHs et autres variables d’environnement juste à droite. Mais nous n’allions pas vous laisser sans une comparaison appropriée, alors nous avons brûlé l’huile de minuit.

Ce qu’il faut retenir, c’est qu’un seul cœur RISC-V sur l’ESP32-C3 est légèrement plus rapide par MHz qu’un seul cœur sur l’un des appareils basés sur Tensilica. Bien sûr, si vous calculez des chiffres durement et que vous utilisez les deux cœurs de l’ESP32, c’est dans une autre ligue, et vous savez qui vous êtes. Mais si vous exécutez Arduino sur l’ESP32 et que vous n’exécutez pas explicitement les tâches RTOS vous-même, ou que vous exécutez MicroPython sans utiliser de threads, vous exécutez probablement un seul cœur sur l’ESP32 de toute façon. Modulo une petite différence dans le fait d’avoir un noyau gratuit pour gérer exclusivement le WiFi, vous ne serez peut-être pas bien pire avec le C3.

Lors de l’exécution de ce test, nous avons également connecté notre unité de mesure de puissance ultra-sophistiquée aux appareils testés, un câble USB avec trois résistances de 3 Ω et un oscilloscope. Bien sûr, si vous vouliez simplement les spécifications de puissance de la puce, vous pourriez consulter la fiche technique.

Au lieu de cela, nous examinons ici les performances réelles de trois modules différents: le WeMos D1 mini pour l’ESP8266, le Lolin 32 pour l’ESP32 et notre démo ESP32-C3-DevKitC-1, directement d’Espressif. Tous fonctionnaient avec les LED éteintes ou coupées sommairement avec des couteaux latéraux dans le cas de l’unité ESP32-C3. (Cela n’a pas fait beaucoup de différence, mais vous ne le savez pas avant d’essayer.)

Avec les données de consommation d’énergie, nous pourrions également vérifier l’efficacité énergétique des modules, mesurée en score CoreMark par milliwatt. Ici, l’ESP32-C3 fait un peu mieux que l’ESP8266, et quelque part entre l’ESP32 exécutant respectivement un cœur et deux cœurs. Cela confirme ce que nous soupçonnons depuis un certain temps – si vous voulez économiser de l’énergie, votre meilleur pari est de garder la puce en veille autant que possible, puis de l’exécuter à fond lorsqu’elle doit fonctionner. Si vous faites cela avec un ESP32, utilisez les deux cœurs.

Et tandis que nos résultats sont certainement significatifs et reproductibles en termes de puissance et de vitesse, ils ne changent pas la donne. Si nous avions vraiment besoin d’écraser les flotteurs, nous choisirions une puce mieux adaptée à la tâche, comme un STM32F4xx ou un STM32F7xx, ou ces puces NXP / Freescale 600 MHz i.MX ARM7 brutales dans le Teensy 4.0. Si vous achetez un ESP-n’importe quoi, c’est parce que vous voulez la connectivité sans fil, et il est bon de savoir que vous ne donnez rien avec l’ESP32-C3 sur la vitesse du processeur.

Nous l’avons fait allusion dans l’introduction, mais la nature RISC-V de cette puce, au moins en termes d’expérience utilisateur, est pas grand chose. Vous codez, compilez et flashez comme vous le feriez avec n’importe quelle autre chaîne d’outils. L’ESP-IDF rend l’utilisation de la nouvelle puce aussi simple que la saisie idf.py set-target esp32c3 et peut-être idf.py fullclean pour faire bonne mesure. Ensuite, vous allez à vos occupations. J’ai dû changer d’architecture 30 fois au cours de ces tests, et c’est littéralement aussi simple que cela.

Des périphériques et des broches

La première limitation que vous rencontrez avec un ESP8266 est qu’il n’a pas assez de GPIO, ou ADC, pour votre projet particulier. Bien que l’ESP32 soit une sérieuse amélioration en termes de quantité GPIO, une fois que vous avez pris en compte les broches avec des fonctions dédiées, ou qui ne sont que des entrées, vous pouvez finir par repousser facilement les limites de la puce. Ainsi, vous concevez dans une puce ADC externe et la connectez via I2C, ou vous visez un registre à décalage et le pilotez avec le périphérique I2S incroyablement rapide – ce que vous ne pouvez pas faire avec l’ESP8266.

Le partage du jeu de périphériques avec l’ESP32 aidera à atténuer certains de ces problèmes sur l’ESP32-C3, même s’il a le même nombre de broches que l’ESP8266. Heck, si vous êtes prêt à les allouer, le C3 a même des capacités JTAG. Et bien que le JTAG ne le soit pas, de nombreux périphériques matériels sont assignables aux broches de votre choix.

Mais nous devons conclure que concevoir avec l’ESP32-C3 est encore va être un peu comme la conception de l’ESP8266. Les E / S sont limitées. Vous devrez travailler avec ça.

Situer l’ESP-C3

L’ESP8266 a commencé sa vie comme un simple modem WiFi à commande AT, et un groupe de pirates a prouvé qu’il avait beaucoup plus à offrir. Il est parfois difficile de se rappeler à quel point la connectivité WiFi était difficile et coûteuse avant l’ESP8266, mais à l’époque, le WiFi pour 5 $ était révolutionnaire par rapport au WiFi pour 50 $ – 100 $. Avancez quelques années, et l’ESP32 est un microcontrôleur compétent à part entière, avec quelques fonctionnalités excentriques. Oh ouais, et WiFi et BLE. Nous avons parcouru un long chemin en très peu de temps.

Le C3 est vraiment un mélange des deux: un nombre limité de broches GPIO comme l’ESP8266, mais avec de beaux périphériques comme l’ESP32. Si son prix est compatible avec l’ESP8266, il poussera cette puce à la retraite. Mais il est peut-être temps.

L’ESP-IDF a grandi sur nous, mais ce n’est toujours rien comparé à la surabondance d’exemples pour ESP-Arduino ou à l’incroyable facilité d’utilisation de MicroPython. Lorsque ce dernier sera porté sur l’ESP32-C3, avec sa mémoire considérablement étendue par rapport à l’ESP8266, ce sera une plate-forme extrêmement peu coûteuse qui incitera beaucoup à renoncer à la compilation. Mais lorsque vous avez besoin de la vitesse du SDK natif, il est agréable de pouvoir s’appuyer sur la base de code ESP32 existante, donc un ESP8266 dans les vêtements d’ESP32 est un gagnant.

Nous avons des échantillons de pré-production et Espressif travaille toujours sur la prise en charge de toutes les fonctionnalités de l’ESP32-C3 dans l’IDF. Heck, vous ne pouvez pas encore acheter un module ESP32-C3 de toute façon, nous sommes donc coincés à regarder un peu dans notre boule de cristal. Mais les murmures sur les prix similaires à ceux de l’ESP8266 nous font remarquer, et c’est certainement une mise à niveau digne, même à un prix modique, si c’est ce que le marché supportera. Dans le même temps, l’ESP32-C3 est fondamentalement moins performant que l’ESP32, il doit donc être moins cher que cela. Avec les cartes de développement ESP8266 vendues pour 2 $ et les cartes de développement ESP32 vendues pour 4 $, cela ne laisse pas beaucoup de marge de manœuvre, et nous soupçonnons que certaines personnes vont simplement poney pour les ESP32. Il est donc difficile de dire à quel point le prix compte vraiment.

Mais il est agréable de voir des cœurs RISC-V dans plus de périphériques, notamment parce que l’architecture de jeu d’instructions normalisée – qui équivaut essentiellement à un ensemble standard de commandes en langage machine – facilite et accélère l’écriture des compilateurs d’optimisation. Pour l’utilisateur final, cela n’a pas tellement d’importance, mais si économiser de l’argent sur les frais de licence IP est ce qui permet à Espressif d’inclure un ensemble de périphériques plus moderne pour le prix ESP8266, alors nous sommes tous pour.

François Zipponi
Je suis François Zipponi, éditorialiste pour le site 10-raisons.fr. J'ai commencé ma carrière de journaliste en 2004, et j'ai travaillé pour plusieurs médias français, dont le Monde et Libération. En 2016, j'ai rejoint 10-raisons.fr, un site innovant proposant des articles sous la forme « 10 raisons de... ». En tant qu'éditorialiste, je me suis engagé à fournir un contenu original et pertinent, abordant des sujets variés tels que la politique, l'économie, les sciences, l'histoire, etc. Je m'efforce de toujours traiter les sujets de façon objective et impartiale. Mes articles sont régulièrement partagés sur les réseaux sociaux et j'interviens dans des conférences et des tables rondes autour des thèmes abordés sur 10-raisons.fr.