Étape 3: Construire - logiciels
Sketch utilisé
accelerologger fonctionne avec Arduino, et le code/croquis se trouvent ici.
Quelques commentaires sur les parties générales du code :
- Les 3 interrupteurs DIP qui sont codés (#2-4) sont tiré en place avec des résistances internes de la-pins. L’action des interrupteurs sont :
- DIP02 : lecture continue. Si l’interrupteur est éteint (haute tige) la durée de la lecture est définie par la minuterie (temps de lecture), dont la valeur est définie dans le code. Si l’interrupteur est sur (broches faible) les données de lecture et d’écriture va sans interruption (en fait il y a une ligne de code où cela peut être limitée, par défaut, que j’ai mis 2 heures).
- DIP03 : interrompt la lecture. Si l’interrupteur est éteint (haute tige) la lecture va comme spécifié par DIP02. Si le commutateur est activé (broches faible) l’étape de lecture & écriture est contournée, mais les minuteries ne sont pas arrêtés. Cela permet un arrêt propre de la lecture en cas de besoin.
- DIP04 : étalonnage. Si l’interrupteur est éteint (haute tige) il y a une phase d’étalonnage à la configuration. Si le commutateur est activé (broches faible) l’étape de calibrage est contournée.
- Le commutateur DIP qui est pas codé (#1) pouvoirs du Arduino Pro des batteries. Ici la position d’arrêt signifie interrupteur déconnecté (non-).
- La fonction de calibrage simplement lit les données et l’écrit sur la carte SD pendant un temps défini dans le code (TimeC). Il n’y a aucune utilité dans le code des résultats d’étalonnage, le but est seulement de recueillir des informations à un stade contrôlé. Quel usage doit être fourni pour cette information est une question de post-traitement (voir étape suivante).
- Les données de lecture et d’écriture de fréquence peuvent être spécifiées dans le code (nom de la variable : fréquence en Hz). Afin d’ajuster le moment où une entrée est nécessaire : le temps moyen de lecture et d’écriture (TimeDRW), qui, d’après mon expérience, est de 20-25 m la fréquence qui en résulte n’est pas exacte, juste assez bon pour mon application.
- Le voyant jaune s’allume lorsque les choses tournent OK (lecture et écriture), clignote lentement au cours de la préparation (d’installation) et la réalisation des données de lecture et d’écriture. S’il y a un problème avec les données (le composant x de l’accélération est -1 ou 0), la LED rouge clignote pendant une courte période ; Si le problème est lié à la carte SD, la LED rouge reste allumée. Quand il y a une difficulté concernant le développement durable ou de la tâche a été effectuée l’esquisse accède à un mode de repos (boucle infinie Sub) après en avoir informé avec le clignotant correspondante.
MPU6050 et logiciels
En ce qui concerne les MPU6050 :
- La communication auprès de la Commission se fait via le protocole I2C.
- J’ai utilisé le code établi byJohn Chi à http://playground.arduino.cc/Main/MPU-6050.
- Jeff Rowberg a travaillé intensivement sur les bibliothèques et le code pour cet appareil (voir https://github.com/jrowberg/i2cdevlib et http://www.i2cdevlib.com), mais dans mon cas, j’ai trouvé qu’approche de Chi était assez bon par le biais de la bibliothèque de fils.
- Les données brutes, lues par le MPU6050 sont en coordonnées locales. Si les coordonnées globales sont nécessaires, le MPU6050 a un processeur supplémentaire (DMP, processeur numérique de mouvement) qui peut fournir les calculs requis. Ce DMP possède également des capacités de minimisation d’erreur. Accès aux résultats DMP est possible à travers les bibliothèques rédigés par Jeff Rowberg.