Bibliothèque Arduino pour vérifier la date et la température du DS3231 intégré via I2C

Bibliothèque Arduino pour vérifier la date et la température du DS3231 intégré via I2C

Bibliothèque Arduino pour vérifier la date et la température du DS3231 intégré via I2C

MISE À JOUR : Visitez également le nouveau bibliothèque pour gérer la date et l'heure avec le module RTC DS3231 et Arduino avec des améliorations telles que l'heure saisonnière.

Le fonctionnement du IC de horloges en temps réel (RTC) les plus populaires qui sont contrôlés à l'aide du autobus je2C C'est généralement très similaire. D'ailleurs, le Bibliothèque de fils de Arduino simplifie grandement les communications avec les appareils Interface série à deux fils (TWI), I2C, spécifique.

Table des matières

    D'une manière générale, le processus consiste à

    1. Initier les communications en tant qu'esclave ou maître (défini par défaut) avec la fonction Wire.begin (adresse). Si « adresse » est omis, les communications commencent par le C le professeur de autobus je2C.

    2. Activer la communication I2C avec l'appareil via l'adresse mémoire où il se trouve, en utilisant la commande Wire.beginTransmission (adresse).

    3. Écrivez une commande dans le autobus je2C pour indiquer à l'appareil l'opération que vous souhaitez qu'il effectue, en utilisant Wire.write (commande), dans lequel « ordre » est le code d'opération.

    4. Désactivez les communications pour libérer le autobus je2C avec fonction Wire.endTransmission().

    5. Demander à l'appareil d'envoyer une certaine quantité de données correspondant à l'opération demandée (dans ce cas, la date et l'heure) avec la fonction Wire.requestFrom (adresse, montant).

    6. Attendez que les données demandées avec la fonction soient disponibles pour la lecture Fil disponible (), qui renvoie le nombre de données déjà reçues et pouvant être lues.

    7. Lire les données envoyées par l'appareil (le horloge en temps réel, dans ce cas) en utilisant la fonction Fil.read() autant de fois que d'octets indiqués Fil disponible () qui sont disponibles.

    8. Normalement, les données sont envoyées dans des formats très compacts, il est donc très probable qu'il soit nécessaire d'interpréter les données reçues d'une manière qui correspond à la représentation des données faite dans le programme qui utilise l'appareil.

    Concernant le DS3231 (et les compatibles de la même série, comme le DS3232) et l'interprétation des données, selon les spécifications de l'intégré, par exemple, les valeurs des différents chiffres qui représentent l'heure sont représentées dans décimal codé binaire (BCD) qui sera plus pratique à exprimer sous forme décimale (un octet) à utiliser dans Arduino

    Sur la même ligne, la température est exprimée en octet dans complément à deux pour la partie entière et deux bits pour le pas, avec une résolution d'un quart de degré, de la partie décimale. Ces aspects et d’autres de la représentation des données sur l’horloge ont été discutés de manière exhaustive dans le code de bibliothèque ci-dessous. DS3231

    Pour vérifier la température avec cette bibliothèque, utilisez simplement la méthode read_temperature() objet DS3231 instancié au début. Pour lire la date et l'heure, elles sont d'abord chargées puis demandées dans l'un des formats (compact, humain...) disponibles pour différents usages, documentés dans le document d'en-tête de la bibliothèque de codes ci-dessous.

    Ce qui suit est un exemple de code pour montrer comment utiliser la bibliothèque. Comme mentionné ci-dessus, la température se lit simplement avec la fonction read_temperature() de l'objet de classe DS3231 mais, pour ignorer les erreurs de lecture, on utilise deux constantes qui stockent respectivement la température maximale et minimale de l'appareil selon la fiche technique et qui sont lues avec les fonctions correspondantes.

    La lecture de la température s'effectue en deux étapes : d'abord la valeur est chargée, de manière à ce que les différentes utilisations de la date ou de l'heure soient cohérentes (elles n'afficheront pas une valeur plus élevée dans des cas défavorables) et deuxièmement elle est utilisée selon le format que est nécessaire. Le programme exemple (qui n'est pas très pratique, bien qu'il explique toutes les possibilités) montre tous les formats disponibles

    • La fonction date_time_value() qui renvoie un pointeur vers un tableau carboniser (octets) contenant les sept valeurs numériques qui représentent la date et l'heure sur une horloge DS3231 convertis en décimal (ils sont en BCD sur l'appareil)

    • Utilisation de la fonction numéro_jour_semaine() On obtient une valeur qui correspond au numéro du jour de la semaine commençant le dimanche. Pour l'afficher sous forme de texte, un tableau est utilisé et un est soustrait pour commencer à l'index zéro, dimanche.

    • Pour consulter la date au format "local" (espagnol), utilisez la fonction date_humaine(), qui renvoie un pointeur vers une chaîne dans laquelle la date est représentée au format JJ/MM/AAAA, où JJ est le jour représenté avec 2 chiffres, MM est le mois avec 2 chiffres et AAAA est l'année avec 4 chiffres.

    • La fonction heure_humaine() renvoie l'heure au format hh:mm:ss, hh étant l'heure (au format 24) représentée avec 2 chiffres, mm étant les minutes avec 2 chiffres et ss étant les secondes avec 2 chiffres.

    • Pour utiliser facilement la date et l'heure sur fichiers journaux la fonction a été programmée compact_date_time(), qui délivre la valeur de la date et de l'heure au format AAMMJJhhmmss avec AA étant l'année représentée avec les 2 derniers chiffres, MM le mois avec 2 chiffres, DD le jour avec 2 chiffres, hh l'heure (au format 24) avec 2 chiffres, mm les minutes avec 2 chiffres et ss les secondes avec 2 chiffres. Ce format, même s'il s'agit de texte, prend peu de place et permet un classement alphabétique très simple.

    • La fonction date_heure_MySQL() sert à présenter la date et l'heure dans le format utilisé par le gestionnaire de base de données MySQL (ou le nouveau et plus libre MariaDB) AAAA-MM-JJ hh:mm:ss, où AAAA est l'année représentée avec 4 chiffres, MM est le mois avec 2 chiffres, JJ est le jour avec 2 chiffres, hh est l'heure (au format 24) avec 2 chiffres , mm correspond aux minutes à 2 chiffres et aux secondes à 2 chiffres.

    Bien qu'il existe de nombreux formats pour représenter la date et l'heure, celui dont vous avez besoin n'est peut-être pas là, mais sûrement basé sur l'un de ceux existants et en l'utilisant comme exemple, il sera facile d'ajouter une nouvelle méthode selon d'autres spécifications. S'il vous plaît, si vous ajoutez de nouvelles fonctions, partagez le code (libérez-le !) et expliquez-nous comment il fonctionne, afin que nous puissions améliorer la bibliothèque petit à petit. Merci !

    Le résultat de l'exemple de programme ci-dessus pourrait ressembler à ce qui est montré dans l'image suivante : une liste de 7 valeurs (secondes, minutes, heure, jour de la semaine, jour du mois, mois et année), la date et l'heure exprimée de manière "humaine" (selon le style espagnol) l'heure sous forme de nombre entier au format horloge à quatre chiffres, la date et l'heure au format base de données MySQL, date et heure au format compact (pour journaux) et la température interne du DS3231.

    Bibliothèque de sortie de la console Arduino, horloge en temps réel (RTC) et température DS3231 via le bus I2C

    Poster un commentaire

    Vous avez peut-être manqué