Les projets Arduino peuvent varier considérablement, allant des gérants de brassage à la maison aux stations météo en passant par la domotique avancée. Souvent, vous voudrez enregistrer les données de ces projets. Dans ce tutoriel, je vais vous montrer comment intégrer une carte SD et un module d'horloge en temps réel dans un projet pour permettre l'enregistrement de données horodatées..
Téléchargez les bibliothèques Arduino suivantes à partir de leurs référentiels. Pour chaque bibliothèque, décompressez le dossier dans le répertoire. Arduino / bibliothèques dossier. Renommez chacun des dossiers pour être Dakota du Sud, RTCLib, et DHT respectivement. L'IDE Arduino ne peut pas gérer les tirets dans les noms de fichiers.
Les enregistreurs de données sont disponibles en tant qu'éléments discrets et leur coût peut varier de 35 USD à plusieurs centaines. Choisir le bon enregistreur est une décision importante dans le projet. Il serait extrêmement décevant de récupérer un projet d'observateur en eau profonde et de découvrir que les données de l'année dernière ont été corrompues..
Comme pour tous les projets, vous devez tenir compte de la consommation d'énergie, mais vous devez connaître plusieurs autres fonctionnalités lors de la sélection d'un enregistreur de données pour un projet particulier..
Peut-être que le projet va être dans des conditions difficiles. Les secousses physiques, les températures élevées, l'humidité et d'autres conditions affecteront le choix. Il existe des enregistreurs disponibles qui peuvent résister à différentes conditions. Assurez-vous de savoir où vivront votre projet et votre enregistreur et choisissez la bonne technologie..
Il existe des enregistreurs série qui parlent de n'importe quel protocole, I2C, RS232, CAN, SPI, etc. Le protocole d'interface affectera la rapidité avec laquelle les données du journal peuvent être écrites. Assurez-vous de sélectionner l'enregistreur qui convient à la technologie du projet et aux exigences de vitesse d'écriture.
Ce n'est pas bon si les données enregistrées ne peuvent pas être récupérées. C'est l'arbre proverbial qui tombe sans que personne ne l'entende. Assurez-vous de bien comprendre comment les données doivent être extraites de l'enregistreur que vous sélectionnez. Dans certains cas de puces IC de logger discrètes, vous devrez créer une interface externe que vous pourrez utiliser pour extraire les données de la puce..
Certains enregistreurs ne font que vider les données, tandis que d'autres ont des horodatages incroyablement précis pour les enregistrements de données. Comme vous vous en doutez, plus l'horodatage est précis, plus le prix est élevé. Si votre projet nécessite une journalisation très rapide dont l'horodatage est à la nanoseconde, il en exécutera un peu plus qu'un enregistreur qui n'a aucune idée de l'heure qu'il est..
C'est ce que vous voulez faire lorsque vous dépassez la fin du stockage. Les schémas varient de l'arrêt de la journalisation à l'écrasement des données les plus anciennes.
Assurez-vous d'évaluer combien de fois la mémoire de l'appareil peut être écrasée et quel est le plan quand il commence à tomber en panne. Si vous devez remplacer l'intégralité de l'enregistreur après 10 000 écrasements, la valeur dépendra du nombre d'écritures que vous prévoyez de faire par seconde..
Les avantages d'utiliser une carte SD pour la journalisation sont nombreux. C'est relativement peu coûteux. Vous pouvez choisir votre propre format de journalisation et indiquer si vous voulez ou non un horodatage. Le support est facilement remplaçable lorsqu'il est usé et peut être retiré rapidement et lu par n'importe quel ordinateur standard.
La journalisation sur carte SD présente également des inconvénients.
Ce n'est pas le meilleur environnement accidenté où l'humidité pourrait affecter les contacts. Il consomme également beaucoup de broches précieuses sur un micro-contrôleur. Entre l’horloge temps réel (RTC) et la carte SD, il utilise six broches de différents types..
J'ai choisi l'enregistreur de carte SD pour ce tutoriel en raison de la facilité et de la souplesse de travail avec la carte SD pour l'écriture et la lecture des journaux. Plus important encore, les compétences d'utilisation de la carte SD et d'un RTC seront utiles pour une variété d'autres projets..
Suivez les étapes ci-dessous pour assembler la planche à pain. Ce didacticiel utilise un simple capteur de température et d’humidité pour collecter des données d’enregistrement. Après avoir suivi les étapes, vous devriez avoir une maquette qui ressemble au schéma ci-dessous..
Enregistreur de données de carte SD terminéLa carte opto-isolée SD Card est livrée avec des en-têtes conviviaux, mais ils ne sont pas attachés. Une brève session de soudure résoudra le problème et vous permettra de placer la carte comme indiqué sur le schéma..
Placez la carte SD sur un ordinateur et vérifiez qu’elle est formatée avec un système de fichiers FAT32. Vous aurez peut-être besoin d'un adaptateur MicroSD vers carte SD standard. La carte SD dans la liste des composants est fournie avec un adaptateur. Insérez la carte SD avec précaution dans la carte de discussion.
La carte temps réel, ou RTC, est livrée en kit et nécessite un peu plus de soudure pour être assemblée. Tous les composants sont inclus dans le kit. Suivez les instructions étape par étape pour assembler la carte, y compris les en-têtes de trous traversants..
Assurez-vous d'insérer la batterie fournie dans le clip après l'assemblage. Il ne fonctionnera pas correctement sans la batterie en place. Le RTC ne tire de la batterie que lorsqu'il n'y a pas de tension principale, la batterie devrait donc durer des années.
De nombreux boîtiers de batterie, comme celui de la liste de pièces ci-dessus, sont livrés avec des fils conducteurs qui ne sont pas adaptés à la fabrication de cartes. Pour rendre la planche de connexion conviviale pour les fils, soudez un fil ou une broche de tête à la fin de chaque fil.
Les lecteurs de carte SD peuvent être achetés beaucoup moins chers que celui recommandé dans ce tutoriel. Le problème, cependant, est que les lecteurs de cartes SD utilisent une technologie de 3 volts, tandis que l’Arduino utilise un micro-contrôleur de 5 volts..
Cela signifie que pour utiliser en toute sécurité un lecteur de carte SD avec un Arduino, un convertisseur de niveau logique est nécessaire pour convertir les tensions entre les deux. Cela ajoute des coûts et de la complexité. Le lecteur spécifié dans la liste des pièces est peut-être un peu plus cher, mais il a plusieurs choses à faire..
Le lecteur utilise le protocole SPI pour communiquer. Les cartes Arduino sont fournies avec certaines broches conçues pour ce protocole. Bien qu'il soit possible d'utiliser des broches alternatives dans un pincement, vous obtiendrez les performances les plus rapides et les plus fiables en utilisant les broches dédiées au matériel..
Les broches indiquées dans l’image schématique sont précises pour un Arduino Uno ou Arduino Nano.
Une fois le matériel du projet assemblé, l'étape suivante consiste à le programmer. Téléchargez le zip fourni avec ce tutoriel ou depuis le référentiel github pour ce projet de journalisation de données.
datalogger.ino
dans l'IDE Arduinortc.adjust (DateTime (F (__ DATE__), F (__ TIME__)));
En mettant un //
au début de la ligne. La première fois que vous avez téléchargé le code, la date et l'heure du RTC sont définies en fonction de l'heure de la compilation. Mais vous ne voulez pas continuer à réinitialiser l'horloge pour compiler l'heure à chaque réinitialisation du conseil. Télécharger le code sans cela rtc.adjust
dans il laissera le temps d'horloge seul sur le prochain démarrageInitialisation de l’enregistreur de données avec RTC version 1.0 Démarrage du capteur de température et d’humidité Démarrage du lecteur SDCard et de la carte Ouverture du fichier journal pour écriture. Début de l'horloge en temps réel Unixtime: 1405787147 1405787148,2014 / 7/19 16: 25: 48,69.80,40.00 1405787151,2014 / 7/19 16: 25: 51,69.80,40,00 1405787155,2014 / 7/19 16:25: 55,69,80,40,00 1405787158,2014 / 7/19 16: 25: 58,69,80,40,00 1405787162,2014 / 7/19 16: 26: 02,69,80,40,00 1405787165,2014 / 7/19 16:26:05, 69.80,40.00
Le programme enregistreur de données combine les fonctions de la bibliothèque RTC, de la bibliothèque DHT et de la bibliothèque SD. En haut du programme, vous pouvez régler quelques options, telles que le nom du fichier de données et le type de DHT dont vous disposez..
Cependant, tous les paramètres par défaut devraient fonctionner correctement si vous avez utilisé les composants suggérés ci-dessus.
La boucle principale du programme simple fait trois choses.
logThis ()
fonction pour écrire sur la carteIl répète le processus tant qu'il y a du courant et de la place sur la carte SD.
le logThis ()
function prend une chaîne de caractères de données en tant qu'argument, obtient l'heure du RTC, la formate avec les données et l'écrit dans le fichier journal. Le nom du fichier journal est spécifié dans le #définir
section du programme. L'esquisse ouvre le fichier journal au démarrage de l'installation, de sorte que le consignateur de fichiers n'a pas à le rouvrir pour chaque entrée du journal. Le cryptique sprintf
La commande ci-dessous formate les données.
Si vous souhaitez modifier la manière dont les données sont enregistrées, assurez-vous de bien connaître la fonction sprintf et de pouvoir déplacer les éléments de formatage et de données. Si vous avez juste besoin de réorganiser les champs de date, vous pouvez simplement changer leur ordre entre les virgules et tout devrait bien fonctionner..
sprintf (message, "% ld,% d /% d /% d% 02d:% 02d:% 02d,% s", époque, Année, Mois, Jour, Heure, Minute, Seconde, logmessage);
Finalement, le dataFile.println (message)
La commande écrit la chaîne formatée dans le fichier. La fonction se comporte comme le Serial.println
commander.
Le système de fichiers FAT32 qui se trouve sur la carte SD présente certaines limitations qu'il est intéressant de connaître. Le nom du fichier doit également être au format 8.3. Le fichier le plus volumineux qu'il puisse contenir est un fichier de 2 Go. Il ne peut contenir que 268 173 300 fichiers. Espérons que vous pourrez vivre avec ces contraintes un peu.
Les fonctions maintenant.année ()
et les amis effectuent le travail nécessaire pour lire les éléments de temps actuels (époque unix, année, mois, jour, heure, minute, seconde) à partir du tableau RTC et renvoient la valeur.
La bonne chose à propos des horloges en temps réel est qu'elles gardent l'heure bien sûr. Bien que le code et le projet puissent faire d’autres choses importantes, comme s’assurer que votre bière est en train de fermenter à la bonne température, il ne fait que garder le temps. Même si votre projet perd de la puissance, il continue à fonctionner avec une batterie indépendante.
Tout ce que vous avez à faire est de le demander et il vous indiquera l'heure qu'il est. Ceci est bien sûr parfait pour enregistrer des données. Le composant spécifié dans la liste de pièces est un chronomètre acceptable, mais les spécifications indiquent qu'il peut gagner jusqu'à deux secondes par jour..
Si cela vous empêche de rester éveillé toute la nuit, consultez alors le ChronoDot sophistiqué pour une précision accrue avec le même protocole. Il est totalement interchangeable avec le RTC dans ce projet pour quelques dollars de plus et il est livré entièrement assemblé.
Vous avez construit le projet, l'avez programmé (deux fois) et avez tout lu sur la théorie de fonctionnement ci-dessus. Il est temps d'essayer.
datalog.txt
Vous devriez voir quelque chose comme ce qui suit.
1405787012,2014 / 7/19 16: 23: 32,69.80,40.00 1405787015,2014 / 7/19 16: 23: 35,69.80,40.00 1405787019,2014 / 7/19 16: 23: 39,69,80,40,00 1405787022, 2014/7/19 16: 23: 42,69.80,40.00 1405787026,2014 / 7/19 16: 23: 46,69,80,40,00 1405787029,2014 / 7/19 16: 23: 49,69,80,40,00 1405787053,2014 / 7/19 16: 24: 13,69.80,40.00
Dans ce tutoriel, je vous ai montré comment intégrer une carte SD et un module d'horloge en temps réel dans votre projet. Avec l'exemple de code, vous pouvez enregistrer des données pendant une période prolongée, qui peuvent être copiées rapidement et facilement sur un ordinateur..
Une fois ce projet terminé, vous pouvez essayer d’y apporter quelques modifications ou mises à niveau. Essayez de mettre à niveau la puce de temps pour des horodatages plus précis. Le programme inclus écrit simplement dans le même fichier encore et encore jusqu'à ce qu'il soit plein. Vous pouvez essayer de créer un schéma de rotation de fichier basé sur la date pour faire pivoter les fichiers une fois par semaine..
Je n'ai même pas mentionné le câble de détection de carte du lecteur qui vous permettra de modifier le schéma et la carte pour tester la présence d'une carte avant toute opération de lecture ou d'écriture. Bonne chance et amusez-vous à expérimenter.