Mise à jour (31 octobre 2016): voici une version plus récente dans laquelle j'utilise un "data logging shield" plutôt que des composants individuels.
Voici un projet classique qui montre de façon éloquente l'efficacité de l'Arduino pour la conception de systèmes de mesures scientifiques: un "data logger".
Dans ce projet, l'Arduino consigne à toutes les minutes, sur une carte SD, les valeurs de température et de luminosité mesurées par des capteurs appropriés.
En plus d'un Arduino Uno, j'ai donc utilisé un lecteur de cartes SD muni d'un adapteur lui permettant de recevoir les signaux de 5 V, un capteur de température numérique DS18B20, une photorésistance et une horloge temps réel (RTC).
Tous ces périphériques étaient déjà prêts à l'emploi, puisqu'ils ont déjà été utilisés dans des articles précédents (que vous pouvez consulter en cliquant les liens du paragraphe précédent).

Les branchements des différents périphériques à l'Arduino sont les suivants:
Le lecteur de cartes SD occupe les pins 10, 11, 12, 13 de l'Arduino (SPI). Mais prenez garde d'abaisser à 3,3 V les signaux qui doivent l'être (plus d'informations à ce sujet ici).
L'horloge RTC est branchées aux pins A4 et A5 (i2c) de l'Arduino (plus d'infos ici).
Le thermomètre DS18B20 est branché à la pin 7 de l'Arduino (plus d'infos ici).
La sonde à base de photorésistance est branchées à la pin A0 de l'Arduino.
Les données sont enregistrées sur la carte SD sous la forme d'un fichier CSV: "comma-separated value". Il s'agit d'un fichier texte destiné à être ouvert dans un tableur comme Excel. Dans mon sketch, j'ai choisi de respecter la convention adoptée par la version française d'Excel: les valeurs d'une même ligne sont séparées par des points virgules (plutôt que par des virgules). De plus, je remplace le point décimal de la température par une virgule.

Tel que prévu, les fichier CSV enregistré sur la carte SD s'ouvre facilement dans Excel, et on peut alors effectuer des calculs sur les données, les mettre en graphique, etc.

Il serait utile d'ajouter un dispositif permettant de s'assurer que tout fonctionne correctement pendant que l'Arduino n'est pas branché à un ordinateur. Car ça doit être un peu frustrant de mettre en place le système pour une série de mesures d'une durée de plusieurs jours, pour ensuite se rendre compte que la carte SD a refusé de s'initialiser au départ. Ça pourrait être une simple LED qui s'allume en cas d'erreur, ou un afficheur LCD indiquant la dernière valeur mesurée, etc.
Notez qu'Adafruit fabrique un "Data Logging Shield" spécialement conçu pour ce genre d'exercice: puisque le shield contient déjà un lecteur de carte SD et une horloge RTC, il ne reste plus qu'à brancher les capteurs désirés.
Yves Pelletier (Twitter: @ElectroAmateur)
Bonjour,
RépondreSupprimerMerci pour cet article fort intéressant.
Serait-il possible de générer un fichier par jour, fichier qui porterait le nom du jour ?
J'ai un projet similaire mais pour le moment je ne sais que copier ce que font les autres et quand ça veut bien fonctionner !
'class DateTime' has no member named 'get'
RépondreSupprimerquand j'essayes sur arduino 1.6.5 ?
a la ligne Serial.print(now.get()-tempsInitial); // nombre de secondes depuis le début du sketch