Modulo Real Time Clock AZ-Delivery DS3231

Benvenuti!

Grazie per aver acquistato il modulo orologio in tempo reale AZ-Delivery DS3231. Nelle pagine seguenti vi verrà spiegato come utilizzare e configurare questo pratico dispositivo.

Divertitevi!

Introduzione

Il modulo DS3231 Real Time Clock è utilizzato come dispositivo di sincronizzazione temporale in applicazioni in cui è essenziale disporre di tempistiche precise. Il modulo viene utilizzato in orologi digitali, schede madri di computer, fotocamere digitali, sistemi embedded, ecc.

Si tratta di un orologio in tempo reale con oscillatore a cristallo integrato compensato in temperatura. È dotato di una batteria integrata che consente di mantenere il tempo in modo continuo quando il dispositivo non è alimentato da una fonte esterna.

Una delle caratteristiche del modulo è che può funzionare in 12 ore o 24 ore. formato orario e dispone di un'indicazione AM/PM.

Il modulo è programmabile con due allarmi diurni. Gli allarmi possono essere programmati tramite un chip EEPROM integrato che può memorizzare i dati di allarme nella memoria interna. È inoltre presente un pin di uscita dell'oscillatore a onda quadra da 32 kHz, che può essere utilizzato per sincronizzare l'ora con altri dispositivi simili.

L'orologio interno può fornire informazioni su secondi, minuti, ore, giorno, data, mese e anno. La data di fine mese viene regolata automaticamente per i mesi con meno di 31 giorni. Include anche correzioni per gli anni bisestili.

Il modulo dispone di un'interfaccia I2C con indirizzo seriale I2C e può essere collegato ad altri dispositivi sulle stesse linee I2C.

Specifiche tecniche

Tensione di alimentazione 3.3V
Temperatura di esercizio da 0°C a +70°C
Interfaccia di comunicazione I2C
Batteria di backup Una batteria a bottone da 3V
Sensore digitale di temperatura ±3°C Precisione
Onda quadra programmabile 32kHz [Uscita]
Allarmi orari 2
Basso consumo energetico meno di 1mA
Dimensioni 34 x 23 x 18mm [1,3 x 09 x 07in]

Il modulo è composto da un chip di clock RTC DS3231 e dal chip EEPROM Atmel AT24C32. L'AT24C32 ha una capacità di memoria di 32kB e utilizza l'interfaccia bus I2C con indirizzo 0x57 che può essere modificato. È in grado di impostare la data e l'ora, controllare e cancellare gli allarmi e registrare i dati con un timestamp.

Il modulo è dotato di un supporto per una batteria a bottone da 3 V, che non è inclusa nella fornitura del modulo. È necessaria una batteria CR2032 o, in alternativa, una LIR2032. La batteria funge da alimentazione di riserva per il modulo. Quando l'alimentazione esterna viene disattivata, il chip integrato con rilevamento automatico passa all'alimentazione di emergenza fornita dalla batteria.

La piedinatura

Il modulo RTC DS3231 ha sei pin su un lato e altri quattro, per l'alimentazione e le linee di interfaccia I2C, sull'altro lato. La piedinatura è mostrata nell'immagine seguente:

Descrizione Pinout: Il modulo presenta pin etichettati come 32K, SQW, SCL, SDA, VCC, GND. Il pin 32K è un'uscita dell'oscillatore a cristallo che fornisce un segnale a onda quadra di 32 kHz, utilizzabile come segnale di riferimento per altri dispositivi o lasciato fluttuante se non utilizzato. Il pin SQW può fornire un segnale di interrupt dovuto a condizioni di allarme.

Il modulo RTC DS3231 funziona in modo sicuro con una tensione di 3,3V. VCC può essere collegato a 5 V solo se l'RTC funziona con una LIR2032.

Come configurare l'IDE Arduino

Se l'IDE Arduino non è installato, seguire il link e scaricare il file di installazione per il sistema operativo scelto.

Per utenti Windows: Fare doppio clic sul file .exe scaricato e seguire le istruzioni della finestra di installazione.

Per utenti Linux: Scaricare un file con estensione .tar.xz, estrarlo, navigare nella cartella estratta e aprire il terminale. Eseguire due script: arduino-linux-setup.sh (seguito dal nome utente) e install.sh. Per il primo script, il comando è: sh arduino-linux-setup.sh nome_utente. La password di superutente sarà richiesta. Dopo l'installazione del primo script, eseguire il secondo con: sh install.sh. Dopo l'installazione, l'IDE Arduino sarà disponibile in 'All Apps'.

Quasi tutti i sistemi operativi hanno un editor di testo preinstallato (es. Notepad su Windows, Gedit su Ubuntu, Leafpad su Raspbian). Questi editor sono adatti per questo eBook.

Verificare che il PC rilevi la scheda Arduino: aprire l'IDE Arduino, andare su Strumenti > Scheda > {nome scheda qui}. Il nome della scheda dovrebbe essere 'Arduino/Genuino Uno'.

Selezionare la porta a cui è collegata la scheda Arduino: andare su Strumenti > Porta > {il nome della porta qui}. Il nome della porta USB sarà visibile nel menu a discesa.

Su Windows, le porte sono tipicamente nominate 'COMx'. Su Linux, il nome della porta è solitamente /dev/ttyUSBx, dove 'x' è un numero intero da 0 a 9.

Come configurare Raspberry Pi e Python

Per utilizzare il Raspberry Pi, è necessario installare il sistema operativo e configurarlo per la modalità Headless. La modalità Headless consente la connessione remota senza schermo, mouse o tastiera del PC, utilizzando solo il Raspberry Pi, l'alimentazione e la connessione Internet. Maggiori dettagli sono disponibili nella 'Guida rapida all'avvio di Raspberry Pi'. Il sistema operativo Raspbian include Python preinstallato.

Collegamento del modulo con il microcontrollore compatibile con Arduino

Collegare il modulo RTC DS3231 con il microcontrollore compatibile con Arduino come mostrato nel seguente schema di collegamento:

Schema di collegamento Arduino:

Pin del modulo Pin MC Colore del filo
SCL A5 Filo verde
SDA A4 Filo blu
VCC 3.3V Filo rosso
GND GND Filo nero

Libreria per l'IDE Arduino

Per utilizzare il modulo con Uno, si consiglia di scaricare una libreria esterna chiamata RTClib. La versione utilizzata è la 1.3.3. Per scaricarla e installarla, aprire Arduino IDE e andare su: Strumenti > Gestisci librerie. Nella finestra che appare, cercare 'RTClib' e installare la libreria RTClib di Adafruit.

La libreria include diversi esempi di sketch. Per aprirne uno, andare su: File > Esempi > RTClib > ds3231. Questo esempio di sketch permette di testare il modulo.

Esempio di schizzo (Arduino)

Di seguito è riportato uno sketch di esempio per leggere data, ora e temperatura dal modulo RTC.

#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;

char daysOfTheWeek[7][12] = {
  "Sunday",
  "Monday",
  "Tuesday",
  "Wednesday",
  "Thursday",
  "Friday",
  "Saturday"
};

void setup () {
  Serial.begin(9600);
  delay(2000);
  rtc.begin();
  // Imposta la data e l'ora correnti del PC al caricamento
  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)))
  /* Per impostare manualmente data e ora, rimuovere i commenti (//)
     e inserire i nuovi valori nella riga seguente:
     in questa sequenza: anno, giorno, mese, ora, minuto e secondo.*/
  //rtc.adjust(DateTime(2020, 2, 24, 10, 00, 0));
}

void loop () {
  DateTime now = rtc.now();

  // Giorno della settimana
  Serial.print("Day of the week: ");
  Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
  Serial.println();

  // Ora corrente
  Serial.print("Current Time: ");
  if (now.hour() < 10) {
    Serial.print("0");
  }
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  if (now.minute() < 10) {
    Serial.print("0");
  }
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  if (now.second() < 10) {
    Serial.print("0");
  }
  Serial.print(now.second(), DEC);
  Serial.println();

  // Data corrente
  Serial.print("Current Date: ");
  if (now.day() < 10) {
    Serial.print("0");
  }
  Serial.print(now.day(), DEC);
  Serial.print('/');
  if (now.month() < 10) {
    Serial.print("0");
  }
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.year(), DEC);
  Serial.println();

  // Temperatura
  Serial.print("Temperature: ");
  Serial.print(rtc.getTemperature());
  Serial.println(" C");
  Serial.println();

  delay(2000);
}

Caricare lo sketch su Uno e aprire Serial Monitor (Strumenti > Serial Monitor). Il risultato dovrebbe assomigliare all'output mostrato nell'immagine seguente (es. giorno della settimana, ora corrente, data corrente, temperatura).

Spiegazione del codice:

Collegamento del modulo con Raspberry Pi

Collegare il modulo RTC DS3231 con il Raspberry Pi come mostrato nel seguente schema di collegamento:

Schema di collegamento Raspberry Pi:

Pin RTC Pin del microcontrollore Pin fisico Colore del filo
VCC 3V3 1 Filo rosso
SDA GPIO2 3 Filo blu
GND GND 6 Filo nero
SCL GPIO3 5 Filo verde

Abilitazione dell'interfaccia I2C su Raspberry Pi

Per utilizzare il modulo con Raspberry Pi, è necessario abilitare l'interfaccia I2C. Aprire il menu: Menu Applicazione > Preferenze > Configurazione Raspberry Pi. Nella nuova finestra, sotto la scheda Interfacce, attivare l'opzione I2C.

Rilevare l'indirizzo I2C

Per rilevare l'indirizzo I2C del modulo, è necessario installare i2ctools. Nel terminale, eseguire: sudo apt-get install i2ctools -y.

Per verificare l'indirizzo I2C del modulo RTC, eseguire nel terminale: i2cdetect -y 1. L'output dovrebbe mostrare gli indirizzi 0x68 (per il modulo RTC) e 0x57 (per il chip EEPROM).

Se l'interfaccia I2C non è abilitata, verrà visualizzato un errore simile a: 'Error: Could not open file /dev/i2c-1'.

Librerie e strumenti per Python

Per utilizzare gli script Python, è necessario installare l'applicazione git e la libreria python-smbus. Eseguire nel terminale:

sudo apt-get update
sudo apt-get install -y python-smbus git

Lo script della libreria esterna può essere scaricato con: git clone https://github.com/Slaveche90/az-delivery-ds3231.git. Dopo il download, lo script rtc_lib.py si trova nella directory /home/pi/az-delivery-ds3231. Per cambiare directory, usare: cd az-delivery-ds3231.

Script Python

Di seguito è riportato lo script per il controllo del modulo RTC:

import time
import rtc_lib # importing library functions

degree_sign = u'\xb0'

ds3231 = rtc_lib.SDL_DS3231(1, 0x68)
# Salva la data e l'ora correnti del Raspberry Pi
ds3231.write_now()

# Funzione per aggiungere lo zero iniziale ai numeri a una cifra
def check(num):
    '''A function that puts leading zero to single digit number'''
    if num < 10:
        return '0{}'.format(num)
    else:
        return str(num)

print('[Press CTRL + C to end the script!]')
try:
    while True:
        # Ora del sistema
        print('\nSystem time: {}'.format(time.strftime('%Y-%m-%d %H:%M:%S')))
        
        # Lettura data e ora RTC
        data = ds3231.read_datetime() # return tuple
        print('RTC date: {}{}.{}.{}'.format(data[0], data[1], check(data[2]), check(data[3])))
        print('RTC time: {}:{}:{}'.format(check(data[4]), check(data[5]), check(data[6])))
        
        # Formato alternativo data/ora RTC
        print('RTC date_time: {}'.format(ds3231.read_str()))
        
        # Lettura temperatura
        print('Temperature: {:.1f}{}'.format(ds3231.getTemp(), degree_sign))
        
        time.sleep(1)
except KeyboardInterrupt:
    print('\nScript end!')

Salvare lo script come rtc.py nella stessa directory di rtc_lib.py. Per eseguirlo, aprire il terminale nella directory e digitare: python3 rtc.py.

L'output mostrerà l'ora del sistema, la data e l'ora RTC, e la temperatura. Per interrompere lo script, premere CTRL + C.

Spiegazione dello script Python:

Risorse aggiuntive

Per imparare e creare i propri progetti, sono disponibili numerosi script di esempio e tutorial online. AZ-Delivery Vertriebs GmbH offre prodotti di alta qualità per Arduino e Raspberry Pi, con esempi di applicazione, guide, eBook, librerie e supporto tecnico.

Visita: https://az-delivery.de

Maggiori informazioni su AZ-Delivery: https://az-delivery.de/pages/about-us

PDF preview unavailable. Download the PDF instead.

DS3231 RTC Real Time Clock IT Microsoft Office Word Aspose.Words for .NET 23.12.0

Related Documents

Preview Guide du module d'horloge en temps réel AZ-Delivery DS3231
Découvrez le module d'horloge en temps réel AZ-Delivery DS3231. Ce guide fournit des instructions détaillées sur ses spécifications, son brochage, sa configuration avec Arduino et Raspberry Pi, et des exemples de code Python pour une intégration facile dans vos projets électroniques.
Preview Guía de Uso: Módulo Reloj Tiempo Real AZ-Delivery DS3231 con Arduino y Raspberry Pi
Aprende a configurar y utilizar el módulo Reloj de Tiempo Real DS3231 de AZ-Delivery con Arduino y Raspberry Pi. Incluye tutoriales de conexión, configuración de IDEs, y ejemplos de código en Python.
Preview Handleiding AZ-Delivery DS3231 Real Time Clock Module
Een uitgebreide gids voor het instellen en gebruiken van de AZ-Delivery DS3231 Real Time Clock Module met Arduino en Raspberry Pi, inclusief specificaties, bedrading en codevoorbeelden.
Preview AZ-Delivery DS3231 Real Time Clock Module Guide for Arduino and Raspberry Pi
A comprehensive guide to using the AZ-Delivery DS3231 Real Time Clock (RTC) module with Arduino and Raspberry Pi. This guide covers setup, wiring, software installation, and Python scripting for accurate timekeeping.
Preview DS3231 RTC Real Time Clock Datasheet
Datasheet for the DS3231, a low-cost, extremely accurate I²C Real Time Clock (RTC) with an integrated temperature-compensated crystal oscillator (TCXO). It provides timekeeping, alarms, and a programmable square-wave output, suitable for applications like servers, telematics, and GPS.