Tutorial Arduino ITA 23: RTC (Real Time Clock) DS3231

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 พ.ค. 2024
  • ✅ Guida per misurare il tempo con Arduino tramite il modulo RTC (Real Time Clock). Oltre a visualizzare la data e l'ora sul display LCD scoprirai come realizzare una sveglia personalizzata.
    INDICE DEI CONTENUTI
    00:00 Introduzione
    00:27 Funzionamento del modulo RTC (Real Time Clock)
    02:09 Creazione del circuito
    03:17 Sketch per recuperare la data e l'ora
    05:51 Visualizzazione del tempo sul display LCD
    06:18 Sketch per modificare la data e l'ora
    08:22 Modifica del tempo tramite il monitor seriale
    08:52 Aggiunta di buzzer e LED al circuito
    09:20 Sketch per creare delle sveglie
    11:01 Allarme sonoro e visivo in funzione
    😍 Ti è piaciuto il video? L'hai trovato interessante e utile? Vorresti vedere i nostri video con maggiore frequenza per imparare a creare progetti con Arduino, elettronica e fai da te? Diventa anche tu un Patreon del canale per supportarci nella creazione dei nuovi video.
    / techmakerit
    🎓 Link utili di questa puntata:
    Circuito e sketch utilizzati ➜ www.italiantechproject.it/tut...
    👍 Seguici sui social:
    Facebook ➜ / techmakerit
    Twitter ➜ / techmakerit
    Instagram ➜ / techmakerit
    Telegram ➜ t.me/TechMakerIT
    🌍 Visita il sito web
    www.italiantechproject.it/arduino
    🛒 Compra online su www.techmaker.it
    RTC DS3231 ➜ www.techmaker.it/altro/94-mod...
    Arduino UNO ➜ www.techmaker.it/schede-di-ar...
    Display LCD I2C ➜ www.techmaker.it/display/377-...
    Buzzer ➜ www.techmaker.it/altro/77-buz...
    LED ➜ www.techmaker.it/22-led
    Resistori ➜ www.techmaker.it/19-resistori
    Breadboard ➜ www.techmaker.it/breadboard/3...
    Cavetti ➜ www.techmaker.it/cavi-e-jumpe...
    Cavetti M/F ➜ www.techmaker.it/cavi-e-jumpe...
    Cavetti rigidi ➜ www.techmaker.it/cavi-e-jumpe...
    Cavo USB ➜ www.techmaker.it/cavi-e-jumpe...
    📚 Libri consigliati
    Arduino. Progetti e soluzioni ➜ amzn.to/34ds4IY
    Arduino. La guida ufficiale ➜ amzn.to/2DZoxDD
    Sensori per maker ➜ amzn.to/3l3vEeW
    Elettronica per maker ➜ amzn.to/3aBJDUm
    Elettronica trucchi e segreti ➜ amzn.to/3gdi9Fw
    Linguaggi di programmazione ➜ amzn.to/3gdGuv9
    Imparare a programmare ➜ amzn.to/3iVOoLn
    Unisciti alla comunità degli appassionati di elettronica
    👉 www.youtube.com/@TechMaker/join
    #RTC #RealTimeClock #Arduino
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 84

  • @rikgua2188
    @rikgua2188 2 หลายเดือนก่อน

    ottimo spiegato molto bene pieno di particolari, un pò veloce ma va bene lo stesso ogni tanto lo fermo e ci ragiono Grazie molte

    • @TechMaker
      @TechMaker  2 หลายเดือนก่อน

      👍

  • @samoelepasqualini1432
    @samoelepasqualini1432 2 ปีที่แล้ว +2

    Complimenti, video chiaro e interessante come sempre 👍

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว +2

      Grazie, continua a seguirci

  • @kavalieremik
    @kavalieremik 2 ปีที่แล้ว +1

    complimenti, veramente complimenti.
    Nessuno come te su internet!🇮🇹

  • @marcodalcanto7941
    @marcodalcanto7941 2 ปีที่แล้ว

    Complimenti per il progetto e l'ottima spiegazione ... come sempre

  • @mgmaker7518
    @mgmaker7518 ปีที่แล้ว

    Meraviglioso. Spiegato benissimo

  • @ifaber68
    @ifaber68 2 ปีที่แล้ว

    Ottimo tutorial come sempre :)

  • @fabriziospk4384
    @fabriziospk4384 2 ปีที่แล้ว

    Sempre mitico

  • @vincentbellini8425
    @vincentbellini8425 2 ปีที่แล้ว

    Non ti immagini il salto di qualità dell' audio; grande

  • @damianoferrari3346
    @damianoferrari3346 ปีที่แล้ว +1

    Buongiorno Tech!
    Come mai metti il cursore a (0,0) e (0,1) e viene la formattazione allineata al centro? (anziché nelle coordinate indicate)

    • @TechMaker
      @TechMaker  ปีที่แล้ว +1

      Nel video, i messaggi sul display vengono centrati usando gli spazi prima delle effettive scritte da mostrare, ma volendo puoi centrarle anche tramite le coordinate del metodo setCursor.

  • @pietroparodi4566
    @pietroparodi4566 ปีที่แล้ว

    Grande. Sarebbe il massimo poter implementare un ricevitore GPS per mantenere aggiornato il modulo RTC DS3231 (ad esempio una sincronizzazione al giorno) in quanto il modulo è già di per sè molto preciso. A quel punto, sarebbe un orologio "ORA ESATTA" Grazie mille per le risposte, Pietro

    • @TechMaker
      @TechMaker  ปีที่แล้ว +1

      Si, il modulo RTC può essere ricalibrato periodicamente tramite le informazioni dal GPS o dalla connessione internet.

    • @pietroparodi4566
      @pietroparodi4566 ปีที่แล้ว

      @@TechMaker grazie mille per la risposta. Ci sono modifiche da fare sul programma? Purtroppo le mie competenze in programmazione sono molto modeste...

    • @TechMaker
      @TechMaker  ปีที่แล้ว +1

      Si, il codice da caricare sulla scheda va modificato

  • @erenniodicarlo436
    @erenniodicarlo436 2 ปีที่แล้ว

    Salve e ben trovato.Per realizzare questo circuito,non disponendo del display con uscita laterale,posso collegarlo con modalità classica.Grazie.

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Si, puoi usare anche la modalità di collegamento senza I2C. Ti può essere di aiuto il video
      www.italiantechproject.it/arduino/10-usare-display-lcd

  • @massimilianoprada5854
    @massimilianoprada5854 2 ปีที่แล้ว

    Si proprio un ottimo video ben spiegato. Sarebbe possibile vedere un progetto con distanze maggiori, magari usando moduli tipo HC-12 o altro, x coprire distanze 800m o più.

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Cercheremo di pubblicare dei video anche sulla comunicazione a lunga distanza.

  • @andreaventura8634
    @andreaventura8634 5 หลายเดือนก่อน

    Ciao, ottimo video e molto chiaro !!
    Mi chiedevo come stampare nel monitor seriale una variabile DateTime con il comando Serial.print(...), grazie in anticipo per la risposta !

    • @TechMaker
      @TechMaker  5 หลายเดือนก่อน

      Puoi seguire lo stesso procedimento: converti la variabile in una stringa, specificando il formato desiderato, e successivamente, anziché utilizzare lcd.print, usi Serial.println.

  • @midogalaxyshaker4995
    @midogalaxyshaker4995 7 หลายเดือนก่อน

    ciao .. sei bravissimo .. ma io una domanda un pò particolare .. in pratica io ho comprato un contachilometri digitale con overspeed alarme .. e che quando superi una certa velocità (pre impostata): suona un allarme .. il problema che il range di questi impostazione parte da 40kmH a 120km/H .. ed io vorrei cambiare questa minima velocità ... esiste un modo per modificare i dati di questo lcd ? ... grazie in anticipo

    • @TechMaker
      @TechMaker  7 หลายเดือนก่อน

      Se non è previsto un modo per cambiare le impostazioni, sarà necessario caricare un nuovo programma sul microcontrollore per effettuare le modifiche.

    • @midogalaxyshaker4995
      @midogalaxyshaker4995 7 หลายเดือนก่อน

      wow fantastico .. grazie mille
      a chi mi posso rivolgere per caricare questo programma o come posso trovarlo su internet insieme agli strumenti di collegamento?
      non so da dove cominciare!@@TechMaker

    • @TechMaker
      @TechMaker  7 หลายเดือนก่อน

      Se il progetto è basato su Arduino, puoi caricare lo sketch utilizzando l'Arduino IDE. Sul nostro sito ( www.italiantechproject.it/ ), trovi alcuni video tutorial su come programmare Arduino con vari componenti.

    • @midogalaxyshaker4995
      @midogalaxyshaker4995 7 หลายเดือนก่อน

      grazie grazie tantissimo davvero per la tua generosità e la grande disponibilità ... vedo un pò almeno per capire qualcosa in questo mondo di lcd e spero di farcela ... grazie di nuovo@@TechMaker

  • @damianogenchi7708
    @damianogenchi7708 2 ปีที่แล้ว

    Bel video complimenti, però volevo sapere se invece di attivare una sveglia volessi accendere delle luci come posso impostare il programma?
    Grazie.

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      È sufficiente modificare la funzione che gestisce l'allarme, in modo che esegua le azioni desiderate.

  • @admguitar4855
    @admguitar4855 ปีที่แล้ว

    Sempre ottime spiegazioni! E complimenti per il vostro store online!
    Ho visto che per questo RTC (ma anche per altri) che c'è la possibilità di ottenere diverse frequenze di onda quadra, ad esempio 1hz. Ho visto che il tutto si fa con un codice che richiama la libreria Wire - mi chiedevo è possibile partire dalla onda quadra dell'oscillatore e creare una funzione nella quale, viene salvato il tempo in millisecondi dell'onda quadra, da utilizzare al posto di millis() che è molto impreciso? Se sì, come si potrebbe fare? Grazie in anticipo

    • @TechMaker
      @TechMaker  ปีที่แล้ว

      Si può associare un interrupt per intercettare i movimenti dell'onda quadrata ed eseguire di conseguenza il codice desiderato

    • @admguitar4855
      @admguitar4855 ปีที่แล้ว

      @@TechMaker Grazie, sì questo mi era chiaro. Ho visto dal datasheet che dal SQ è possibile generare:
      -1Hz
      -4.096kHz
      -8.192kHz
      -32.768kHz
      Mi chiedevo se ad 1Hz possiamo ottenere un interrupt ogni 500ms, per le altre frequenze l'interrupt a quanti millisecondi corrisponderebbe ogni volta? Magari utilizzando le altre frequenza si potrebbe ottenere, a seguito di qualche semplice calcolo, i millisecondi.

    • @TechMaker
      @TechMaker  ปีที่แล้ว

      Con una frequenza di 1Hz, monitorando soltanto una direzione dell'onda quadrata (RISING o FALLING) gli interrupt scattano una volta al secondo. Si può dimezzare il tempo con la costante CHANGE.
      Con le altre frequenze il procedimento è analogo, seguendo la formula:
      1 / frequenza = tempo

  • @umbertofusco143
    @umbertofusco143 ปีที่แล้ว +1

    Ciao Tech ho ricreato il tuo tutorial ma invece di tenere il DS3231 ho il RTC I2C. la funzionalità del tempo lo fa, ma per il suono del buzzer non va. vedendo dal file dice DS3231_off io invece cosa devo mettere? grazie sei un grande.

    • @TechMaker
      @TechMaker  ปีที่แล้ว

      Il codice del video è scritto per DS3231.
      Per usarlo con un altro chip (se supportato dalla libreria RTClib) è necessario specificarlo durante la creazione dell'oggetto "rtc" (per esempio RTC_DS1307). Se il modulo si basa su un chip non supportato, occorre usare un'altra libreria che riesce a gestirlo.

  • @gabric6025
    @gabric6025 ปีที่แล้ว

    è possibile mettere piu di 2 alarm con funzioni diverse?

    • @TechMaker
      @TechMaker  ปีที่แล้ว

      Sul modulo sono presenti soltanto due allarmi, per cui allo stesso tempo ne possono essere attivi soltanto due.

  • @Trivelleitor
    @Trivelleitor ปีที่แล้ว

    Buonasera, mi sono cimentato in un altro progetto con arduino in cui comando a distanza un rele mediante ir receiver, sul display leggo lo stato e il sensore di tempo per eccitarlo e diseccitarlo a un orario specifico. L'IR ho solo fatto i collegamenti ma al momento non l'ho incluso nello sketch, tuttavia il display a volte scrive caratteri strani senza alcun motivo (display collegato normalmente non mediante I2C). Per evitare il debounce del pulsante uso anche la funzione millis. Potrebbe essere un conflitto? Inoltre potrebbe darmi qualche consiglio sulla probabile causa e qualche risoluzione? Grazie in anticipo

    • @TechMaker
      @TechMaker  ปีที่แล้ว

      Controlla che tutti i collegamenti siano ben fissi, perché un mancato contatto anche per un brevissimo tempo può rendere indecifrabili i messaggi ricevuti.

  • @Trivelleitor
    @Trivelleitor 2 ปีที่แล้ว

    Mi è venuto fuori un altro problema: ieri sera quando mi è saltata la corrente il sensore ha perso tensione anche con la batteria (io però ho messo una cr2016 al posto della cr2032 che hai usato tu). Togliendo la funzione rtc.lostpower l'ora almeno resta ma si "freeza". Esiste una maniera per far si che anche quando perde tensione il modulo continui ad andare avanti?

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Visto che la batteria CR2016 è più sottile forse ha perso il contatto. Con una batteria carica e collegata correttamente il modulo dovrebbe continuare a funzionare anche senza un'alimentazione esterna. Almeno finché non si scarica la batteria a bottone.

  • @alessandrooliva5260
    @alessandrooliva5260 2 ปีที่แล้ว

    Grazie per il tutorial, ma quando faccio la verifica del code mi dice: 'printDateTime' was not declared in this scope. Sapreste dirmi dove sto sbagliando? Grazie

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Assicurati che la funzione printDateTime sia inclusa nello sketch.

  • @Trivelleitor
    @Trivelleitor 2 ปีที่แล้ว

    Se io volessi programmare una sveglia per esempio alle 7:30 che codice dovrei utilizzare?

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว +1

      Per il primo allarme puoi usare la costante DS3231_A1_Hour, mentre per il secondo DS3231_A2_Hour. In entrambi i casi l'ora del DateTime deve essere impostata a "T07:30:00". La data puoi impostarne una qualsiasi perché in quella modalità non ha importanza.

  • @davidefilippini2071
    @davidefilippini2071 2 ปีที่แล้ว

    Salve ottimo video sto replicando il tuo progetto ma ho un problema con la riga 23 setDateTime(buffer);
    mi da errore che dice errore: 'setDateTime' non è stato dichiarato in questo ambito
    setDateTime(buffer);
    Mi potreste aiutare???
    Grazie mille in anticipo

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Controlla che la funzione setDateTime sia presente all'interno dello sketch.

    • @davidefilippini2071
      @davidefilippini2071 2 ปีที่แล้ว

      IO ho compilato lo skech come hai fatto tu mi da errore non mi cambia nulla

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Se hai incluso la funzione setDateTime nello sketch, allora forse manca qualche partentesi graffa.

  • @albyjmh
    @albyjmh 2 ปีที่แล้ว

    Ciao, ho problemi con printDateTime poiché mi dice che la funzione non è dichiarata nonostante usi la versione 1.13. Hai qualche consiglio?

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      La funzione printDateTime non fa parte della libreria. È una funzione personalizzata che deve essere inserita all'interno dello sketch.

  • @erenniodicarlo436
    @erenniodicarlo436 2 ปีที่แล้ว

    Salve le rubo ancora tempo,ma confido sulla sua pazienza.Quando verifico il programma l'IDE mi da sempre errore.IO credo di inserire male le date e i tempi.Potresti illuminarmi? Ancora grazie.

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Qual è il messaggio di errore?

    • @erenniodicarlo436
      @erenniodicarlo436 2 ปีที่แล้ว

      @@TechMaker Errore durante la compilazione per la scheda Aerduino uno.Ora siccome il suo programma è sicuramente esatto,l'unico errore può essere l'inserimento errato delle date.Grazie.

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      In quale formato hai inserito le date? Nella console non vengono mostrati maggiori dettagli sull'errore?

  • @Trivelleitor
    @Trivelleitor 2 ปีที่แล้ว

    Buongiorno, cimentandomi in un nuovo progetto volevo sapere se c'era la possibilità di modificare solo la data o solo l'ora. Se si come? Inoltre per il mio scopo mi servo di un keypad 4x4 con cui prendo i valori. Per sostituirli la procedura è la stessa della porta seriale?

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Per modificare la date o l'ora separatamente, puoi leggere sia la data che l'ora attuali e modificare solo quello che ti interessa. Successivamente usi il metodo "adjust" per modificare le impostazioni sul modulo RTC. I dati possono provenire da qualsiasi fonte, quindi va bene anche un tastierino 4x4.

    • @Trivelleitor
      @Trivelleitor 2 ปีที่แล้ว

      @@TechMaker OK. Come faccio a recuperare la data e l'ora? Inoltre volevo sapere se era possibile modificare anche i minuti e la sveglia. Se si come faccio?

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      La data e l'ora puoi recuperarla tramite il metodo now() che ritorna un oggetto DateTime. Successivamente per ottenere i singoli dati puoi usare i metodi year(), month(), day(), hour(), minute(), second() ecc, oppure come mostrato nel video trasformarli in una stringa con il metodo toString().
      Per cambiare la sveglia, invece, puoi creare un altro oggetto DateTime contenente la data e l'ora della sveglia e successivamente passarlo al metodo setAlarm1() o setAlarm2().

    • @Trivelleitor
      @Trivelleitor 2 ปีที่แล้ว

      @@TechMaker potresti mandarmi un esempio di come creare l'oggetto per l'allarme. Io vorrei impostare la sveglia alle 7:30 la mattina. Mi potresti scrivere l'oggetto Datetime che devo usare?

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Trovi un esempio al minuto 09:40 del video. È sufficiente usare "...T07:30..." al posto di "...T08:00...".

  • @lucamassellani3913
    @lucamassellani3913 2 ปีที่แล้ว

    C'è un modo per cambiare L'ora delle sveglie con dei pulsanti?

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Si, puoi associare alla pressione dei pulsanti delle istruzioni che reimpostano l'allarme

  • @riccardotognetti1875
    @riccardotognetti1875 2 ปีที่แล้ว

    Mi chiedo come fa ha funzionare se non hai collegato il pin SQW?

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Il pin SQW può essere usato per lanciare degli interrupt, ma negli esempi mostrati nel video non vengono utilizzati.

  • @riccardotognetti1875
    @riccardotognetti1875 2 ปีที่แล้ว

    RTC ds3231
    LCD con I2C saldato come quello del video.
    Provato con Arduino 1.8.13 e Arduino IDE 2.0.
    Ho copiato il tutto dal video.
    Ho problemi con queste righe;
    lcd.print(dt.toString(dateBuffer));
    Errore:
    orologio con lcd:32:16:
    class DateTime' has no member name 'toString'

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Controlla che la libreria RTClib sia installata

    • @riccardotognetti1875
      @riccardotognetti1875 2 ปีที่แล้ว

      @@TechMaker credo che sia installata perché tramite il monitor seriale e con oled SSD1306 riesco a leggere i dati

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Qual è il numero di versione della libreria?

    • @riccardotognetti1875
      @riccardotognetti1875 2 ปีที่แล้ว

      Ho sistemato tutte e due le librerie.
      Avevo sbagliato la libreria RTC ma sistemandola non funziona lo stesso.
      Da quello che mi sembra di aver capito c'è qualche cosa che non riconosce ne Arduino 1.8.13 ne 2.0
      Se il nuovo Arduino IDE 2.0 sottolinea gli errori, allora non riconosce "now" riga 20 del tuo sketck.
      dateBuffer e dateTime riga 25 e 26 e di conseguenza le righe 29 e 31.

    • @TechMaker
      @TechMaker  2 ปีที่แล้ว

      Molto strano, prova a rimuovere la libreria e reinstallarla nuovamente.