Dans les circuits de synchronisation mondiale électronique modernes, sont très importants. Il en va de même pour Arduino, Arduino a une horloge de minuterie intégrée qui compte à environ 49 jours mais après cela, il réinitialise. Deuxièmement, l'horloge interne Arduino n'est pas précise à 100%; Il y a toujours un certain pourcentage de retard de temps entre l'horloge Arduino et une horloge externe. Donc, si l'on veut créer une horloge précise en utilisant Arduino, nous devons compter sur un module externe appelé RTC (horloge en temps réel). Voyons comment interfacer ce module RTC avec Arduino et créer une horloge numérique précise.
Module RTC avec Arduino
Parfois, travailler sur des projets Arduino a besoin d'une horloge de temps précise pour faire fonctionner Arduino et exécuter des instructions et des commandes spéciales sur une période spécifique. Arduino a une horloge intégrée, mais nous ne pouvons pas compter sur elle à cause des deux raisons suivantes:
Compte tenu des raisons susmentionnées, les utilisateurs préfèrent utiliser une horloge matérielle externe ou un module RTC. Ainsi, un module très bon marché et super précis largement utilisé est DS1307. Voyons comment connecter ce RTC à Arduino.
Configuration de la bibliothèque Arduino du module RTC
Pour interfacer Arduino avec le module RTC, nous devons installer certaines bibliothèques nécessaires qui peuvent lire les données du module RTC. Suivez les étapes pour installer les bibliothèques RTC:
Module DS1307 RTC
Le module DS1307 RTC est basé sur la petite puce d'horloge DS1307 qui prend également en charge le protocole de communication I2C. À l'arrière du module RTC, nous avons une batterie de cellules au lithium. Ce module peut donner des informations précises sur les secondes, les minutes, les heures, le jour, la date, le mois et l'année. Il a également la capacité d'ajustement en temps automatique pendant 31 jours par mois, ainsi que le support d'erreur de l'année du leap. L'horloge peut fonctionner dans un temps d'horloge de 12 heures ou 24 heures sur 24.
Quelques points forts principaux de ce module RTC:
Pinout du module RTC
Nom de broche | Description |
SCL | Pin d'entrée d'horloge pour l'interface de communication I2C |
SDA | Sortie d'entrée de données pour la communication série I2C |
VCC | POWER PIN varie de 3.3V à 5V |
GND | Broche |
Ds | Utilisation de l'entrée du capteur de température |
SQW | Cette broche peut générer quatre vagues carrées avec une fréquence 1Hz, 4KHz, 8 kHz ou 32 kHz |
CHAUVE SOURIS | Pin pour la batterie de la batterie si l'alimentation principale interrompue |
Schéma
Connectez la carte Arduino avec le module RTC comme indiqué dans le diagramme ci-dessous. Ici, les broches A4 et A5 d'Arduino seront utilisées pour la communication I2C avec les modules RTC tandis que les broches 5V et GND donneront la puissance requise au module RTC.
DS 1307 RTC Pin | Épingle arduino |
Vin | 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
Code
#inclure
#inclure
Rtc_ds3231 real_time_clock;
Temps de charbon [32]; / * Le tableau char est défini * /
void setup()
En série.commencer (9600); / * La communication série commence * /
Fil.commencer(); / * Fichier de bibliothèque pour commencer la communication * /
Real_time_clock.commencer();
Real_time_clock.ajuster (datetime (f (__ date __), f (__ time__)));
/ * real_time_clock.ajuster (DateTime (2022, 09, 26, 1, 58, 0)) * /
VOID LOOP ()
DateTime Now = Real_time_clock.maintenant();
sprintf (temps, "% 02d:% 02d:% 02d% 02d /% 02d /% 02d", maintenant.heure (), maintenant.minute (), maintenant.deuxième (), maintenant.day (), maintenant.mois (), maintenant.année());
En série.print (f ("date / heure:")); / * Cela imprimera la date et l'heure * /
En série.println (temps);
retard (1000); / * Retard de 1 sec * /
Au début du code d'abord, nous avons inclus fil.H & Rtclib pour la communication avec les appareils. Nous avons ensuite créé un objet RTCLIB avec le nom Real_time_clock. Ensuite, nous avons défini un tableau char temps de la longueur 32, qui stockera les informations de date et d'heure.
Dans la fonction de configuration et de boucle, nous avons utilisé la commande suivante pour nous assurer que la communication I2C est établie entre les modules Arduino et RTC.
Fil.commencer et Real_time_clock.commencer assurera et vérifiera la connexion RTC.
ajuster() est une fonction surchargée qui définit la date et l'heure.
DateTime (F (__ Date__), F (__ Time__))
Cette fonction définira la date et l'heure à laquelle Sketch a été compilé.
Le maintenant() Fonctions Retour Date et heure, et sa valeur se stockera en variable "temps".
Heure, minute, deuxième, jour, mois, année, l'année calculera la date exacte et l'imprimera sur le moniteur en série avec un délai de 1 seconde.
Matériel
Sortir
Serial Monitor commencera à imprimer l'heure et la date à laquelle le code est téléchargé à la carte Arduino.
Conclusion
Arduino lui-même a des fonctions liées au temps comme Millis (), Micros (). Cependant, ces fonctions ne donnent pas de temps exact; Il y a toujours une chance de retard de quelques millisecondes. Pour éviter cela pendant l'utilisation de modules externes Arduino RTC sont utilisés. Ces modules tels que DS1307 nous donnent du temps exact avec une sauvegarde de batterie qui peut durer pendant de nombreuses années. Ce guide couvre comment interfacer ces modules RTC avec une carte Arduino.