J’ai mis le code source de mon capteur de CO2 (également enregistreur de données) sur GitHub. Un fichier que j’ai écrit en Python permet de récupérer les données et de tracer automatiquement la courbe du taux de CO2 en appuyant sur un seul bouton (sur GitHub également).
La température renvoyée par le capteur de CO2 SCD30 n’étant pas satisfaisante (trop élevée au bout d’un certain temps), j’ai décidé d’utiliser un banal capteur de température LM35CZ, fiable et très peu cher. Le convertisseur analogique / numérique 10 bits intégré à la carte Arduino numérise le signal analogique sur 1024 niveaux (de 0 à 1023), le 0 correspondant à 0 volt et le 1023 à 5 volts. Le pas entre deux niveaux successifs est donc de 5/1023 = 0,00489 V = 4,89 mV. Puisque le capteur LM35CZ fonctionne de manière linéaire (10 mV par °C), le pas entre deux niveaux successifs représente 4,89/10 = 0,489 °C. Nous pouvons gagner en résolution en amplifiant le signal d’origine de façon à utiliser toute la plage offerte par la carte Arduino (il faut faire attention à ne pas dépasser les 5 V). Le capteur LM35CZ est prévu pour fonctionner jusqu’à 110 °C. Tel que précédemment, nous atteignons une tension maximale de 110×10 = 1100 mV = 1,1 V. En amplifiant le signal d’origine 4,9 fois (voir schéma ci-dessous), nous améliorons la résolution à 0,489/4,9 = 0,10 °C entre deux niveaux successifs. La tension maximale à la sortie du capteur amplifié serait alors de 1,1×4,9 = 5,39 V, une tension supérieure aux 5 V à ne pas dépasser, mais comme il ne fera jamais plus de 102°, il n’y a pas de risques.
La carte SD est formatée en FAT 16 (voir cette page du site Arduino) :