Objectif
Pour utilisation, lors de la fête de la science, ce système a été développé afin de créer deux instruments autonomes: un horizon artificiel et un indicateur de cap.
Le montage a utilisé un circuit MPU-6050 qui embarque un accéléromètre à 3 axes et un gyroscope à 3 axes ainsi qu’un ESP32-C3 qui communique avec ce circuit MPU-6050 via le bus I2C et affiche les données graphiques sur un navigateur web.


Fonctionnement pour afficher le roulis et le tangage
Le composant MPU-6050 exploite la technologie MEMS (Micro Electro-Mechanical Systems).
La fonction d’accéléromètre utilise une petite masse mobile (masse d’épreuve) suspendue par des micro-ressorts fabriqués en silicium.
Son fonctionnement repose sur trois éléments :
- La masse d’épreuve : une petite masse qui peut se déplacer.
- Les ressorts microscopiques : ils maintiennent la masse et permettent son déplacement.
- Les électrodes capacitives : elles détectent le déplacement de la masse.

Lorsqu’une accélération est appliquée au capteur, la masse tend à se déplacer par inertie par rapport au boîtier. Ce déplacement modifie la capacité électrique entre les électrodes.
Le circuit électronique interne mesure cette variation, la convertit en une donnée numérique et la rend accessible au microcontrôleur par I²C.
Acquisition et traitement des données
Calcul de l’assiette brute : Le tangage (pitch) et le roulis (roll) sont calculés mathématiquement à partir des accélérations gravitationnelles mesurées sur les axes x, y et z.
Fréquence d’échantillonnage : L’ESP32-C3 interroge le MPU-6050 à intervalle régulier (par exemple toutes les 10 à 50 millisecondes) pour actualiser les angles en temps réel.
Réseau local et serveur Web embarqué (Wi-Fi ESP32-C3)
L’ESP32-C3 s’affranchit de tout routeur ou connexion Internet grâce à son mode Point d’Accès Wi-Fi.
Création du réseau : L’ESP32-C3 diffuse son propre signal Wi-Fi avec un SSID et un mot de passe définis dans le code.
Connexion du navigateur client : Le PC ou le smartphone se connecte directement à ce réseau local en Wi-Fi.
Hébergement des fichiers : La mémoire programme de l’ESP32-C3 stocke directement le code source de la page web (HTML, CSS et JavaScript). Lorsqu’un utilisateur tape l’adresse locale IP (192.168.4.1) de l’ESP32-C3 dans son navigateur, le serveur web embarqué dans l’ESP32-C3 lui transmet cette page.
Communication des données en JSON
Une fois cette page web chargée sur le navigateur du PC ou du smartphone, l’interface reste synchronisée avec les mouvements du capteur.
Requêtes asynchrones : Le script JavaScript exécuté par le navigateur interroge régulièrement l’ESP32-C3 via des requêtes HTTP GET périodiques, par exemple toutes les 50 ms .
Réponse JSON : L’ESP32-C3 lit les derniers angles calculés et renvoie une réponse groupée au format JSON, par exemple :
JSON{ « roll »: 12.5, « pitch »: -4.2}
Affichage graphique Horizon artificiel en JavaScript :
Le navigateur du client traite les données reçues pour animer l’interface graphique.
Rendu visuel : Dans l’élément HTML, le code JavaScript dessine l’horizon artificiel représentant le ciel et la terre avec les graduations angulaires.
Mise à jour dynamique : À chaque réception du JSON, les variables de roulis et de tangage modifient la matrice de transformation ou les coordonnées des éléments graphiques. L’horizon s’incline (roulis) et monte ou descend (tangage) de manière fluide en temps réel, imitant le comportement des instruments de vol aéronautiques.
Fonctionnement pour afficher le lacet
Le principe de gestion du MPU-6050 par l’ESP32-C3 reste le même que précédemment. Cette fonction exploite maintenant la partie gyroscope du MPU-6050. Le montage ESP32-C3 connecté au MTU-6050 calcule la vitesse angulaire et l’angle de lacet (yaw), permettant d’afficher sur l’instrument d’indicateur de cap de l’avion.
Vibrations MEMS et force de Coriolis
Le gyroscope intégré au MPU-6050 ne mesure pas directement une direction, mais il exploite les principes de la mécanique classique pour faire un calcul de vitesse angulaire :
Vibrations MEMS : À l’intérieur de la puce, des microstructures en silicium (masses d’épreuve) sont maintenues en oscillation mécanique constante (elles vibrent d’avant en arrière à haute fréquence par effet électrostatique ou piézoélectrique).
Force de Coriolis : Lorsqu’on applique une rotation au capteur (par exemple autour de l’axe vertical pour le lacet), une force d’inertie transversale appelée force de Coriolis s’exerce sur ces masses en mouvement.
Variation capacitive : Cette force dévie légèrement les masses oscillantes de leur trajectoire, ce qui modifie la distance entre des plaques capacitives microscopiques. Le circuit interne traduit cette variation de capacité en un signal électrique analogique, puis numérique (via un convertisseur analogique-numérique 16 bits), proportionnel à la vitesse angulaire.
Lecture et conversion de la vitesse angulaire par l’ESP32-C3
L’ESP32-C3 communique avec le MPU-6050 via le bus I2C.
Acquisition brute : Le code sur l’ESP32-C3 lit les registres du capteur pour récupérer une valeur brute sur 16 bits correspondant au lacet sur l’axe Z.
Mise à l’échelle : Cette valeur brute est convertie en unités physiques compréhensibles (généralement en degrés par seconde, °/s) en fonction de la sensibilité configurée du gyroscope (par exemple, un calibre de 250°/s donne un facteur de conversion spécifique, tel que 131 LSB/°/s).
Calcul de l’angle de lacet (Yaw)
Pour passer de la vitesse angulaire (la vitesse de rotation à un instant t) à l’angle de lacet (l’orientation globale par rapport à un point de départ), l’ESP32 effectue une intégration mathématique par rapport au temps :
Angle lacet = Angle précèdent + omega_z x Delta t
avec :
- omega_z est la vitesse angulaire instantanée sur l’axe Z (en °/s).
- Delta t est l’intervalle de temps précis entre deux lectures consécutives par la boucle de l’ESP32-C3 (généralement mesuré en millisecondes).
Contrairement au tangage (pitch) et au roulis (roll) pour lesquels l’accéléromètre peut utiliser la gravité terrestre comme référence fixe pour corriger les erreurs, le vecteur de la gravité est vertical (parallèle à l’axe Z).
Par conséquent, l’accéléromètre ne ressent aucune composante horizontale permettant de corriger l’axe du lacet.
- Avec un MPU-6050 seul (6 axes) : L’angle de lacet calculé par intégration des données du gyroscope va inévitablement dériver (s’accumuler et fausser la position) au fil des secondes à cause des micro-bruits électroniques et du biais du capteur.
- La solution pour un lacet stable : Pour obtenir un angle de lacet absolu et sans dérive à long terme, le montage ESP32 pourrait être complété par un magnétomètre (qui fait office de boussole numérique, comme sur le MPU-9250 ou via un capteur externe HMC5883L).
Note : Le vitesse angulaire de rotation de la terre qui est de 0,004 degré par seconde est donc très négligeable par rapport à la précision du dispositif ESP32-C3 et MPU-6050.
Dans notre application, le logiciel est initialisé avec le MPU orienté au nord (yaw : 360°). Les angles de lacets sont reportés par rapport au nord sur l’instrument indicateur de cap pour informer sur la route de l’avion.
Graphique obtenu sur l’écran du PC ou du smartphone

Les affichages de roulis et de tangage sont présentés sur l’instrument de gauche nommé horizon artificiel. Les informations de lacet sont reportées sur l’instrument de droite nommé indicateur de cap.
Code :
ESP32C3_horizonV2_html_integre_marche_rouli_compas.ino
PDF:
http://f6kfa.fr/wp-content/uploads/2026/10/explication_instrument_avion.pdf