Cette horloge temps réel basée sur Arduino est une horloge numérique pour afficher le temps réel à l'aide d'un RTC IC DS1307 qui fonctionne sur le protocole I2C. L'horloge en temps réel signifie qu'elle fonctionne même après une panne de courant. Lorsque l'alimentation est reconnectée, il affiche le temps réel indépendamment de l'heure et de la durée pendant laquelle il était hors tension. Dans ce projet de réveil Arduino, nous avons utilisé un module LCD 16x2 pour afficher l'heure au format "heure, minute, seconde, date, mois et année". Une option d'alarme est également ajoutée et nous pouvons configurer l'heure de l'alarme. Une fois l'heure d'alarme enregistrée dans l'EEPROM interne de l'arduino, elle reste enregistrée même après une réinitialisation ou une panne d'électricité. Les horloges en temps réel sont couramment utilisées dans nos ordinateurs, maisons, bureaux et appareils électroniques pour les maintenir à jour en temps réel.
Le protocole I2C est une méthode pour connecter deux appareils ou plus en utilisant deux fils à un seul système, et donc ce protocole est également appelé protocole à deux fils. Il peut être utilisé pour communiquer 127 appareils à un seul appareil ou processeur. La plupart des appareils I2C fonctionnent sur une fréquence de 100 kHz.
Etapes d'écriture des données maître vers esclave (mode de réception esclave)
- Envoie la condition START à l'esclave.
- Envoie l'adresse de l'esclave à l'esclave.
- Envoyer le bit d'écriture (0) à l'esclave.
- Bit ACK reçu de l'esclave
- Envoie l'adresse des mots à l'esclave.
- Bit ACK reçu de l'esclave
- Envoie les données à l'esclave.
- Reçu le bit ACK de l'esclave.
- Et le dernier envoie la condition STOP à l'esclave.
Étapes de lecture des données de l'esclave au maître (mode de transmission esclave)
- Envoie la condition START à l'esclave.
- Envoie l'adresse de l'esclave à l'esclave.
- Envoyer le bit de lecture (1) à l'esclave.
- Bit ACK reçu de l'esclave
- Données reçues de l'esclave
- Reçu le bit ACK de l'esclave.
- Envoie la condition STOP à l'esclave.
Pour construire cette horloge numérique basée sur IC RTC DS1307 , nous avons utilisé ici Arduino Pro Mini, mais vous pouvez également utiliser tout autre modèle Arduino tel que Arduino Uno ou Arduino Nano. Avec la carte Arduino, DS1307 RTC IC, nous avons utilisé un module LCD 16x2 pour afficher l'heure et la date, un oscillateur à cristal, un régulateur de tension 7805, un buzzer et quelques transistors et résistances.
Schéma de circuit et description
Dans ce circuit d'horloge numérique basé sur Arduino, nous avons utilisé trois composants principaux qui sont l'IC DS1307, la mini-carte Arduino Pro et le module LCD 16x2.
Ici, arduino est utilisé pour lire l'heure à partir de ds1307 et l'afficher sur un écran LCD 16x2. DS1307 envoie l'heure / la date en utilisant 2 lignes à arduino. Un buzzer est également utilisé pour l'indication d'alarme, qui émet un bip lorsque l'alarme est activée. Un schéma de principe est présenté ci-dessous pour comprendre le fonctionnement de cette horloge en temps réel.
Comme vous pouvez le voir dans le schéma de circuit, les broches SDA et SCL de la puce DS1307 sont connectées aux broches arduino SDA et SCL avec une résistance de rappel qui maintient la valeur par défaut HIGH aux lignes de données et d'horloge. Oscillateur à quartz 32.768KHz est relié à puce DS1307 pour générer exact délai de 1 seconde, et une batterie de 3 volts est également relié à la broche 3 rd (BAT) de DS1307 qui maintient durée de fonctionnement après une panne d'électricité. L'écran LCD 16x2 est connecté à arduino en mode 4 bits. Les broches de commande RS, RW et En sont directement connectées aux broches 2, GND et 3. d'arduino. Et la broche de données D0-D7 est connectée à 4, 5, 6, 7 d'arduino. Un buzzer est connecté à la broche Arduino numéro 13 via un transistor NPN BC547 ayant une résistance de 1 k à sa base.
Trois boutons à savoir set, INC et Next sont utilisés pour régler l'alarme sur les broches 12, 11 et 10 de l'arduino en mode bas actif. Lorsque nous appuyons sur set, le mode de réglage de l'alarme s'active et nous devons maintenant régler l'alarme en utilisant le bouton INC et le bouton Suivant est utilisé pour passer au chiffre. La configuration complète de la maquette de cette horloge en temps réel avec alarme est indiquée dans l'image ci-dessous. Vous pouvez également consulter un tutoriel détaillé sur le réveil numérique avec le microcontrôleur AVR.
Description du programme
Pour programmer cette horloge temps réel, nous avons utilisé quelques bibliothèques pour extraire l'heure / date du DS1307 et pour l'affichage sur LCD, qui sont données ci-dessous:
Et l'initialisation du RTC, de l'écran LCD et de la sortie d'entrée est effectuée dans la boucle de configuration.
Le reste des choses comme la lecture du temps, le réglage de l'alarme est effectué dans la section de boucle vide.