Tutoriels pour la carte d’extension X-NUCLEO IKS01A3

Il est conseillé de disposer de la carte d’extension X-NUCLEO IKS01A3 pour ces exercices. Cependant, un certain nombre de modules I2C proposés par Seeed Studio, DFRobot et Adafruit (entre autres sociétés) utilisent également les MEMS de la X-NUCLEO IKS01A3 et les codes présentés ici fonctionneront (en principe) sans modifications importantes des fichiers main.py et des classes contenant les pilotes.

Présentation

La carte d’extension X-NUCLEO IKS01A3 fait la démonstration de plusieurs capteurs MEMS (systèmes micro- électro-mécaniques) de STMicroelectronics :

  • LSM6DSO : Accéléromètre 3D + Gyroscope 3D
  • LIS2MDL : Magnétomètre 3D
  • LIS2DW12 : Accéléromètre 3D
  • LPS22HH : Baromètre (260 à 1260 hPa)
  • HTS221 : Capteur d’humidité relative
  • STTS751 : Capteur de température de précision (–40 °C à +125 °C)

Les photos qui suivent montrent :

  • Une X-NUCLEO IKS01A3 connectée (par les connecteurs Arduino) sur une NUCLEO_WB55 (à gauche).
  • La liste et la postion des différents capteurs installés sur une X-NUCLEO IKS01A3 (à droite).
X-NUCLEO IKS01A3 connectée à NUCLEO-WB55 Les capteurs de X-NUCLEO IKS01A3
X-NUCLEO IKS01A3 connectée à NUCLEO_WB55 X-NUCLEO IKS01A3

Les capteurs MEMS ont révolutionné les applications électroniques et sont à la base – avec des capteurs d’image et de distance sans cesse plus performants – de toutes les fonctions ludiques et avancées des smartphones et des objets connectés en général. Ils sont également les composants clés des centrales inertielles des drones et des casques et manettes de réalité virtuelle. Une excellente introduction aux technologies MEMS est disponible dans cette fiche EDUSCOL.

Les MEMS les plus communs sont :

  • L’accéléromètre tridimensionnel. Ce MEMS mesure les accélérations (ax, ay, az) appliquées selon trois axes orthogonaux (x, y, z), exprimées en millivolts par g (mV/g). Si l’objet sur lequel il est fixé est immobile et posé sur le sol (terrestre), l’accéléromètre mesurera l’accélération de la gravité, dirigée vers le centre de la Terre, constante et d’intensité 1g ou encore 9.81 m/s2. Si son support se déplace, l’accéléromètre mesurera en plus les accélérations dynamiques du mouvement, les vibrations, etc. Un accéléromètre est donc très sensible aux signaux parasites, encore appelés bruit.
    L’accéléromètre 3D est adapté aux applications comme la détection de mouvement, la reconnaissance de mouvement, l’orientation d’affichage et la détection de chute libre.

  • Le gyroscope tridimensionnel. Ce MEMS mesure les vitesses angulaires de rotation (gx, gy, gz) autour de trois axes orthogonaux (x, y, z), exprimées en radians par seconde (rad/s). Il est très précis pour détecter des désorientations et est insensible au bruit, mais son utilisation pour calculer des angles de rotation est délicate car elle nécessite d’intégrer (sommer) au cours du temps les vitesses angulaires. Cette technique cumule rapidement les erreurs de mesure ; on dit que le gyroscope dérive.
    Le gyroscope 3D est adapté aux applications comme le contrôle de mouvement, les appareils électroménagers et la robotique. Pour des applications plus exigeantes, pour stabiliser un drone par exemple, on devra le coupler avec un accéléromètre 3D et avoir recours à des algorithmes de fusion de capteurs.

  • Le magnétomètre tridimensionnel. Ce MEMS mesure l’intensité du champ magnétique (mx, my, mz) autour de trois axes orthogonaux (x, y, z), exprimées en milligaus (mg) ou en microteslas (µT). Ces capteurs sont très sensibles aux matériaux qui les environnent et doivent généralement être calibrés.
    Pour en savoir plus à leur sujet, notamment leur application immédiate consistant à programmer une boussole afin de suivre un cap, nous vous invitons à suivre ce tutoriel.

  • Le capteur de pression. Ce MEMS mesure la pression atmosphérique absolue, exprimée en millibars (mbar) ou en hectopascals (hPa, identique au mbar). Sa précision étonnante permet de détecter des variations de pression correspondant à des variations d’altitude de quelques centimètres. Outre pour les mesures météo, il est donc très utilisé pour des applications d’altimétrie (calculs de vitesses ascensionnelle, altimètres de randonnée, etc.).

  • Le capteur de température. Ce MEMS mesure la température ambiante, exprimée en degrés Celsius (°C). La mise en œuvre d’une mesure de température fiable, notamment lorsqu’on souhaite utiliser le résultat pour des mesures environnementales, est très délicate.

  • Le capteur d’humidité relative. Ce MEMS donne une estimation de l’humidité relative, exprimée en pourcentage (%). À 100 % d’humidité, l’eau en suspension dans l’air se condense et apparaît sous forme de gouttelettes (brouillard, fumée…), alors qu’avec un taux d’humidité moindre (de plus en plus sec), l’air devient de plus en plus limpide. Le taux d’humidité relative correspond peu ou prou au pourcentage de possibilité de condensation de l’eau en suspension dans de l’air à cette température et à cette pression (source).

Une fois la carte d’extension placée sur les connecteurs Arduino, ses capteurs sont raccordés au bus I2C de la carte NUCLEO-WB55. Lorsque vous la branchez assurez-vous de bien respecter le marquage des connecteurs (i.e. le bon alignement avec les connecteurs Arduino) : CN9 -> CN9, CN5 -> CN5, etc.

La carte d’extension X-NUCLEO IKS01A3 dispose également d’un emplacement au format DIL 24 broches pour lui ajouter des capteurs I2C supplémentaires (par exemple, le gyroscope A3G4250D).

Orientation des axes des accéléromètres, magnétomètres et gyroscopes

Le schéma ci-dessous précise comment sont définis les axes x, y et z pour le LIS2MDL (magnétomètre), le LIS2DW12 (accéléromètre) et le LSM6DSO (accéléromètre et gyroscope). Ces informations sont indispensables à la bonne programmation de tous les algorithmes exploitant ces MEMS pour calculer des orientations dans l’espace.

X-NUCLEO IKS01A3


Liste des tutoriels

Voici la liste des tutoriels proposés avec la X-NUCLEO IKS01A3.

Tous ces exemples mettent en oeuvre ses capteurs MEMS et, bien évidemment, peuvent être directement transposés à d’autres cartes d’extensions (notamment les modules Grove) qui utilisent des accéléromètres, baromètres, gyroscopes… différents.

Vous constaterez que tous ces MEMS utilisent le protocole I2C et sont donc connectés au bus du même nom sur la carte NUCLEO-WB55. I2C est l’acronyme de “Inter-Integrated Circuit” (en français : bus de communication intégré inter-circuits). Il s’agit d’un bus série fonctionnant selon un protocole inventé par Philips. Pour dialoguer sur un bus I2C, chaque module “esclave” qui s’y trouve branché est identifié par une adresse codée sur 7 bits afin de dialoguer avec le contrôleur maître intégré au STM32WB55.

Avec la prolifération des modules I2C, il pourrait arriver que deux ou plusieurs modules que vous auriez connectés sur un bus I2C aient la même adresse, ce qui conduirait inévitablement à des plantages. Pour éviter ce type de conflits, vous devrez consulter les fiches techniques de vos modules et, pour ceux qui le permettent, prendre soin de modifier (si nécessaire) leur adresse I2C, généralement codée dans leur firmware.

Le tableau ci-dessous rappelle, entre parenthèses, dans la colonne Adresse, l’adresse I2C des différents MEMS de la X-NUCLEO IKS01A3.


Tutoriel Bus Adresse
Mise en oeuvre de l’accéléromètre LIS2DW12 et programmation d’un inclinomètre I2C 0x19
Mise en oeuvre de l’accéléromètre et du gyroscope LSM6DSO I2C 0x6B
Mise en oeuvre du magnétomètre LIS2MDL et programmation d’une boussole I2C 0x1E
Mise en oeuvre du baromètre et thermomètre LPS22HH et programmation d’un altimètre I2C 0x5D
Mise en oeuvre du capteur de température et d’humidité relative HTS221 I2C 0x5F
Mise en oeuvre du capteur de température de précision STTS751 I2C 0x4A