Il s'agit donc d'un petit breakout d'environ 2 cm X 1 cm dont le composant principal est le circuit imprimé MMA7455: un accéléromètre qui permet de mesurer l'accélération selon 3 axes. Celui que j'ai acheté a été fabriqué par LCStudio et est vendu sur eBay pour $3...ou $15, ça dépend du vendeur.
D'après la description du vendeur, il peut fonctionner aussi bien à 5 V qu'à 3,3 V. Et on a le choix entre le protocole SPI ou I2C.
Pour ce premier test rapide, désireux de me faciliter la tâche au maximum, j'ai installé la bibliothèque MMA-7455 mise au point par Moritz Kemper et utilisé l'exemple "simpleRead" qui est distribué avec la bibliothèque. Cette bibliothèque est conçue pour une utilisation en I2C, ce qui clôt le débat: j'utiliserai le mode I2C.
Ma seule hésitation concernait la façon de brancher le breakout à l'Arduino, car le schéma présenté par l'auteur de la bibliothèque concerne un breakout qui n'est pas identique à celui que j'ai utilisé.
Si votre breakout est identique à celui qui apparaît sur la photo au début de cet article, les branchements à faire sont:
- Vcc du breakout au 5V de l'Arduino (le circuit intégré fonctionne à 3,3 V, mais le breakout comporte un régulateur de tension).
- GND du breakout au GND de l'Arduino.
- SCL du breakout à l'entrée analogique A5 de l'Arduino.
- SDA du breakout à l'entrée analogique A4 de l'Arduino.
En principe, l'I2C nécessite des résistances de tirage 4,7 kΩ (entre SCL et 5 V, et entre SDA et 5 V), mais ça fonctionne très bien sans qu'elles soient là. Elle sont peut-être déjà présentes sur le breakout?
J'ai ensuite fait l'essai de l'exemple "simpleRead" fourni avec la librairie. Lorsque l'accéléromètre est immobile, bien à plat sur la table, le moniteur série affichait initialement une valeur de -6 en x, -15 en y et 71 en z. On s'attendrait plutôt à 0 en x, 0 en y et 63 en z (63 étant la valeur pour 1g, qui est l'effet de la gravité). En ajoutant l'instruction "mySensor.calibrateOffset(6, 15, -8)" au début du sketch, les valeurs affichées sont maintenant les bonnes.
Évidemment, les valeurs changent si je déplace, incline ou secoue l'accéléromètre. D'après ce que j'ai constaté, l'axe des x est orienté dans le sens de la longueur du breakout, l'axe des y est dans le sens de sa largeur, et l'axe des z est perpendiculaire au plan du breakout.
À lire aussi, 3 projets impliquant cet accéléromètre:
- Circuit qui réagit quand on le secoue
- Mesure d'un angle d'inclinaison
- Une boîte qui crie quand on la laisse tomber (détecteur de chute libre)
Yves Pelletier (Twitter: @ElectroAmateur)