Sommario:
- Passaggio 1: componenti richiesti
- Passaggio 2: connessione dell'orologio Arduino
- Passaggio 3: codice per Arduino Clock con RTC
Video: Orologio in tempo reale con Arduino: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
In questo progetto, realizzeremo un orologio con l'aiuto del modulo Arduino e RTC. Come sappiamo, Arduino non può visualizzare l'ora effettiva, quindi utilizzeremo il modulo RTC per visualizzare l'ora corretta sul display LCD. Leggi attentamente tutti i passaggi ti aiuterà molto a far funzionare l'orologio.
Il codice Arduino DS3231 è come il codice DS1307 e funziona con entrambi i chip RTC.
Il codice Arduino sottostante non utilizza alcuna libreria per DS3231 RTC, la libreria Wire è per la corrispondenza tra Arduino e DS3231 utilizzando la convenzione I2C.
Sì! Molti ingegneri elettronici dipendono da esso per i loro progetti basati sul tempo, ma RTC non è completamente affidabile. Funziona a batteria e deve essere sostituito prima o poi. Venendo ai progetti IoT, occupa preziosi pin SPI (Serial Peripheral Interface) e diventa disordinato con fili aggrovigliati. Soluzione…. Ecco che arriva il nostro eroe NTP (Network time protocol). NTP è così preciso poiché prende tempo da Internet. Opereremo questo protocollo utilizzando una modalità client-server. il processo è così semplice che il nostro Nodemcu funge da client e richiede un pacchetto NTP dal server tramite UDP. In cambio, il server invia un pacchetto al client che analizza i dati. NTP è il protocollo di sincronizzazione dell'ora universale. Ora accendiamo la postazione di lavoro dei nostri laboratori
Passaggio 1: componenti richiesti
- Scheda Arduino
- Scheda RTC DS3231
- Schermo LCD 16x2
- 2 x pulsante
- Resistenza variabile da 10K ohm (o potenziometro)
- Resistenza da 330 ohm
- Batteria a bottone da 3V
- tagliere
- Ponticelli
Modulo RTC DS3231
Il tempo è un senso essenziale richiesto in questo mondo frenetico degli esseri umani. Nel progetto in tempo reale
Usiamo RTC (A. K. A Orologio in tempo reale)
RTC L'orologio in tempo reale (RTC) è un circuito integrato (IC) che tiene traccia dell'ora corrente. L'RTC si occupa dell'ora in modalità reale. L'RTC si trova solitamente nelle schede madri dei computer e nei sistemi embedded per richiedere un accesso tempestivo.
Passaggio 2: connessione dell'orologio Arduino
- Collega il pin SCL al modulo RTC all'Arduino A5
- Collega il pin SDA al modulo RTC all'Arduino A4
- Connetti VCC A 5v e GND A GND
- Collegare un pulsante al pin 8
- Collegare un altro pulsante al pin 9
- Collega RS di LCD al pin 2 di Arduino
- Collega E di LCD al pin 3 di Arduino
- Collega D7 di LCD al pin 7 di Arduino
- Collega D6 di LCD al pin 6 di Arduino
- Collega D5 di LCD al pin 5 di Arduino
- Collega D4 di LCD al pin 4 di Arduino
- Connetti VSS & K a GND
- Collega VDD e A al 5v
- Collega vo al pin di uscita del potenziometro
Passaggio 3: codice per Arduino Clock con RTC
Il DS3231 funziona solo con il formato BCD e per convertire il BCD in decimale e viceversa ho usato le 2 righe sottostanti (esempio per minuto):// Converti BCD in decimalminute = (minuto >> 4) * 10 + (minuto e 0x0F);
// Converti decimale in BCDminute = ((minuto / 10) << 4) + (minuto % 10); void DS3231_display(): visualizza l'ora e il calendario, prima di visualizzare l'ora e i dati del calendario vengono convertiti dal formato BCD al formato decimale.void blink_parameter():
// Orologio e calendario in tempo reale con pulsanti di impostazione utilizzando DS3231 e Arduino // includi il codice della libreria LCD #include // includi il codice della libreria Wire (necessario per i dispositivi con protocollo I2C) #include // Connessioni del modulo LCD (RS, E, D4, D5, D6, D7) LCD a cristalli liquidi(2, 3, 4, 5, 6, 7); void setup() { pinMode(8, INPUT_PULLUP); // button1 è connesso al pin 8 pinMode(9, INPUT_PULLUP); // button2 è connesso al pin 9 // imposta il numero di colonne e righe dell'LCD lcd.begin(16, 2); Wire.begin(); // Unisciti al bus i2c } char Time = "TIME::: "; char Calendar = "DATA: / /20 "; byte i, secondo, minuto, ora, data, mese, anno; void DS3231_display(){ // Converti BCD in secondo decimale = (secondo >> 4) * 10 + (secondo & 0x0F); minuto = (minuto >> 4) * 10 + (minuto & 0x0F); ora = (ora >> 4) * 10 + (ora & 0x0F); data = (data >> 4) * 10 + (data & 0x0F); mese = (mese >> 4) * 10 + (mese & 0x0F); anno = (anno >> 4) * 10 + (anno & 0x0F); // Fine conversione Tempo[12] = secondo % 10 + 48; Tempo[11] = secondo / 10 + 48; Tempo[9] = minuto % 10 + 48; Tempo[8] = minuto / 10 + 48; Tempo[6] = ora % 10 + 48; Tempo[5] = ora / 10 + 48; Calendario[14] = anno % 10 + 48; Calendario[13] = anno / 10 + 48; Calendario[9] = mese % 10 + 48; Calendario[8] = mese / 10 + 48; Calendario[6] = data % 10 + 48; Calendario[5] = data / 10 + 48; lcd.setCursor(0, 0); lcd.print(Ora); // Visualizza l'ora lcd.setCursor(0, 1); lcd.print(Calendario); // Visualizza calendario } void blink_parameter(){ byte j = 0; while(j 23) // Se ore > 23 ==> ore = 0 parametro = 0; if(i == 1 && parametro > 59) // If minuti > 59 ==> minuti = 0 parametro = 0; if(i == 2 && parametro > 31) // If data > 31 ==> data = 1 parametro = 1; if(i == 3 && parametro > 12) // If mese > 12 ==> mese = 1 parametro = 1; if(i == 4 && parametro > 99) // If anno > 99 ==> anno = 0 parametro = 0; sprintf(testo, "%02u", parametro); lcd.setCursor(x, y); lcd.print(testo); ritardo(200); // Attendi 200 ms } lcd.setCursor(x, y); lcd.print(" "); // Visualizza due spazi blink_parameter(); sprintf(testo, "%02u", parametro); lcd.setCursor(x, y); lcd.print(testo); parametro_lampeggia(); if(!digitalRead(8)){ // Se viene premuto il pulsante (pin #8) i++; // Aumenta 'i' per il prossimo parametro di ritorno del parametro; // Restituisce il valore del parametro ed esce } } } void loop() { if(!digitalRead(8)){ // Se viene premuto il pulsante (pin #8) i = 0; ora = edit(5, 0, ora); minuto = edit(8, 0, minuto); data = modifica(5, 1, data); mese = modifica(8, 1, mese); anno = modifica(13, 1, anno); // Converti decimale in BCD minuto = ((minuto / 10) << 4) + (minuto % 10); ora = ((ora / 10) << 4) + (ora % 10); data = ((data / 10) << 4) + (data % 10); mese = ((mese / 10) << 4) + (mese % 10); anno = ((anno / 10) << 4) + (anno % 10); // Termina la conversione // Scrivi i dati su DS3231 RTC Wire.beginTransmission(0x68); // Avvia protocollo I2C con indirizzo DS3231 Wire.write(0); // Invia l'indirizzo del registro Wire.write(0); // Resetta i secondi e avvia l'oscillatore Wire.write(minute); // Scrivi minuti Wire.write(hour); // Scrivi ora Wire.write(1); // Scrivi giorno (non utilizzato) Wire.write(date); // Scrivi la data Wire.write(mese); // Scrivi mese Wire.write(anno); // Scrivi anno Wire.endTransmission(); // Interrompe la trasmissione e rilascia il ritardo del bus I2C (200); // Attendi 200 ms } Wire.beginTransmission(0x68); // Avvia protocollo I2C con indirizzo DS3231 Wire.write(0); // Invia l'indirizzo del registro Wire.endTransmission(false); // I2C riavvia Wire.requestFrom(0x68, 7); // Richiede 7 byte da DS3231 e rilascia il bus I2C al termine della lettura second = Wire.read(); // Legge i secondi dal registro 0 minuto = Wire.read(); // Legge i minuti dal registro 1 ora = Wire.read(); // Legge l'ora dal registro 2 Wire.read(); // Legge il giorno dal registro 3 (non utilizzato) date = Wire.read(); // Legge la data dal registro 4 mesi = Wire.read(); // Leggi mese dal registro 5 anno = Wire.read(); // Legge l'anno dal registro 6 DS3231_display(); // Tempo di visualizzazione e ritardo del calendario (50); // Attendi 50 ms }
Consigliato:
Tracker Covid19 in tempo reale che utilizza ESP8266 e OLED - Dashboard Covid19 in tempo reale: 4 passaggi
Tracker Covid19 in tempo reale che utilizza ESP8266 e OLED | Dashboard Covid19 in tempo reale: visita il sito Web Techtronic Harsh: http://techtronicharsh.com Ovunque c'è un enorme focolaio del Novel Corona Virus (COVID19). È diventato necessario tenere d'occhio l'attuale scenario di COVID-19 nel mondo. Quindi, essendo a casa, questo è stato il p
Utilizzo dei moduli orologio in tempo reale DS1307 e DS3231 con Arduino: 3 passaggi
Utilizzo dei moduli di clock in tempo reale DS1307 e DS3231 con Arduino: continuiamo a ricevere richieste su come utilizzare i moduli di clock in tempo reale DS1307 e DS3231 con Arduino da varie fonti, quindi questo è il primo di un tutorial in due parti su come utilizzarli. Per questo tutorial su Arduino abbiamo a disposizione due moduli di clock in tempo reale
DS1307 Orologio in tempo reale RTC con Arduino: 4 passaggi
DS1307 Real Time Clock RTC con Arduino: in questo tutorial, impareremo a conoscere Real Time Clock (RTC) e come Arduino & Real Time Clock IC DS1307 sono messi insieme come un dispositivo di cronometraggio. Real Time Clock (RTC) viene utilizzato per monitorare l'ora e mantenere un calendario. Per utilizzare un RTC, w
Creare un orologio con M5stick C usando Arduino IDE - Orologio in tempo reale RTC con M5stack M5stick-C: 4 passaggi
Creare un orologio con M5stick C usando Arduino IDE | Orologio in tempo reale RTC con M5stack M5stick-C: Ciao ragazzi in questo tutorial impareremo come creare un orologio con la scheda di sviluppo m5stick-C di m5stack usando Arduino IDE. Quindi m5stick visualizzerà data, ora e amp; settimana del mese sul display
Come creare un orologio in tempo reale utilizzando Arduino e display TFT-Arduino Mega RTC con display TFT da 3,5 pollici: 4 passaggi
Come creare un orologio in tempo reale utilizzando Arduino e display TFT|Arduino Mega RTC con display TFT da 3,5 pollici: visita il mio canale Youtube.Introduzione:- In questo post realizzerò "Orologio in tempo reale" utilizzando LCD touch TFT da 3,5 pollici, Arduino Mega 2560 e modulo RTC DS3231….Prima di iniziare…controlla il video dal mio canale YouTube..Nota:- Se stai usando Arduin