Taula de continguts:
- Pas 1: components necessaris
- Pas 2: connexió del rellotge Arduino
- Pas 3: Codi del rellotge Arduino amb RTC
Vídeo: Rellotge en temps real amb Arduino: 3 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
En aquest projecte, crearem un rellotge amb l’ajut del mòdul Arduino i RTC. Com sabem, l'Arduino no pot mostrar l'hora real, de manera que farem servir el mòdul RTC per mostrar l'hora adequada a la pantalla LCD. Llegiu atentament tot el pas, us ajudarà molt a fer el rellotge.
El codi Arduino DS3231 és com el codi DS1307 i funciona amb els dos xips RTC.
El codi Arduino que hi ha a sota no utilitza cap biblioteca per al DS3231 RTC, la biblioteca Wire serveix per a la correspondència entre l'Arduino i el DS3231 mitjançant la convenció I2C.
Sí! Molts enginyers electrònics en depenen per als seus projectes basats en el temps, però RTC no és completament fiable. Funciona amb bateria i s’ha de canviar aviat o després. Arribant a projectes IoT, ocupa valuosos pins SPI (Serial Peripheral Interface) i s’embolica amb cables enredats. Solució … Aquí arriba el nostre heroi NTP (Network time protocol). El NTP és tan precís ja que obté temps d’Internet. Operarem aquest protocol mitjançant un mode client-servidor. el procés és tan senzill que el nostre Nodemcu actua com a client i sol·licita un paquet NTP al servidor mitjançant UDP. A canvi, el servidor envia un paquet al client que analitza les dades. NTP és el protocol universal de sincronització horària. Ara il·luminem la nostra estació de treball dels laboratoris
Pas 1: components necessaris
- Taula Arduino
- Taula RTC DS3231
- Pantalla LCD de 16x2
- 2 x polsador
- Resistència variable (o potenciòmetre) de 10 K ohmis
- Resistència de 330 ohms
- Bateria mòbil de 3V
- Taula de pa
- Filferros de pont
Mocula RTC DS3231
El temps és un sentit essencial que es requereix en aquest trepidant món dels éssers humans. Projecte en temps real
Utilitzem RTC (A. K. A rellotge en temps real)
RTC Real-time-clock (RTC) és un circuit integrat (IC) que fa un seguiment de l’hora actual. RTC s’encarrega del temps en mode real. El RTC sol trobar-se a les plaques base dels ordinadors i als sistemes incrustats per requerir un accés oportú.
Pas 2: connexió del rellotge Arduino
- Connecteu el pin SCL al mòdul RTC a l'Arduino A5
- Connecteu el pin SDA al mòdul RTC a l'Arduino A4
- Connecteu VCC a 5v i GND a GND
- Connecteu un polsador al passador 8
- Connecteu un altre polsador al passador 9
- Connecteu RS de pantalla LCD al pin 2 d'Arduino
- Connecteu l'E de la pantalla LCD al pin 3 d'Arduino
- Connecteu D7 de la pantalla LCD al pin 7 d'Arduino
- Connecteu D6 de la pantalla LCD al pin 6 d'Arduino
- Connecteu D5 de la pantalla LCD al pin 5 d'Arduino
- Connecteu D4 de la pantalla LCD al pin 4 d'Arduino
- Connecteu VSS & K a GND
- Connecteu VDD & A al 5v
- Connecteu vo al pin de sortida del potenciòmetre
Pas 3: Codi del rellotge Arduino amb RTC
El DS3231 només funciona amb format BCD i per convertir el BCD en decimal i viceversa he utilitzat les 2 línies següents (exemple per minut): // Converteix BCD en decimalminut = (minut >> 4) * 10 + (minut i 0x0F);
// Converteix decimal a BCDminute = ((minut / 10) << 4) + (minut% 10); void DS3231_display (): mostra l'hora i el calendari, abans de mostrar l'hora i les dades del calendari es converteixen de BCD a format decimal. void blink_parameter ():
// Rellotge i calendari en temps real amb botons ajustats que fan servir DS3231 i Arduino // inclouen el codi de biblioteca LCD #include // inclouen el codi de biblioteca de filferro (necessari per a dispositius de protocol I2C) #include // Connexions del mòdul LCD (RS, E, D4, D5, D6, D7) LiquidCrystal lcd (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // el botó1 està connectat al pin 8 pinMode (9, INPUT_PULLUP); // el botó2 està connectat al pin 9 // configureu el nombre de columnes i files de la pantalla LCD lcd.begin (16, 2); Wire.begin (); // Uneix-te al bus i2c} char Time = "HORA:::"; char Calendar = "DATA: / / 20"; byte i, segon, minut, hora, data, mes, any; void DS3231_display () {// Converteix BCD en segon decimal = (segon >> 4) * 10 + (segon i 0x0F); minut = (minut >> 4) * 10 + (minut & 0x0F); hora = (hora >> 4) * 10 + (hora & 0x0F); data = (data >> 4) * 10 + (data & 0x0F); mes = (mes >> 4) * 10 + (mes i 0x0F); any = (any >> 4) * 10 + (any & 0x0F); // Temps de conversió final [12] = segon% 10 + 48; Temps [11] = segon / 10 + 48; Temps [9] = minut% 10 + 48; Temps [8] = minut / 10 + 48; Temps [6] = hora% 10 + 48; Temps [5] = hora / 10 + 48; Calendari [14] = any% 10 + 48; Calendari [13] = any / 10 + 48; Calendari [9] = mes% 10 + 48; Calendari [8] = mes / 10 + 48; Calendari [6] = data% 10 + 48; Calendari [5] = data / 10 + 48; lcd.setCursor (0, 0); lcd.print (Temps); // Temps de visualització lcd.setCursor (0, 1); lcd.print (calendari); // Mostra el calendari} void blink_parameter () {byte j = 0; while (j 23) // Si hores> 23 ==> hores = 0 paràmetre = 0; if (i == 1 && paràmetre> 59) // If minutes> 59 ==> minutes = 0 parameter = 0; if (i == 2 && paràmetre> 31) // If date> 31 ==> date = 1 parameter = 1; if (i == 3 && paràmetre> 12) // Si mes> 12 ==> mes = 1 paràmetre = 1; if (i == 4 && paràmetre> 99) // Si any> 99 ==> any = 0 paràmetre = 0; sprintf (text, "% 02u", paràmetre); lcd.setCursor (x, y); lcd.print (text); retard (200); // Espereu 200 ms} lcd.setCursor (x, y); lcd.print (""); // Mostra dos espais blink_parameter (); sprintf (text, "% 02u", paràmetre); lcd.setCursor (x, y); lcd.print (text); blink_parameter (); if (! digitalRead (8)) {// Si es prem el botó (pin # 8) i ++; // Increment "i" per al següent paràmetre de retorn; // Torna el valor del paràmetre i surt}}} void loop () {if (! DigitalRead (8)) {// Si es prem el botó (pin # 8) i = 0; hora = edició (5, 0, hora); minut = edició (8, 0, minut); data = edició (5, 1, data); mes = edició (8, 1, mes); any = edició (13, 1, any); // Converteix decimal a minut BCD = ((minut / 10) << 4) + (minut% 10); hora = ((hora / 10) << 4) + (hora% 10); data = ((data / 10) << 4) + (data% 10); mes = ((mes / 10) << 4) + (mes% 10); any = ((any / 10) << 4) + (any% 10); // Finalitzar la conversió // Escriure dades a DS3231 RTC Wire.beginTransmission (0x68); // Inicieu el protocol I2C amb l'adreça DS3231 Wire.write (0); // Enviar adreça de registre Wire.write (0); // Restableix les seccions i engega l'oscil·lador Wire.write (minut); // Escriu minut Wire.write (hora); // Escriu l’hora Wire.write (1); // Escriure dia (no s’utilitza) Wire.write (data); // Escriu la data Wire.write (mes); // Escriu mes Wire.write (any); // Escriure any Wire.endTransmission (); // Atureu la transmissió i deixeu anar el retard del bus I2C (200); // Espera 200 ms} Wire.beginTransmission (0x68); // Inicieu el protocol I2C amb l'adreça DS3231 Wire.write (0); // Enviar adreça de registre Wire.endTransmission (fals); // I2C reiniciar Wire.requestFrom (0x68, 7); // Sol·liciteu 7 bytes de DS3231 i deixeu anar el bus I2C al final de la lectura de segon = Wire.read (); // Llegir segons del registre 0 minut = Wire.read (); // Llegir minuts del registre 1 hora = Wire.read (); // Llegiu l’hora del registre 2 Wire.read (); // Dia de lectura del registre 3 (no utilitzat) data = Wire.read (); // Data de lectura del registre 4 mesos = Wire.read (); // Llegir el mes des del registre 5 anys = Wire.read (); // Llegiu l'any des del registre 6 DS3231_display (); // Temps de diaplay i retard del calendari (50); // Espera 50 ms}
Recomanat:
Ús de mòduls de rellotge en temps real DS1307 i DS3231 amb Arduino: 3 passos
Ús de mòduls de rellotge en temps real DS1307 i DS3231 amb Arduino: continuem rebent sol·licituds sobre com utilitzar mòduls de rellotge en temps real DS1307 i DS3231 amb Arduino de diverses fonts, de manera que aquest és el primer d’un tutorial de dues parts sobre com utilitzar-los. Per a aquest tutorial d'Arduino, tenim dos mòduls de rellotge en temps real
Rellotge RTC en temps real DS1307 amb Arduino: 4 passos
DS1307 Rellotge en temps real amb Arduino: en aquest tutorial, coneixerem el rellotge en temps real (RTC) i com Arduino & L’IC DS1307 de rellotge en temps real s’uneix com a dispositiu de sincronització. El rellotge en temps real (RTC) s’utilitza per controlar el temps i mantenir un calendari. Per utilitzar un RTC, w
Rellotge basat en Arduino mitjançant el mòdul Rellotge en temps real (RTC) DS1307 i 0,96: 5 passos
Rellotge basat en Arduino mitjançant el mòdul DS1307 de rellotge en temps real (RTC) i 0,96: Hola, nois en aquest tutorial, veurem com fer un rellotge de treball mitjançant un mòdul de rellotge en temps real DS1307 & Pantalles OLED, així que llegirem l’hora del mòdul de rellotge DS1307. I imprimiu-lo a la pantalla OLED
Fer un rellotge amb M5stick C mitjançant Arduino IDE - Rellotge RTC en temps real amb M5stack M5stick-C: 4 passos
Fer un rellotge amb M5stick C mitjançant Arduino IDE | Rellotge en temps real RTC amb M5stack M5stick-C: Hola, nois en aquest instructable, aprendrem a fer un rellotge amb la placa de desenvolupament m5stick-C de m5stack mitjançant Arduino IDE. Així, m5stick mostrarà data, hora i amp; setmana del mes a la pantalla
Com fer un rellotge en temps real amb la pantalla Arduino i TFT - Arduino Mega RTC amb pantalla TFT de 3,5 polzades: 4 passos
Com fer un rellotge en temps real amb pantalla Arduino i TFT | Arduino Mega RTC amb pantalla TFT de 3,5 polzades: visiteu el meu canal de Youtube. Introducció: - En aquest post vaig a fer "Rellotge en temps real" amb LCD TFT tàctil de 3,5 polzades, Arduino Mega Mòdul RTC 2560 i DS3231 … Abans de començar … comproveu el vídeo del meu canal de YouTube … Nota: - Si utilitzeu Arduin