dimanche 10 juin 2018

Data logging avec Arduino Leonardo

Les microcontrôleurs constituent un outil précieux dans le domaine scientifique, grâce à la possibilité d'y brancher différents capteurs afin de prendre des mesures. 

Lorsqu'il s'agit de mesures nombreuses, étalées sur une certaine plage de temps, il faut penser à un moyen d'enregistrer ces données et les rendre disponibles à l'utilisateur.

Pour ce faire, il existe plusieurs méthodes, et j'en ai déjà exploré quelques-unes  dans ce blog: enregistrer un fichier "csv" sur une carte SD, ajouter une macro à votre tableur pour qu'il recueille les données par communication série, utiliser un service en ligne comme carriots, ou simplement utiliser le moniteur série et/ou le traceur série intégrés dans l'IDE Arduino...

Aujourd'hui, je procède autrement:  puisque la carte Arduino Leonardo peut se comporter comme un clavier USB, il est facile de la programmer pour qu'elle écrive les données dans un tableur.

Ce n'est probablement pas la façon la plus élégante de procéder; l'utilisateur devra prendre soin d'ouvrir un tableur (Excel, Google Sheets, Libre Office Calc), d'y sélectionner la cellule qui recevra la première donnée, et de conserver le logiciel à l'avant-plan pendant toute la durée de la mesure... Mais ça fonctionne, et ce n'est pas très difficile à réaliser.

Le circuit

Pour faire mes tests, j'ai fabriqué un capteur de température constitué d'une thermistance et d'une résistance.  Lorsque la température augmente, la thermistance devient moins résistive, ce qui a pour effet de diminuer la tension acheminée à l'entrée A0 de la carte Leonardo.

Évidemment, vous pouvez remplacer ce capteur par n'importe quel autre, peu importe qu'il soit analogique ou numérique (il peut même y en avoir plusieurs), en apportant des modifications mineures au sketch présenté plus bas.



Le sketch

Le bref programme présenté ci-dessous "tape au clavier" le temps écoulé depuis le démarrage de la carte (fonction"millis"), envoie le code ASCII de la touche "tab" pour passer à la cellule voisine de droite, écrit la valeur lu à l'entrée analogique A0, envoie le code ASCII de la touche "enter" pour descendre d'une ligne, puis attend 1 seconde avant de recommencer.

Prenez note d'une importante précaution qui nous permet d'interrompre au besoin la prise de données:  la routine s'effectue à la condition que la broche 2 de la carte soit au niveau logique haut (5 V).  Ainsi, lorsque vous désirez reprogrammer la carte, vous reliez la broche 2 à GND pour éviter que les mesures soient dactylographiées à l'intérieur de votre sketch!!!



Le résultat

Après avoir ouvert un tableur, vous sélectionnez  une de ces cellules, puis vous reliez la broche 2 à 5 V.  Les données s'écrivent sur deux colonnes: le temps dans la colonne de gauche, et la mesure de l'entrée A0 dans la colonne de droite.

Le graphique ci-dessous a été produit dans Google Sheets: j'ai tenu la thermistance entre mon pouce et mon index pour la réchauffer, puis je l'ai laissé reprendre sa température initiale.


Si vous voulez, vous pouvez préparer le tableur pour que les données soient présentées sous forme de graphique à mesure qu'elles sont prises.  Vous pouvez également effectuer les calculs nécessaires pour convertir les mesures (soit dans le sketch Arduino, soit dans le tableur).


Yves Pelletier   (TwitterFacebook)

Aucun commentaire:

Enregistrer un commentaire