Comment et pourquoi ajouter une horloge en temps réel à Arduino

Comment et pourquoi ajouter une horloge en temps réel à Arduino

Garder le temps sur les projets Arduino n'est pas aussi facile qu'on pourrait le penser : une fois que la connexion à l'ordinateur n'est pas là, votre Arduino non alimenté s'arrête tout simplement de fonctionner, y compris son ticker interne.





comment redémarrer un macbook air

Afin de garder votre Arduino synchronisé avec le monde qui l'entoure, vous aurez besoin de ce qu'on appelle un 'module d'horloge en temps réel'. Voici comment en utiliser un.





A quoi sert une horloge temps réel (RTC) ?

Votre ordinateur synchronise très probablement son heure avec Internet, mais il a toujours une horloge interne qui continue de fonctionner même sans connexion Internet ou si l'alimentation est coupée. Lorsque vous utilisez un Arduino branché sur un ordinateur, il a accès à l'heure précise fournie par votre horloge système. C'est assez utile, mais la plupart des projets Arduino sont conçus pour être utilisés loin d'un ordinateur - à quel moment, chaque fois que l'alimentation est débranchée ou que l'Arduino redémarre, il n'aura absolument aucune idée de l'heure qu'il est. L'horloge interne sera réinitialisée et recommencera à compter à partir de zéro la prochaine fois qu'elle sera mise sous tension.





Si votre projet a quelque chose à voir avec le besoin de temps - comme ma veilleuse et mon réveil au lever du soleil - cela va clairement être un problème. Dans ce projet, nous avons contourné le problème en réglant manuellement l'heure chaque nuit d'une manière plutôt grossière - l'utilisateur appuyait sur le bouton de réinitialisation juste avant d'aller se coucher, fournissant une synchronisation manuelle de l'heure. Ce n'est clairement pas une solution idéale à long terme.

Un module RTC est un circuit supplémentaire, nécessitant une petite pile bouton, qui continue à compter le temps même lorsque votre Arduino est éteint. Après avoir été réglé une fois, il conservera cette durée pendant toute la durée de vie de la batterie, généralement une bonne année.



TinyRTC

Le RTC le plus populaire pour Arduino s'appelle TinyRTC et peut être acheté pour environ 5 à 10 $ sur eBay. Vous devrez probablement fournir votre propre batterie (il est illégal de les expédier à l'étranger dans de nombreux endroits) et quelques en-têtes (les broches qui s'insèrent dans les trous, que vous devrez souder vous-même).

Voici le module que j'ai :





Il a même un capteur de température intégré, bien que la batterie dure plus longtemps si vous ne l'utilisez pas.

Le nombre de trous sur cette chose semble assez effrayant, mais vous n'en avez besoin que de quatre ; GND, VCC, SCL et SDA - vous pouvez utiliser les broches correspondantes de chaque côté du module RTC. Vous parlez à l'horloge en utilisant Protocole I2C , ce qui signifie que seules deux broches sont utilisées - une pour 'l'horloge' (une horloge de données de communication série, rien à voir avec le temps) et une pour les données. En fait, vous pouvez même chaîner jusqu'à 121 appareils I2C sur les deux mêmes broches - consultez cette page Adafruit pour une sélection d'autres appareils I2C que vous pourriez ajouter, car il y en a beaucoup !





Commencer

Branchez votre module TinyRTC selon le schéma ci-dessous - la ligne DS rose n'est pas nécessaire, car c'est pour le capteur de température.

Ensuite, téléchargez le Temps et DS1307RTC bibliothèques et placez les dossiers résultants dans votre /bibliothèques dossier.

Quittez et relancez l'environnement Arduino pour charger dans les bibliothèques et exemples.

Vous trouverez deux exemples dans le menu DS1307RTC : téléchargez et exécutez le Régler le temps exemple d'abord - cela réglera le RTC à l'heure correcte. Le code réel ne vaut pas la peine d'être détaillé, sachez simplement que vous devez l'exécuter une fois pour effectuer la synchronisation initiale de l'heure.

Ensuite, regardez l'exemple d'utilisation avec LireTest .

le lecteur externe windows 10 ne s'affiche pas

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

Notez que nous avons également inclus le noyau Fil.h bibliothèque - cela vient avec Arduino et est utilisé pour communiquer sur I2C. Téléchargez le code, ouvrez la console série à 9600 bauds et regardez et votre Arduino affiche l'heure actuelle toutes les secondes. Merveilleux!

Le code le plus important dans l'exemple est la création d'un tmElements_t tm - c'est un structure que nous remplirons avec l'heure actuelle ; et le RTC.read(tm) fonction, qui obtient l'heure actuelle du module RTC, la met dans notre tm structure, et renvoie true si tout s'est bien passé. Ajoutez votre code de débogage ou votre code logique à l'intérieur de cette instruction 'if', par exemple en affichant l'heure ou en y réagissant.

comment changer le répertoire de l'invite de commande

Maintenant que vous savez comment obtenir la bonne heure avec Arduino, vous pouvez essayer de réécrire le projet d'alarme de lever de soleil ou de créer une horloge de mots à LED - les possibilités sont infinies ! Qu'allez-vous faire ?

Crédits image : Snootlab Via Flickr

Partager Partager Tweeter E-mail Comment changer l'apparence de votre bureau Windows 10

Vous voulez savoir comment améliorer l'apparence de Windows 10 ? Utilisez ces personnalisations simples pour vous approprier Windows 10.

Lire la suite
Rubriques connexes
  • DIY
  • Arduino
A propos de l'auteur James Bruce(707 articles publiés)

James a un BSc en Intelligence Artificielle et est certifié CompTIA A+ et Network+. Lorsqu'il n'est pas occupé en tant qu'éditeur de revues de matériel, il aime les jeux LEGO, la réalité virtuelle et les jeux de société. Avant de rejoindre MakeUseOf, il était technicien en éclairage, professeur d'anglais et ingénieur en centre de données.

Plus de James Bruce

Abonnez-vous à notre newsletter

Rejoignez notre newsletter pour des conseils techniques, des critiques, des ebooks gratuits et des offres exclusives !

Cliquez ici pour vous abonner
Catégorie Diy