In questa lezione si imparerà ad utilizzare il modulo RTC DS3231.
Questo modulo permette di visualizzare l’anno, il mese, il giorno, l’ora, il minuto, il secondo e il giorno della settimana corrente. Il modulo in questione è alimentato da una piccola batteria. Questa batteria continuerà ad alimentare il modulo anche in assenza del collegamento con la board di Arduino.
Il modulo RTC riesce a conteggiare il tempo (anche grazie all’ausilio di un oscillatore). Adotta una comunicazione seriale (I2C) con Arduino ed il modulo può leggere o scrivere dati.
I sistemi RTC presentano diversi vantaggi tra cui:
- bassi consumi energetici
- Il calcolo del tempo viene effettuato all’interno di questi moduli
- Alta precisione
Come detto precedentemente è presente un oscillatore che vibra a una frequenza di 32.768 kHz. Tale dispositivo utilizza la meccanica di risonanza di una vibrazione cristallo di materiale piezoelettrico per generare un segnale elettrico con una ben precisa frequenza. Questa frequenza è comunemente utilizzato per tenere traccia del tempo (come in orologi da polso quarzo ), per fornire uno stabile segnale di clock per digitali circuiti integrati , e stabilizzare frequenze per trasmettitori radio e ricevitori.
In questo articolo si vedrà come utilizzare il modulo RTC DS3231.
I materiali da utilizzare sono i seguenti:
- (1) x Arduino UNO
- (1) x Modulo RTC DS3231
- (4) x Connettori F-M (Connettori di DuPont Femmina – Maschio )
Il diagramma di collegamento è il seguente:
Il codice è il seguente;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
#include <Wire.h> #include <DS3231.h> DS3231 clock; RTCDateTime dt; void setup() { Serial.begin(9600); Serial.println("Initialize DS3231"); clock.begin(); Manual (YYYY, MM, DD, HH, II, SS)//è una funzione presenta nella libreria che permette di impostare in che modo sarà visualizzata la data clock.setDateTime(2020, 4, 8, 14, 46, 00); //imposti l'orario corrente clock.setDateTime(__DATE__, __TIME__); //<em>DATE</em> e <em>TIME</em> sono macro di Arduino che conservano data e ora di sistema sino allo spegnimento della board } void loop() { dt = clock.getDateTime(); // For leading zero look to DS3231_dateformat example Serial.print("Raw data: "); Serial.print(dt.year); Serial.print("-"); Serial.print(dt.month); Serial.print("-"); Serial.print(dt.day); Serial.print(" "); Serial.print(dt.hour); Serial.print(":"); Serial.print(dt.minute); Serial.print(":"); Serial.print(dt.second); Serial.println(""); delay(1000); } |
Per installare la libreria DS3231 visitare il seguente articolo: Arduino IDE: come installare una libreria #10.1.
Sul monitor seriale sarà possibile visualizzare l’orario corrente.
Per acquistare il modulo clicca qui.
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano
Seguici per non perdere le prossime novità!
Ciao, l’ora va impostata manualmente e poi viene mantenuta automaticamente dal modulo oppure riesce a impostarlo da solo? Grazie mills
In linea di massima occorre configurare la scheda RTC a mano la prima volta che si utilizza, dopodiché data e ora vengono conservate.
Per un utente esperto, è anche possibile collegare Arduino con uno shield Ethernet (basati su W5100 ad esempio, ne abbiamo prsentati diversi) che si colleghi ad un NTP (Network Time Protocol) centralizzato e recuperi l’ora UTC o relativa alla time zone.
E’ evidente tuttavia che se la scheda ha la possibilità di collegarsi via rete all’NTP ad ogni accensione, un RTC potrebbe non essere più necessario.
Grazie mille Simone 🙂