Contenus de la page
I. Introduction
1. Présentation du projet et des objectifs
Ce projet consiste à créer une baguette de batterie qui joue des sons en fonction des mouvements effectués, sans avoir recours aux caisses de résonnance.
Pour cela, plusieurs solutions ont été envisagées :
- L’utilisation d’une caméra afin de détecter et localiser les mouvements. Cette solution n’a pas été choisie car ne rentre pas réellement dans l’option Makers, puisqu’elle demande principalement l’utilisation de reconnaissance d’image et le côté électronique n’est que très peu voire pas du tout représenté.
- L’utilisation du système existant dans une Wiimote. Nous n’avons pas choisi cette solution pour plutôt nous diriger vers une solution conçue par nous-mêmes.
- La création from scratch d’une baguette utilisant notamment une gyroscope/accéléromètre. Nous avons choisi cette solution car elle nous permettait de découvrir de nombreux aspects de la réalisation d’un tel projet, comme la conception 3D, le développement, et la gestion de circuits électroniques.
2. Matériel nécessaire
Pour fabriquer cette baguette, on utilisera :
- un ESP32 superMini (ou toute carte Arduino, l’idéal étant d’avoir la plus petite carte possible)
- un capteur gyroscope/accéléromètre MPU 6050
- deux plaquettes de prototypage électronique
- un poste à souder
- un ordinateur portable
- une imprimante 3D
- des vis et inserts de vis
3. Résultat obtenu
Le résultat final obtenu consiste en une baguette imprimée en 3D de 21 cm de long pour 3.5 cm de diamètre. Elle contient un ESP32 superMini ainsi qu’un gyroscope MPU6050. La baguette détecte un mouvement circulaire, et l’ESP32 envoie ces données via l’interface SERIAL pour un traitement du son depuis un ordinateur.
Le projet n’a donc pas abouti sur une version finale comme souhaitée au départ, mais propose une base de travail qui peut être continuée, ou même utilisée dans un autre projet.

II. Conception
1. Détection de mouvement
Le premier objectif est d’être capable de recevoir des mesures cohérentes du capteur gyroscopique. Le protocole de communication utilisé par le capteur est le protocole I2C. Ainsi, on effectue le câblage suivant :

Remarque : les tests s’effectuent sur une carte Arduino UNO classique, mais à terme on préfèrera utiliser la carte ESP32 SuperMini, beaucoup moins encombrante.
Les ports SDA et SCL sont utilisés pour la communication I2C, et le MPU6050 utilisé disposait déjà des bonnes résistances intégrées, permettant une utilisation directe. On relie également AD0 à la terre afin de fixer l’adresse de communication du MPU (0x68). Les ports XDA et XCL permettent de connecter d’autres capteurs au MPU.
Le capteur dispose d’un processeur intégré très pratique, qui va nous permettre d’obtenir des données pré-traitées comme l’orientation du capteur (yaw, pitch, roll), et donc sans avoir besoin de faire travailler la carte arduino/esp. Cependant, afin de pouvoir accéder à ces données, il faut pouvoir utiliser la librairie MPU.
Une version de cette librairie est disponible à l’adresse suivante : https://github.com/jrowberg/i2cdevlib. Cependant, cette version avait quelques problèmes lorsque nous avons essayé de l’utiliser (coupures au bout de quelques secondes à quelques minutes provoquant une déconnexion totale de la carte nécessitant un débranchement), et nous avons fini par trouver une version légèrement modifiée qui marchait parfaitement.
La documentation du gyroscope conseille une lecture des données à 200 Hz, nous avons donc rajouté une vérification pour éviter d’aller plus vite. Pour les calculs que nous avons réalisé ainsi que l’écriture dans le SERIAL, nous nous sommes limités à 20 Hz, mais les calculs pourraient être effectués avec plus de précision au besoin.
Le code en lui-même utilisé pour détecter le mouvement est plutôt simple :
On cherche la différence de tangage (pitch) entre deux lectures, à laquelle on va ajouter une valeur décroissante de la différence précédente afin de ne pas louper le mouvement.
delta_pitch = delta_pitch / 2 + previous_pitch - pitch;
previous_pitch = pitch;
Ensuite, on regarde si ce delta dépasse un angle choisi, et on vérifie qu’il n’y ait pas déjà de mouvement détecté dans les dernières 200 ms (ce qui limite à 300 bpm) afin d’éviter des faux positifs.
if (delta_pitch >= 30 && millis() - last_hit >= 200)
{
Serial.print("1");
last_hit = millis();
}
2. Lecture du son
Il ne reste plus qu’à s’occuper de jouer un son depuis l’ordinateur lorsque l’on reçoit le signal. Pour cela, nous avons utilisé Python et la bibliothèque pygame qui fournit un mélangeur audio en temps réel très simple d’utilisation, nous permettant de simplement fournir un fichier audio en entrée, et de pouvoir gérer plusieurs channels simultanés.
L’utilisation d’un contrôleur MIDI permettrait cependant d’offrir davantage d’outils et d’un contrôle plus grand sur le son, tout en facilitant l’intégration avec d’autres outils.
3. Modélisation de la baguette
Pour modéliser la baguette, il fallait prendre en compte plusieurs paramètres :
- La baguette ne doit pas avoir un diamètre trop important.
- Les composants doivent pouvoir être facilement accessibles pour remplacements, tests, ou simplement récupération du matériel.
- Tout doit être suffisamment stable/fixe pour ne pas se déconnecter ou se cogner lors de mouvements importants.
- La baguette doit pouvoir garder de la place pour ajouter des modules supplémentaires (alimentation, etc)
Nous avons d’abord pensé à un système coulissant, où la baguette serait séparée en deux parties (inférieure et supérieure) qui s’emboitent l’une dans l’autre, et les différents modules utiliseraient un système similaire pour s’emboiter dans la partie inférieure. Deux problèmes majeurs nous sont alors apparus avec cette version. Tout d’abord, il faut trouver un moyen sûr de bloquer les éléments une fois emboités afin d’éviter tout glissement lors des mouvements. Ensuite, la baguette étant déjà petite, les couloirs d’emboitement seraient encor plus petit, et la précision requise serait difficile à atteindre avec une imprimante 3D.
Nous avons donc décidé d’utiliser un système de vis et d’insert. Cela demande donc d’adapter les composants pour pouvoir les visser, mais la difficulté est négligeable puisque nous utilisons des platines d’expérimentation pour les connecter.


Les fichiers source (code et modèle 3D) sont disponibles en bas de la page.
4. Possibilités d’amélioration
Comme vous avez pu le remarquer, le projet dispose encore d’une grande marge d’amélioration. Voici donc une petite liste de fonctionnalités manquantes :
- Détection de la position dans l’espace afin de déterminer quel son jouer lorsqu’un coup est détecté. Plusieurs solutions sont envisageables :
- L’utilisation de l’accéléromètre en effectuant une double intégration pour obtenir la position. Cependant, une telle opération est assez coûteuse et nécessiterait des tests de performance sur l’ESP32, en plus d’avoir un grand défaut de précision (les erreurs s’accumulent). L’utilisation du gyroscope avec un filtre de Kalman par dessus est aussi à envisager.
- L’utilisation d’un système de triangulation. Une idée serait de disposer trois émetteurs (d’ondes pouvant traverser quelques couches de plastique ou de bois sans difficulté) à des positions fixes (et donc, si la précision est suffisante, sur un même support relativement petit pour pouvoir le transporter) et d’utiliser un même récepteur sur la baguette pour évaluer les distances à ces trois points. Il suffit ensuite de calculer l’intersection de trois sphères pour obtenir la position du récepteur.
- L’utilisation d’une caméra pour effectuer une analyse d’image comme mentionné plus haut.
- Communication sans fil avec l’ordinateur. L’ESP32 dispose déjà d’un module Wi-Fi, il faudrait alors simplement ajouter une alimentation dans la baguette et ajouter le code pour la communication.
- Gestion du son par un contrôleur MIDI.
- Utilisation d’une enceinte ou d’un casque sans passer par un ordinateur. Il faudrait alors gérer la communication avec cet appareil, et sans doute trouver un moyen de stocker les différents fichiers audios requis sans surcharger l’ESP32.
- Miniaturisation de la baguette. Dans l’état actuel, la baguette est bien plus épaisse qu’une baguette de batterie classique, ou même que d’une baguette similaire à celle que l’on voulait réaliser pouvant être trouvée sur le marché.
Il est également possible d’utiliser cette base à d’autres fins ;
- Création d’un marteau « parlant », avec un embout en mousse / gonflable, et qui émettrait un bruit « BONK » lors de la frappe.
- Création d’une baguette magique, qui recite des formules selon le mouvement effectué.
- Ou tout autre idée pouvant vous venir à l’esprit.
III. Ressources
code source et modèle 3D : https://github.com/Skydrag42/Makers-2025-AirBatterie
MPU 6050 documentation: https://invensense.tdk.com/wp-content/uploads/2015/02/MPU-6000-Register-Map1.pdf
jrowberg I2cdevlib: https://github.com/jrowberg/i2cdevlib
projets/produits similaires: https://aerodrums.com/ https://www.aeroband.net/products/pocketdrum2-plus