Com i per què afegir un rellotge en temps real a Arduino

Com i per què afegir un rellotge en temps real a Arduino

Mantenir temps en els projectes d’Arduino no és tan fàcil com es podria pensar: un cop no hi hagi connexió a l’ordinador, el vostre Arduino sense alimentació simplement deixa d’executar-se, inclòs el seu ticker intern.





els serveis de Google Play nox s’han aturat

Per mantenir l'Arduino sincronitzat amb el món que l'envolta, necessitareu el que s'anomena 'mòdul de rellotge en temps real'. A continuació s’explica com utilitzar-ne un.





Quin sentit té un rellotge en temps real (RTC)?

És probable que l’ordinador sincronitzi el seu temps amb Internet, però continua tenint un rellotge intern que continua funcionant fins i tot sense connexió a Internet o si l’aparell està apagat. Quan feu servir un Arduino connectat a un ordinador, té accés a l’hora exacta que proporciona el rellotge del sistema. Això és bastant útil, però la majoria dels projectes Arduino estan dissenyats per utilitzar-se fora de l’ordinador; en aquest moment, cada vegada que es desconnecta l’alimentació o es reinicia l’Arduino, no tindrà ni idea de quina hora és. El rellotge intern es restablirà i començarà a comptar de zero la propera vegada que s’engegui.





Si el vostre projecte té alguna cosa a veure amb la necessitat de l’hora, com ara la meva nit i el despertador de la sortida del sol, clarament serà un problema. En aquest projecte, vam solucionar el problema configurant manualment l’hora cada nit d’una manera bastant grollera: l’usuari premia el botó de reinicialització just abans d’anar a dormir, proporcionant una sincronització manual de l’hora. És evident que no és una solució ideal per a molt de temps.

Un mòdul RTC és un circuit addicional que requereix una petita bateria de cèl·lula de moneda, que continua comptant el temps fins i tot quan el vostre Arduino està apagat. Després de configurar-lo una vegada, es mantindrà aquest temps durant la vida útil de la bateria, normalment un bon any més o menys.



TinyRTC

El RTC més popular d'Arduino es diu TinyRTC i es pot comprar entre 5 i 10 dòlars a eBay. Probablement haureu de subministrar la vostra pròpia bateria (és il·legal enviar-les a l’estranger a molts llocs) i algunes capçaleres (els passadors que s’introdueixen als forats, que haureu de soldar a vosaltres mateixos).

Aquest és el mòdul que tinc:





Fins i tot té un sensor de temperatura incorporat, tot i que la bateria durarà més si no l’utilitzeu.

El nombre de forats que hi ha en aquesta cosa sembla força aterrador, però només en necessiteu quatre; GND, VCC, SCL i SDA: podeu utilitzar els pins corresponents a banda i banda del mòdul RTC. Parleu amb el rellotge Protocol I2C , el que significa que només s'utilitzen dos pins: un per al 'rellotge' (un rellotge de dades de comunicacions en sèrie, res a veure amb el temps) i un per a les dades. De fet, fins i tot podeu encadenar fins a 121 dispositius I2C als mateixos dos pins aquesta pàgina d'Adafruit per a una selecció d'altres dispositius I2C que podeu afegir, perquè n'hi ha molts!





Començant

Connecteu el mòdul TinyRTC segons el diagrama següent: no cal la línia DS de color rosa, ja que és el sensor de temperatura.

A continuació, descarregueu el fitxer Temps i DS1307RTC i col·loqueu les carpetes resultants al vostre fitxer / biblioteques carpeta.

Sortiu i reinicieu l'entorn Arduino per carregar-lo a les biblioteques i exemples.

Trobareu dos exemples al menú DS1307RTC: pengeu i executeu el fitxer SetTime primer exemple: això establirà el RTC a l'hora correcta. No val la pena aprofundir en el codi real, només cal saber que cal executar-lo una vegada per realitzar la sincronització horària inicial.

A continuació, mireu l’exemple d’ús amb ReadTest .

com activar les notificacions de youtube

#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);
}

Tingueu en compte que també hem inclòs el nucli Wire.h biblioteca: ve amb Arduino i s’utilitza per comunicar-se per I2C. Pengeu el codi, obriu la consola sèrie a 9600 baud i observeu i el vostre Arduino emet l’hora actual cada segon. Meravellós!

El codi més important de l’exemple és crear un fitxer tmElements_t tm - aquesta a estructura que omplirem amb l'hora actual; i la RTC.read (tm) , que obté l'hora actual del mòdul RTC, la posa al nostre tm estructura i torna cert si tot va bé. Afegiu la vostra depuració o codi lògic dins de la sentència 'if', com ara imprimir l'hora o reaccionar-hi.

com editar fitxers d'àudio al Mac

Ara que ja sabeu com obtenir el moment adequat amb Arduino, podeu provar de reescriure el projecte d'alarma de sortida del sol o crear un rellotge de paraules LED: les possibilitats són infinites. Què faràs?

Crèdits de la imatge: Snootlab Via Flickr

Compartir Compartir Tweet Correu electrònic Com canviar l’aspecte i l’aspecte de l’escriptori Windows 10

Voleu saber com fer que Windows 10 es vegi millor? Utilitzeu aquestes senzilles personalitzacions per fer que Windows 10 sigui vostre.

Llegiu a continuació
Temes relacionats
  • Bricolatge
  • Arduino
Sobre l'autor James Bruce(707 articles publicats)

James té un BSc en Intel·ligència Artificial i està certificat CompTIA A + i Network +. Quan no està ocupat com a editor de ressenyes de maquinari, li agrada LEGO, VR i els jocs de taula. Abans d’incorporar-se a MakeUseOf, era tècnic d’il·luminació, professor d’anglès i enginyer de centres de dades.

Més de James Bruce

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us