Nota

Ciao, benvenuto nella Comunità di appassionati di SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino e ESP32 insieme ad altri appassionati.

Perché unirsi?

  • Supporto esperto: Risolvi problemi post-vendita e difficoltà tecniche con l’aiuto della nostra community e del nostro team.

  • Impara & Condividi: Condividi suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Accedi in anteprima ai nuovi annunci di prodotto e a contenuti esclusivi.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e giveaway: Partecipa a concorsi e promozioni durante le festività.

👉 Pronto a esplorare e creare con noi? Clicca [qui] e unisciti subito!

Lezione 16: Modulo Orologio in Tempo Reale (DS1302)

In questa lezione imparerai a utilizzare il Raspberry Pi Pico W per interfacciarti con un modulo orologio in tempo reale DS1302. Inizieremo collegando il DS1302 al Pico W utilizzando specifici pin GPIO. Imparerai anche come leggere e impostare data e ora correnti sul DS1302. Inoltre, vedremo come visualizzare continuamente la data e l’ora aggiornate ogni mezzo secondo nella console.

Componenti necessari

Per questo progetto sono richiesti i seguenti componenti.

È sicuramente comodo acquistare un kit completo. Ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Kit Sensori Universali per Maker

94

Universal Maker Sensor Kit

Puoi anche acquistare i componenti separatamente dai link seguenti.

Introduzione ai Componenti

Link per l’acquisto

Raspberry Pi Pico W

ACQUISTA

Modulo Orologio in Tempo Reale (DS1302)

ACQUISTA

Breadboard

ACQUISTA

Cablaggio

../_images/Lesson_16_DS1302_module_bb.png

Codice

Nota

  • Apri il file 16_ds1302_module.py nella directory universal-maker-sensor-kit-main/pico/Lesson_16_DS1302_Module oppure copia il codice in Thonny e clicca su «Run Current Script» o premi F5 per eseguirlo. Per un tutorial dettagliato, consulta Apri ed Esegui Codice Direttamente.

  • Assicurati che il file ds1302.py sia stato caricato su Pico W. Per istruzioni dettagliate, consulta Caricare le Librerie su Pico.

  • Ricorda di selezionare l’interprete «MicroPython (Raspberry Pi Pico)» nell’angolo in basso a destra.

from machine import Pin
import ds1302
import time

# Inizializza il modulo DS1302 RTC con i pin GPIO specificati
ds = ds1302.DS1302(Pin(5), Pin(18), Pin(19))  # (clk, dio, cs)

# Legge data e ora correnti dal DS1302
ds.date_time()

# Imposta la data/ora del DS1302 al 01/01/2024 Lunedì 00:00:00
ds.date_time([2024, 1, 1, 1, 0, 0, 0])  # (anno, mese, giorno, giorno_settimana, ora, minuti, secondi)

# Imposta i secondi su 10
ds.second(10)

# Visualizza continuamente data e ora ogni mezzo secondo
while True:
    print(ds.date_time())
    time.sleep(0.5)

Analisi del Codice

  1. Importazione delle Librerie

    In questa sezione vengono importate le librerie necessarie: machine per il controllo dei pin GPIO, ds1302 per la gestione del modulo RTC, e time per inserire ritardi nel programma.

    Per ulteriori dettagli sulla libreria ds1302, fare riferimento al file ds1302.py.

    from machine import Pin
    import ds1302
    import time
    
  2. Inizializzazione del Modulo DS1302 RTC

    Questo codice inizializza il modulo DS1302 specificando i pin GPIO del Raspberry Pi Pico W collegati ai pin clk, dio e cs del DS1302.

    ds = ds1302.DS1302(Pin(5), Pin(18), Pin(19))  # (clk, dio, cs)
    
  3. Lettura di Data e Ora Correnti

    Recupera la data e l’ora correnti dal DS1302. Il metodo date_time() restituisce una lista contenente anno, mese, giorno, giorno della settimana, ora, minuti e secondi.

    ds.date_time()
    
  4. Impostazione di Data e Ora

    Imposta la data e ora del DS1302 al 1° gennaio 2024, lunedì, alle ore 00:00:00. Il giorno della settimana (lunedì) è rappresentato da 1.

    ds.date_time([2024, 1, 1, 1, 0, 0, 0])
    
  5. Impostazione dei Secondi

    Imposta il valore dei secondi dell’orologio a 10.

    ds.second(10)
    
  6. Visualizzazione Continua di Data e Ora

    Questo ciclo stampa continuamente la data e l’ora correnti ogni mezzo secondo. La funzione time.sleep(0.5) introduce un ritardo di 0.5 secondi tra ciascuna iterazione.

    while True:
        print(ds.date_time())
        time.sleep(0.5)