ESP32-S31
(espressif.com)- ESP32-S31 est un microcontrôleur RISC-V 32 bits double cœur cadencé jusqu’à 320 MHz, destiné aux applications IoT avancées nécessitant une connectivité multiprotocole et une IHM riche
- La connectivité combine le Wi-Fi 6 2,4 GHz, Thread et Zigbee basés sur IEEE 802.15.4, le Bluetooth 5.4 LE et le Bluetooth Classic, ainsi qu’un Ethernet MAC 1000 Mbps
- Le système et la mémoire comprennent 60 GPIO, une MMU, 6,86 CoreMark/MHz, 512 KB de SRAM, une connexion PSRAM DDR 8 bits à 250 MHz, l’accès simultané à la flash et à la PSRAM, ainsi qu’une interface SPI dédiée compatible Octal SPI haut débit
- L’IHM et l’audio associent une caméra DVP, des écrans LCD parallèles RGB/I8080/MOTO6800, un codec JPEG, PPA et 2D-DMA, jusqu’à 14 canaux tactiles, ainsi que la synchronisation audio Bluetooth matérielle du LE Audio basé sur LC3 et du double I2S
- La sécurité et le logiciel incluent un TRNG, un PUF basé sur la RAM, secure boot, le chiffrement de la flash et de la PSRAM, des accélérateurs AES/RSA/ECDSA/ECC, TEE/APM, avec une intégration prévue avec ESP-IDF, ESP-Matter, ESP-BLE-AUDIO, ESP-GMF et ESP Private Agents
Vue d’ensemble
- L’ESP32-S31 est un microcontrôleur RISC-V 32 bits double cœur haute performance, fonctionnant jusqu’à 320 MHz, ciblant les applications IoT avancées qui nécessitent une connectivité multiprotocole complète et une interface homme-machine riche
- Avec ses 60 GPIO, il offre de la flexibilité pour les conceptions complexes intégrant plusieurs protocoles sans fil, diverses interfaces d’affichage et un large éventail de périphériques
- Il convient aux charges de travail d’edge AI et de machine learning, avec une orientation vers l’inférence de réseaux neuronaux, le traitement avancé du signal, la vision par ordinateur et les applications audio intelligentes, dans l’efficacité propre à une plateforme embarquée
Connectivité et performances de traitement
- Le Wi-Fi 6 2,4 GHz (802.11ax) vise à améliorer l’efficacité de transmission et à réduire la consommation d’énergie, ce qui en fait une option adaptée aux appareils sur batterie et toujours connectés
- IEEE 802.15.4 permet les protocoles Thread et Zigbee, tandis que le Bluetooth 5.4 LE prend en charge LE Audio, Direction Finding et Bluetooth Mesh 1.1
- Le Bluetooth Classic (BR/EDR) assure la compatibilité avec les appareils audio existants et les applications IHM à faible latence, tandis que l’Ethernet MAC 1000 Mbps fournit une connexion filaire stable et à haut débit
- Le système repose sur une architecture RISC-V 32 bits double cœur avec prise en charge de la MMU, offrant 6,86 CoreMark/MHz de performances de traitement et 60 GPIO
- L’un des cœurs dispose d’un chemin de données 128 bits et d’instructions SIMD pour accélérer le traitement parallèle
- La mémoire se compose de 512 KB de SRAM, d’une connexion PSRAM DDR 8 bits à 250 MHz, d’un accès simultané à la flash et à la PSRAM, ainsi que d’une extension mémoire externe via une interface SPI dédiée compatible avec le mode Octal SPI haut débit
IHM et audio
- L’entrée caméra utilise une interface caméra DVP 8 à 16 bits, tandis que les écrans LCD prennent en charge les interfaces parallèles RGB 8 à 24 bits, I8080 et MOTO6800
- Les conversions entre RGB565, YUV422, YUV420 et YUV411 sont prises en charge, et les accélérateurs matériels du codec JPEG, de PPA et du 2D-DMA améliorent l’efficacité du traitement d’image et des mises à jour de l’affichage
1 commentaires
Avis sur Hacker News
Espressif cartonne vraiment, et il y a même des instructions SIMD dans le CPU
Les cœurs RISC-V ont une vraie importance dans l’embarqué. En effet, compiler pour un SoC ne consiste plus à télécharger une toolchain et un SDK propriétaires à moitié cassés, mais se rapproche désormais d’une simple ligne comme
rustup target add riscv32imac-unknown-none-elfPour se lancer dans le développement embarqué moderne en Rust, on peut consulter https://kerkour.com/introduction-to-embedded-development-wit... et https://kerkour.com/rust-esp32-pentest
Les modules CAN-FD et Motor PWM sont bienvenus, mais le temps de conversion ADC n’apparaît nulle part. En contrôle moteur, il faut un temps de conversion inférieur à 1 µs, et après environ 15 ans de reports, on est passé l’an dernier de la virgule fixe à la virgule flottante
imacdans le nom de cible de l’architectureAvec de l’impression 3D, de l’approvisionnement automatique en composants, de l’écriture de logiciels sur mesure, et peut-être même un bras robotique, l’idéal serait un objet posé sur le bureau, une jolie boîte dans laquelle on dépose les composants comme dans une boîte aux lettres. PROFIT
J’aimerais qu’on n’appelle pas tout ESP32. Le passage de l’ESP8266 et de l’ESP8285 à l’ESP32 avait du sens, mais maintenant il existe plus de dix versions aux fonctions et architectures différentes
C’est un peu comme dans chaque fil sur le Raspberry Pi Pico (RP2030/RP2350), où quelqu’un finit toujours par le confondre avec la version ordinateur monocarte
Quand j’entends ESP32, je pense encore d’abord à l’ESP32 Classic, généralement le WROOM-32E
Il ne s’agit pas de plus de dix « versions » avec des fonctionnalités différentes. Le mot version suggère fortement une évolution progressive dans le temps, gâchée par le fait d’ajouter et de retirer des modules
En réalité, il existe 4 à 5 lignes de produits qui partagent le même SDK, la même philosophie de conception, la même structure tarifaire, la même chaîne d’approvisionnement et les mêmes canaux de support. Pour les équipes d’ingénierie qui conçoivent des produits, chacune de ces lignes est très importante. Ce n’est pas seulement une question pour les amateurs autodidactes, même si je trouve qu’ils sont aussi très bien pris en charge
À l’intérieur de ces lignes, il y a de vraies versions. Par exemple, aujourd’hui on a surtout les lignes S, C, H et P, et l’ESP32-S2 n’est plus recommandé pour les nouvelles conceptions, il faut utiliser l’ESP32-S3
Au fond, le critère pour comprendre cela est simple : peut-on mettre une puce portant le nom ESP32 sur un PCB et la programmer avec le même SDK ?
C’est pareil pour la série de microcontrôleurs RP2XXX. Si l’on confond microcontrôleur et ordinateur monocarte, on n’est peut-être pas à sa place dans cette discussion
Plus largement, face à ce genre de sujet, on apprend plus vite en ne partant pas du principe que « j’ai déjà compris et les autres ont tort ». Mieux vaut garder l’esprit ouvert et poser beaucoup de questions ; c’est un âge d’or pour les autodidactes, mais seulement pour ceux qui savent conserver longtemps une curiosité humble
Je fais des projets artistiques à LED en amateur avec WLED, qui repose uniquement sur la plateforme ESP32. C’est vraiment amusant, et je suis toujours impressionné par les performances de ces petites cartes et par la communauté open source
Ma plateforme de contrôleur préférée est la gamme QuinLED. Elle intègre la distribution d’alimentation, des régulateurs de tension, des pistes cuivre épaisses, des résistances de ligne de données configurables et la prise en charge de matériel auxiliaire intelligent, le tout pour environ 30 à 50 dollars par contrôleur, ce qui reste abordable. quinled.info
<https://kno.wled.ge/> est le site de WLED, et à titre personnel je trouve que c’est l’une des URL les plus astucieuses de tous les temps
En regardant la fiche technique, j’ai vu le périphérique BitScrambler, qui semble très proche du PIO du Raspberry Pi Pico en termes de flexibilité
Les spécifications ont l’air bonnes, et il reste à voir combien de temps il faudra avant qu’il arrive dans le format Espressif que je préfère, en module WROOM ou en petite carte de développement. Je suis aussi curieux du prix, mais jusqu’ici c’était impressionnant de voir que, pour un tarif similaire, chaque génération apportait beaucoup plus de choses
Si vous attendez surtout avec intérêt le cœur RISC-V relativement rapide et le SIMD, le P4, déjà disponible, vaut aussi le détour. L’horloge est un peu plus rapide, mais il n’a pas de connectivité sans fil : https://products.espressif.com/#/product-comparison?names=ES...
Il existe aussi des projets intéressants qui exploitent les fonctions DSP et le traitement d’image intégré pour manipuler beaucoup de données de pixels, et cela devrait fonctionner de façon similaire sur le S31 : https://www.reddit.com/r/WLED/comments/1ry2jd7/wledmmp4_with...
Discussion précédente au moment de l’annonce il y a deux mois : https://news.ycombinator.com/item?id=47561678
C’est bien de voir le retour du Wi-Fi et de l’Ethernet filaire dans le même composant
En revanche, il a perdu le support MIPI présent sur la gamme P4 à double cœur RISC-V
Ces petits appareils sont vraiment fascinants. J’ai un side project que je lancerai peut-être un jour : disposer 32 SoC, ou un plus petit nombre de SoC avec davantage de cœurs, les relier à un hub Ethernet via le routage du PCB, puis laisser un ou plusieurs ports réseau en amont pour pouvoir connecter plusieurs cartes
Chaque cœur serait chargé d’allumer une LED rouge sur la face avant de la carte via un support de LED à 90 degrés
J’aimerais regrouper 16 de ces cartes pour fabriquer un petit cube Connection Machine
Cela dit, je ne sais pas vraiment à quoi servirait un cluster de 512 serveurs très faibles. Probablement à apprendre à gérer un nombre absurdement élevé de nœuds
L’objectif principal est de comprendre comment programmer ce genre de chose en trouvant un équilibre entre facilité d’utilisation et performances
Des idées comme des jonctions de PSRAM sont aussi intéressantes. Chaque cœur aurait sa propre PSRAM, tout en pouvant échanger la propriété avec ses voisins
Je me suis aussi demandé ce qui arriverait aux bandes de fréquences sans fil si on faisait ça avec des ESP32. Dans un petit espace, cela reviendrait à avoir 512 appareils qui se crient dessus
Je me réjouis de voir l’adoption de RISC-V progresser dans toute la gamme ESP32. Les anciens composants basés sur Xtensa étaient très bien, mais avec RISC-V, les outils, le support des compilateurs et l’écosystème à long terme devraient être plus propres
Je joue un peu de musique, donc je m’intéresse à la sortie audio
Je me demande où en est aujourd’hui la sortie audio Bluetooth sur microcontrôleur. Peut-on obtenir une faible latence et une sortie de bonne qualité ?
Si vous voulez vraiment minimiser la latence sur ce type de matériel tout en restant en sans-fil, une solution consiste à utiliser un autre ESP32 pour envoyer un flux binaire directement entre les deux
Il y a quelques années, j’ai essayé de monter un environnement de composition sur DAW de loisir en déplacement avec un ordinateur portable Windows haut de gamme. La latence réelle de l’audio BT entre le portable et un casque ou des écouteurs était déjà inutilisable, et séparément la latence d’entrée d’un contrôleur MIDI BT était elle aussi inutilisable. En combinant les deux, la latence totale devenait ridicule
À l’époque, le problème était largement connu et abondamment déploré. Certains blogs techniques, y compris des blogs MSFT, expliquaient qu’il y avait des problèmes à tous les niveaux de la pile — pilotes, firmware, silicium, etc. — et qu’un travail était en cours pour régler ce chaos de bout en bout
La seule solution Windows réellement utilisable mentionnée en ligne consistait à employer un appareil sans fil spécifique non Bluetooth. Il fallait brancher un dongle USB dédié sur le portable, puis soit choisir un appareil précis, soit choisir un dongle récepteur prenant en charge tous les appareils, ce qui était tout simplement moins attrayant que d’utiliser un câble
Depuis, je reviens vérifier à peu près une fois par an, mais je n’ai toujours pas vu de rapport de progrès significatif, et il y a même moins de discussions sur les travaux en cours. C’est extrêmement décevant. Du côté de la qualité audio BT non plus, cela ne semble pas avoir beaucoup progressé
Pour éviter une dégradation de la qualité audio, il faut choisir des appareils spécifiques qui prennent en charge des codecs BT propriétaires, ou passer à du matériel avec dongle sans fil non BT. On parle tout de même d’améliorations de la qualité audio, mais il n’y a pas de signe clair qu’une meilleure qualité minimale par défaut va être imposée dans la norme de l’audio BT
Si quelqu’un a des informations sur une amélioration de la latence par défaut, de la qualité ou des entrées/sorties des appareils BT standard dans les configurations Windows, je serais vraiment preneur