dimanche 4 janvier 2015

Une boîte qui crie quand elle tombe

Aujourd'hui, nous poursuivons notre exploration de l'accéléromètre MMA7455.  Au cours des derniers jours, nous avons fabriqué un appareil qui mesure avec quelle intensité il est secoué, et nous avons construit un inclinomètre.  Cette fois-ci, nous allons construire un détecteur de chute libre.  Pour ce faire, nous allons mettre dans une petite boîte un Arduino Uno, un accéléromètre et un haut-parleur:  le haut-parleur va émettre un son chaque fois que la boîte sera en chute libre (si vous préférez, vous pouvez utiliser le même principe pour construire un ballon qui devient lumineux aussitôt qu'il se trouve dans les airs).


Si vous avez suivi quelques cours de physique, vous savez que l'accélération d'un objet en chute libre est de 9,8 m/s² vers le bas.  Et, bien entendu, l'accélération d'un objet qui repose sagement immobile est nulle.

Notre accéléromètre, toutefois, ne fait aucune différence entre la gravité et l'accélération:  lorsqu'il est immobile, il mesure une accélération vers le haut égale à 9,8 m/s², et lorsqu'il est en chute libre il mesure une accélération nulle (c'est assez logique:  dans l'espace intersidéral, si vous désirez que les passagers d'un vaisseau spatial subissent une gravité artificielle identique à celle de la terre, vous devrez faire subir au vaisseau une accélération de 9,8 m/s²).

Les branchements

En supposant que vous utilisez le même breakout MMA7455 que moi (celui qui est illustré ci-contre), c'est tout simple:

  • Vcc du breakout au 5V de l'Arduino 
  • 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.
Il faut aussi brancher le haut-parleur à l'Arduino:  un fil à la pin 9, et l'autre à une pin GND de l'Arduino.
Ensuite, vous mettez tout ça dans une boîte, avec un peu de papier journal froissé pour éviter que les divers composants se déplacent l'un par rapport à l'autre dans la boîte (et pour les protéger lors du choc de la boîte sur le plancher).

Le mieux, c'est d'alimenter votre Arduino au moyen d'une pile (dans mon prototype, je me suis contenté de faire passer mon câble USB par un trou dans la boîte).


Bibliothèque MMA7455

À moins que ce ne soit déjà fait, vous installez la bibliothèque mise au point par Moritz Kemper pour utiliser ce genre d'accéléromètre avec l'Arduino.


Le sketch

Rien de bien compliqué ici:  nous utilisons la fonction "Tone" pour émettre un son lorsque l'accéléromètre mesure une valeur nulle.  Nous avons tout de même une assez grande marge de manoeuvre entre la situation où l'accéléromètre est immobile (il indique alors une accélération de 63) et celui où il est en chute libre.  Pour tenir compte des incertitudes de mesure,  je me contente de détecter une accélération inférieure à 15.

Pour une meilleure fiabilité, prenez la peine de calibrer votre accéléromètre en modifiant les valeurs de calibrateOffset pour que les valeurs affichées par l'accéléromètre quand il est immobile, bien à plat sur une table soient de 0 en x, 0 en y et 63 en z.

Il ne vous reste plus qu'à tester le dispositif:  laissez tomber la boîte, ou lancez-là dans les airs:  aussitôt qu'elle quitte vos mains (et jusqu'à ce qu'elle touche au sol), elle émet un beep.


Yves Pelletier (Twitter:  @ElectroAmateur)

Aucun commentaire:

Enregistrer un commentaire