<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DriveCell | Antoine Weill--Duflos</title>
    <link>https://antoine.weill-duflos.fr/fr/tag/drivecell/</link>
      <atom:link href="https://antoine.weill-duflos.fr/fr/tag/drivecell/index.xml" rel="self" type="application/rss+xml" />
    <description>DriveCell</description>
    <generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>fr-fr</language><lastBuildDate>Sat, 30 May 2026 00:00:00 +0000</lastBuildDate>
    <image>
      <url>https://antoine.weill-duflos.fr/media/icon_hu_d686267daab28486.png</url>
      <title>DriveCell</title>
      <link>https://antoine.weill-duflos.fr/fr/tag/drivecell/</link>
    </image>
    
    <item>
      <title>Une pierre qui roule de poche, partie 2 : piloter la bille avec un pont en H sur un CodeCell ESP32-C6</title>
      <link>https://antoine.weill-duflos.fr/fr/post/esp32-rolling-stone-hbridge/</link>
      <pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate>
      <guid>https://antoine.weill-duflos.fr/fr/post/esp32-rolling-stone-hbridge/</guid>
      <description>&lt;p&gt;















&lt;figure  id=&#34;figure-lunité-à-pont-en-h-terminée-cest-le-montage-que-jai-réellement-assemblé-et-que-je-garde-sous-la-main--une-codecell-c6-drive-emballée-bien-compacte-avec-un-câble-usb-c-pour-lalimentation-et-le-flashage-le-montage-audio-de-la-partie-1-na-jamais-été-mis-en-boîtier-comme-ça-il-est-resté-sur-létabli&#34;&gt;
  &lt;div class=&#34;d-flex justify-content-center&#34;&gt;
    &lt;div class=&#34;w-100&#34; &gt;&lt;img alt=&#34;Un petit bloc rectangulaire noir entouré de ruban, tenu dans une main, avec un câble USB-C branché à une extrémité&#34; srcset=&#34;
               /fr/post/esp32-rolling-stone-hbridge/featured_hu_55609ed5e5d778d1.webp 400w,
               /fr/post/esp32-rolling-stone-hbridge/featured_hu_51bd6e9e4f3cc1cd.webp 760w,
               /fr/post/esp32-rolling-stone-hbridge/featured_hu_1438624f51795477.webp 1200w&#34;
               src=&#34;https://antoine.weill-duflos.fr/fr/post/esp32-rolling-stone-hbridge/featured_hu_55609ed5e5d778d1.webp&#34;
               width=&#34;573&#34;
               height=&#34;760&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;figcaption&gt;
      L&amp;rsquo;unité à pont en H terminée. C&amp;rsquo;est le montage que j&amp;rsquo;ai réellement assemblé et que je garde sous la main : une CodeCell C6 Drive emballée bien compacte, avec un câble USB-C pour l&amp;rsquo;alimentation et le flashage. Le montage audio de la partie 1 n&amp;rsquo;a jamais été mis en boîtier comme ça, il est resté sur l&amp;rsquo;établi.
    &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;Dans la &lt;a href=&#34;../esp32-rolling-stone/&#34;&gt;partie 1&lt;/a&gt; j&amp;rsquo;ai construit un boîtier à tenir en main qui vous fait sentir une bille virtuelle rouler dans un tube, d&amp;rsquo;après l&amp;rsquo;&lt;a href=&#34;https://cim.mcgill.ca/~haptic/pub/HY-VH-EH-06.pdf&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;expérience de perception de longueur de Yao et Hayward (2006)&lt;/a&gt;, et j&amp;rsquo;ai restitué la bille en audio via un amplificateur I2S pilotant un actionneur TITAN Haptics. Voici l&amp;rsquo;autre moitié du projet : la &lt;strong&gt;même bille, la même physique, sans amplificateur&lt;/strong&gt;. Ici la sortie haptique est un moteur de vibration piloté directement par un &lt;strong&gt;pont en H&lt;/strong&gt;. C&amp;rsquo;est aussi le montage que j&amp;rsquo;ai réellement terminé et que je garde sous la main, parce que la carte tout-en-un fait tenir l&amp;rsquo;ensemble dans un boîtier plus petit que la Feather plus l&amp;rsquo;amplificateur.&lt;/p&gt;
&lt;p&gt;Si vous n&amp;rsquo;avez pas lu la partie 1, la version courte est : un ESP32-C6 lit l&amp;rsquo;inclinaison d&amp;rsquo;une centrale BNO085, fait tourner une simulation physique à 1 kHz d&amp;rsquo;une bille qui roule et glisse dans un tube (plus un mode boîte à billes en 3D), et transforme le mouvement de la bille en vibration en temps réel. Un seul drapeau de compilation &lt;code&gt;#define HBRIDGE&lt;/code&gt; dans &lt;code&gt;platformio.ini&lt;/code&gt; bascule entre les deux étages de sortie, et le code de physique est identique entre eux. Donc tout ici porte sur la sortie.&lt;/p&gt;
&lt;h2 id=&#34;pourquoi-un-second-montage&#34;&gt;Pourquoi un second montage&lt;/h2&gt;
&lt;p&gt;Le montage I2S est très bien, mais il embarque un amplificateur audio, et on n&amp;rsquo;en a en fait pas besoin pour piloter un actionneur haptique. Une approche très courante et plus simple est le &lt;strong&gt;pont en H&lt;/strong&gt; : deux demi-ponts qui laissent pousser le courant dans l&amp;rsquo;actionneur dans un sens ou dans l&amp;rsquo;autre, avec la tension moyenne réglée par le rapport cyclique du PWM. Le TacHammer Drake se laisse piloter ainsi sans problème ; TITAN liste d&amp;rsquo;ailleurs les pilotes de moteur à pont en H parmi les façons recommandées de le faire fonctionner.&lt;/p&gt;
&lt;p&gt;Donc la question pour ce montage était : puis-je obtenir la même sensation convaincante de pierre qui roule en pilotant le même Drake LFi directement depuis un pont en H, sans aucun chemin audio ? En grande partie, oui, et pour nos besoins cela donne une solution bien plus simple et compacte. Avec la bonne carte, il n&amp;rsquo;y a aucune soudure du tout.&lt;/p&gt;
&lt;h2 id=&#34;le-matériel--codecell-drive-et-drivecell&#34;&gt;Le matériel : CodeCell Drive et DriveCell&lt;/h2&gt;
&lt;p&gt;Ce montage tourne sur une carte &lt;strong&gt;CodeCell ESP32-C6 Drive&lt;/strong&gt; de &lt;a href=&#34;https://microbots.io&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Microbots&lt;/a&gt;. C&amp;rsquo;est une petite carte bien rangée pour exactement ce genre de chose :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ESP32-C6, la même puce que le montage Feather, donc la physique ne change pas.&lt;/li&gt;
&lt;li&gt;Une centrale &lt;strong&gt;BNO085 intégrée&lt;/strong&gt;, câblée en interne sur l&amp;rsquo;I2C (SDA sur IO8, SCL sur IO9) et gérée par la bibliothèque CodeCell. Pas de capteur externe, pas de câble STEMMA.&lt;/li&gt;
&lt;li&gt;Un pont en H &lt;strong&gt;DriveCell&lt;/strong&gt; intégré, exposé dans la bibliothèque sous les noms &lt;code&gt;Drive1&lt;/code&gt; et &lt;code&gt;Drive2&lt;/code&gt;. J&amp;rsquo;utilise &lt;code&gt;Drive1&lt;/code&gt; (IN1 sur IO22, IN2 sur IO21) comme actionneur haptique et je laisse &lt;code&gt;Drive2&lt;/code&gt; en réserve.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Une belle conséquence du tout-intégré est que le montage est physiquement plus petit que la Feather plus l&amp;rsquo;ampli plus la centrale séparée. Pour un boîtier à tenir en main, ça compte.&lt;/p&gt;
&lt;p&gt;















&lt;figure  id=&#34;figure-un-angle-antérieur-avant-de-tout-refermer-au-ruban--la-carte-et-la-mousse-de-rembourrage-nichées-dans-la-coque-imprimée-en-3d-une-fois-fermée-elle-devient-le-petit-bloc-noir-de-la-photo-en-haut&#34;&gt;
  &lt;div class=&#34;d-flex justify-content-center&#34;&gt;
    &lt;div class=&#34;w-100&#34; &gt;&lt;img alt=&#34;Une coque noire imprimée en 3D tenue dans une main, avec une bande de mousse foncée sur le dessus et du kapton, la carte et le rembourrage nichés à l&amp;rsquo;intérieur avant la fermeture du boîtier&#34; srcset=&#34;
               /fr/post/esp32-rolling-stone-hbridge/assembled-internals_hu_7d6dd65a917418e.webp 400w,
               /fr/post/esp32-rolling-stone-hbridge/assembled-internals_hu_1a2061d719fc69c7.webp 760w,
               /fr/post/esp32-rolling-stone-hbridge/assembled-internals_hu_2dbb5aca3cbb1831.webp 1200w&#34;
               src=&#34;https://antoine.weill-duflos.fr/fr/post/esp32-rolling-stone-hbridge/assembled-internals_hu_7d6dd65a917418e.webp&#34;
               width=&#34;573&#34;
               height=&#34;760&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;figcaption&gt;
      Un angle antérieur, avant de tout refermer au ruban : la carte et la mousse de rembourrage nichées dans la coque imprimée en 3D. Une fois fermée, elle devient le petit bloc noir de la photo en haut.
    &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 id=&#34;nomenclature-montage-pont-en-h&#34;&gt;Nomenclature (montage pont en H)&lt;/h3&gt;
&lt;p&gt;L&amp;rsquo;intérêt de ce montage est la brièveté de la liste, et c&amp;rsquo;est exactement pour ça que c&amp;rsquo;est la version que j&amp;rsquo;ai terminée. La CodeCell C6 Drive a déjà la centrale et le pont en H à bord.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Pièce&lt;/th&gt;
          &lt;th&gt;Référence complète&lt;/th&gt;
          &lt;th&gt;Où l&amp;rsquo;acheter&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;Carte tout-en-un&lt;/td&gt;
          &lt;td&gt;Microbots CodeCell C6 Drive. Module ESP32-C6-MINI-1-H8 (8 Mo de flash), avec une centrale BNO085 intégrée, un capteur de lumière et de proximité VCNL4040, et un double pont en H&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://microbots.io/products/codecell-c6-drive&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;microbots.io/products/codecell-c6-drive&lt;/a&gt;, 32,99 €&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Actionneur haptique&lt;/td&gt;
          &lt;td&gt;Un TITAN Haptics TacHammer Drake LFi, piloté depuis le pont en H&lt;/td&gt;
          &lt;td&gt;&lt;a href=&#34;https://titanhaptics.com/drake/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;titanhaptics.com/drake&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Alimentation&lt;/td&gt;
          &lt;td&gt;LiPo 3,7 V avec connecteur JST, plus un câble USB-C&lt;/td&gt;
          &lt;td&gt;n&amp;rsquo;importe quel distributeur de LiPo&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Boîtier&lt;/td&gt;
          &lt;td&gt;Coque imprimée en 3D, mousse acoustique, ruban kapton&lt;/td&gt;
          &lt;td&gt;à fournir soi-même&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;C&amp;rsquo;est toute la nomenclature. Pas d&amp;rsquo;amplificateur séparé, pas de centrale externe, pas de carte de pilotage. Pour une unité bon marché et autonome qu&amp;rsquo;on peut vraiment refermer et glisser dans une poche, c&amp;rsquo;est exactement l&amp;rsquo;intérêt.&lt;/p&gt;
&lt;h2 id=&#34;générer-le-signal-avec-le-pwm-ledc&#34;&gt;Générer le signal avec le PWM LEDC&lt;/h2&gt;
&lt;p&gt;Il n&amp;rsquo;y a pas de flux audio par DMA ici. À la place je pilote les deux broches d&amp;rsquo;entrée du pont en H avec le périphérique &lt;strong&gt;LEDC&lt;/strong&gt; de l&amp;rsquo;ESP32 : une porteuse PWM à 20 kHz avec une résolution de rapport cyclique de 8 bits. 20 kHz est au-dessus de l&amp;rsquo;audition, donc la porteuse elle-même est silencieuse, et l&amp;rsquo;actionneur ne répond qu&amp;rsquo;à l&amp;rsquo;enveloppe que j&amp;rsquo;impose au rapport cyclique.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;astuce de la partie 1 se reporte directement. La vibration de roulement est la même &lt;strong&gt;table d&amp;rsquo;onde indexée par position&lt;/strong&gt;, une période d&amp;rsquo;une arche de sinus négative, indexée par la position de la bille en millimètres. Comme elle est indexée par la position plutôt que par le temps, la hauteur perçue monte automatiquement avec la vitesse de la bille, exactement comme dans le montage audio, alors qu&amp;rsquo;ici je ne mets à jour le rapport cyclique qu&amp;rsquo;une fois par pas physique à 1 kHz au lieu de diffuser 22050 échantillons par seconde. La mise à jour à 1 kHz est assez rapide pour porter la texture de roulement et les transitoires d&amp;rsquo;impact qui intéressent la peau.&lt;/p&gt;
&lt;h3 id=&#34;routage-unipolaire--grondement-sur-une-broche-impact-sur-lautre&#34;&gt;Routage unipolaire : grondement sur une broche, impact sur l&amp;rsquo;autre&lt;/h3&gt;
&lt;p&gt;Le montage audio avait la tâche facile : un échantillon I2S est signé, donc une forme d&amp;rsquo;onde bipolaire qui oscille en positif et en négatif est la chose naturelle. Le rapport cyclique d&amp;rsquo;un PWM est non signé. On ne peut pas écrire un rapport cyclique négatif.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;astuce que j&amp;rsquo;ai retenue est de &lt;strong&gt;séparer le signal par signe entre les deux broches du pont en H&lt;/strong&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le grondement de roulement utilise la table d&amp;rsquo;onde en arche négative, qui est toujours inférieure ou égale à zéro. Je route ça sur la broche &lt;strong&gt;moins&lt;/strong&gt; (IN2) : rapport cyclique proportionnel à l&amp;rsquo;amplitude.&lt;/li&gt;
&lt;li&gt;L&amp;rsquo;impulsion d&amp;rsquo;impact est une courte salve positive. Je route ça sur la broche &lt;strong&gt;plus&lt;/strong&gt; (IN1).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;À un pas donné, exactement une broche est active et l&amp;rsquo;autre est maintenue à rapport cyclique nul. Donc l&amp;rsquo;actionneur reçoit un grondement propre dans une polarité et un coup d&amp;rsquo;impact net dans l&amp;rsquo;autre, le tout depuis un unique signal signé calculé exactement comme le montage audio le calcule. La valeur signée est le langage commun entre les deux montages, et chaque étage de sortie la restitue à la manière que veut son matériel.&lt;/p&gt;
&lt;p&gt;L&amp;rsquo;impact, comme dans la partie 1, fait varier l&amp;rsquo;amplitude et la durée avec la vitesse d&amp;rsquo;impact : d&amp;rsquo;un pas de 2 ms pour un effleurement doux jusqu&amp;rsquo;à un coup de 9 ms pour un choc violent contre la paroi.&lt;/p&gt;
&lt;h2 id=&#34;pièges-embarqués-à-noter&#34;&gt;Pièges embarqués à noter&lt;/h2&gt;
&lt;p&gt;Quelques choses m&amp;rsquo;ont mordu sur cette carte et valent la peine d&amp;rsquo;être notées, parce que c&amp;rsquo;est le genre de truc qui vous fait perdre une soirée.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le maintien des GPIO pendant la veille profonde.&lt;/strong&gt; Le CodeCell peut entrer en veille profonde, et l&amp;rsquo;ESP32 peut verrouiller les états des GPIO à travers la veille avec une fonction de maintien. Si une broche était maintenue depuis un cycle d&amp;rsquo;alimentation précédent, la reconfigurer ne fait rien tant qu&amp;rsquo;on ne libère pas explicitement le maintien. Donc au démarrage j&amp;rsquo;appelle &lt;code&gt;gpio_hold_dis&lt;/code&gt; sur les broches du pont en H, la broche d&amp;rsquo;alimentation du capteur, et les broches I2C avant de les configurer. Sans ça, le premier démarrage après une veille peut revenir avec un actionneur mort ou un bus capteur mort, par intermittence, ce qui est le pire genre de bug.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Les broches d&amp;rsquo;activation du capteur et de la LED.&lt;/strong&gt; Sur cette carte le capteur et la LED d&amp;rsquo;état sont derrière des broches d&amp;rsquo;activation (IO18 et IO20). Il faut les mettre à l&amp;rsquo;état haut tôt dans &lt;code&gt;setup()&lt;/code&gt;, avant le scan I2C, sinon le BNO085 n&amp;rsquo;est tout simplement pas là.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Le chien de garde mono-cœur.&lt;/strong&gt; Comme pour le montage Feather : le C6 n&amp;rsquo;a qu&amp;rsquo;un cœur, mon &lt;code&gt;loop()&lt;/code&gt; se gare à l&amp;rsquo;infini, donc je retire la tâche loop d&amp;rsquo;Arduino du chien de garde sinon la carte se réinitialise toutes les dix secondes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Éviter les broches JTAG.&lt;/strong&gt; Les GPIO 4 à 7 sont du JTAG sur l&amp;rsquo;ESP32-C6. Facile d&amp;rsquo;en attraper une par accident pour une sortie et de se demander ensuite pourquoi le débogage est bizarre. Je les laisse libres sur les deux cartes.&lt;/p&gt;
&lt;h2 id=&#34;comparaison-avec-le-montage-i2s&#34;&gt;Comparaison avec le montage I2S&lt;/h2&gt;
&lt;p&gt;Côte à côte, les deux montages se sentent différents de façons instructives.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bande passante.&lt;/strong&gt; Le montage audio fait tourner la sortie à 22050 Hz et peut restituer une texture fine et des transitoires nets. Le montage à pont en H se met à jour à 1 kHz. Pour le grondement de roulement et les impacts c&amp;rsquo;est amplement suffisant, et honnêtement l&amp;rsquo;essentiel de ce que la peau résout dans cette bande passe très bien. Le montage audio garde l&amp;rsquo;avantage sur le détail le plus net et le plus haut en fréquence.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simplicité et taille.&lt;/strong&gt; Le montage à pont en H est plus petit et a moins de pièces : pas d&amp;rsquo;amplificateur, centrale intégrée, pont en H intégré. C&amp;rsquo;est le montage vers lequel j&amp;rsquo;irais pour faire une unité bon marché et autonome.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Le modèle de signal est partagé.&lt;/strong&gt; C&amp;rsquo;est la partie que je préfère. La même table d&amp;rsquo;onde indexée par position, le même modèle d&amp;rsquo;impact, la même enveloppe signée pilotent les deux. Le montage audio la diffuse en échantillons, le montage à pont en H la sépare entre deux broches. La bille est la même bille.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;rsquo;application compagnon se moque de quel montage est à l&amp;rsquo;autre bout du fil. Elle parle le même protocole série et BLE dans les deux cas, donc je peux observer et régler les deux :&lt;/p&gt;
&lt;p&gt;















&lt;figure  id=&#34;figure-la-même-application-compagnon-que-dans-la-partie-1-ici-en-train-dobserver-la-physique-de-roulement-le-protocole-est-identique-entre-les-deux-montages-donc-loutillage-est-partagé&#34;&gt;
  &lt;div class=&#34;d-flex justify-content-center&#34;&gt;
    &lt;div class=&#34;w-100&#34; &gt;&lt;img alt=&#34;Capture de l&amp;rsquo;application compagnon en mode roulement : une interface sombre avec un tube gris incliné vers le bas à gauche avec une bille orange dessus et un éclat rouge sur la paroi, des tracés d&amp;rsquo;historique de position et de vélocité à droite, et un panneau de télémétrie montrant mode ROLLING, position, vélocité, et une fréquence physique de 1000 Hz&#34; srcset=&#34;
               /fr/post/esp32-rolling-stone-hbridge/viz-rolling_hu_13e405a38069a73f.webp 400w,
               /fr/post/esp32-rolling-stone-hbridge/viz-rolling_hu_ca995601256eb4c5.webp 760w,
               /fr/post/esp32-rolling-stone-hbridge/viz-rolling_hu_d354f1c1785d795c.webp 1200w&#34;
               src=&#34;https://antoine.weill-duflos.fr/fr/post/esp32-rolling-stone-hbridge/viz-rolling_hu_13e405a38069a73f.webp&#34;
               width=&#34;760&#34;
               height=&#34;485&#34;
               loading=&#34;lazy&#34; data-zoomable /&gt;&lt;/div&gt;
  &lt;/div&gt;&lt;figcaption&gt;
      La même application compagnon que dans la partie 1, ici en train d&amp;rsquo;observer la physique de roulement. Le protocole est identique entre les deux montages, donc l&amp;rsquo;outillage est partagé.
    &lt;/figcaption&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 id=&#34;où-ça-va&#34;&gt;Où ça va&lt;/h2&gt;
&lt;p&gt;Les deux montages fonctionnent et produisent tous deux une sensation convaincante de pierre qui roule, ce qui me surprend encore un peu vu qu&amp;rsquo;il n&amp;rsquo;y a rien qui bouge à l&amp;rsquo;intérieur. Le projet est en cours : le boîtier est un prototype, le boîtier reste à tenir en main (il est petit), et les prochaines étapes sont un tube plus long pour rendre l&amp;rsquo;illusion de longueur plus convaincante, une batterie embarquée pour couper le fil, et un petit test de perception de longueur dans l&amp;rsquo;esprit de l&amp;rsquo;article d&amp;rsquo;origine.&lt;/p&gt;
&lt;p&gt;Si vous voulez en construire un, le firmware pour les deux cibles est sur GitHub à &lt;a href=&#34;https://github.com/Leicas/esp32-ball&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;github.com/Leicas/esp32-ball&lt;/a&gt;, avec les deux environnements PlatformIO (&lt;code&gt;feather&lt;/code&gt; pour le montage I2S, &lt;code&gt;hbridge&lt;/code&gt; pour celui-ci) et l&amp;rsquo;application compagnon en Python. Commencez par la &lt;a href=&#34;../esp32-rolling-stone/&#34;&gt;partie 1&lt;/a&gt; pour la physique et le chemin audio, puis basculez le drapeau de compilation et sentez la différence.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
