Étape 2: Configurer l’Arduino
Interface avec l’accéléromètre
Branchez l’accéléromètre sur la carte arduino. Si vous utilisez la ADXL335 connecter la tige étiquetée ST sur broche analogique 0, Z à la broche analogique 1, Y à broche analogique 2, X à la broche analogique 3, GND à la broche analogique 4 et VCC à broche analogique 5. Si vous vous perdez dans n’importe quel endroit, simplement référence à la
feuilles de données. Fiches techniques tendent toujours vers le côté dense, mais ils en valent un balayage étroit.
La broche ST n’est pas pertinent à notre projet, les axes X-Y-Z sortie les données brutes, la broche GND est au sol (basse logique ou 0 Volt), la SCR est l’alimentation de l’accéléromètre (logique haute). Le code suivant met cela en place dans l’arduino.
Ensuite, nous utilisons la fonction analogRead(pin) , où 'épingler' est un des 3 pins c'est-à-dire xPin, yPin ou zPin défini ci-dessus pour lire une valeur comprise entre 0-1024 qui nous indique la valeur de l’accélération en cours de lecture.
Nous allons donc commencer à lire ces valeurs !
Le filtrage
C’est intrinsèquement assez délicat depuis l’accélération de lecture d’un morceau (relativement) bon marché de matériel comme la ADXL335 est problématique. Le type de signal que vous allez obtenir de l’accéléromètre va être criblé de signal bruit. Cela signifie que les nouvelles valeurs de l’accéléromètre ne doivent ne pas faire confiance, et si nous utilisons un filtre. Dans ce cas particulier, nous utilisons un Filtre passe-bas
. Nous voulons autoriser uniquement les signaux basse fréquence à passer à travers, des valeurs qui ne diffèrent tous trop près des lectures précédentes. Remarque : même avec un filtrage complexe, la marge d’erreur d’un accéléromètre à bas prix va être élevé, donc intégrer au fil du temps pour obtenir la vitesse ou position de l’accéléromètre va aggraver cette erreur - les valeurs que nous recevons ne sera pas précis du tout. Il y a aussi des considérations pour partialité dérive peut être faite, mais c’est hors de la portée de ce didacticiel. Comment s’y retrouver hors données bruitées est un champ à sa propre ! Nous allons donc faire simple pour l’instant.
Nous ajoutons ceci dans notre programme loop() :
Nous avons défini « k » ci-dessus setup(). Il s’agit d’une constante de filtrage. N’hésitez pas à modifier cette constante mais rester dans la plage 0,5 < k < 1. Des valeurs plus élevées signifie faire confiance encore moins de nouvelles valeurs, et donc ils auront moins d’effet sur notre prochaine itération, c’est ce que nous voulons. Vous pouvez également remarquer xAvg yAvg et avgD. Il s’agit d’une fonction de calibrage, laisse ainsi en parler maintenant.
Sans aucune forme de calibrage l’accéléromètre crachera typiquement les valeurs de la gamme moyenne de 0-1024. Ce n’est pas très utile pour nous car nous voulons le changement relatif à l’accélération d’un point de référence, position de départ de l’accéléromètre. L’arduino démarre à chaque fois, nous courons la fonction calibrate(). Il est impératif que la carte arduino être laissé seul pendant le temps, toute bousculade de l’accéléromètre sera bouleversé la précision de l’étalonnage.
Ajouter à la fin du code de l’arduino :
À la fin de la journée, l’étalonnage est vraiment juste une simple moyenne, que nous finissons par soustraction de nos valeurs brutes. Aucune fanciness ici.
Le streaming de données brutes à analyser
Code complet : https://github.com/aehernandez/Accordion-Master/bl...