orologio DS1307 tiny RTC ed ESP32

Salve a tutti !
dubbio di connessione fisica del modulo in oggetto .... :neutral_face:

sto parlando di questo :

e questo è il suo schema

Al di fuori dei problemi ( che vedrò in un secondo momento) di carica batteria ed utilizzo delle normali CR2032 invece delle ricaricabili LR2032, il dubbio che mi sorge è la connessione I2C.

Ho già sul progetto una connessione I2C, con pull-up 4K7 sui 3V3, in quanto sto lavorando con un ESP32.

Da data-sheet, il modulo in questione deve lavorare a 5V e dallo schema, inoltre, si nota che già ci sono le pull-up (3K3), appunto verso 5V (linea utilizzata sia per dialogare all'esterno che per comunicare con la sua minieeprom AT24CP.

Il mio dubbio è : risulta il tutto compatibile con esp32 o debbo eliminare le 3K3 (che in parallelo alle già presenti 4K7) che andrebbero quasi a dimezzare la resistenza totale di pull-up ?
In ogni caso la linea I2C avrebbe problemi, essendo il chip alimentato a 5v ?

Intendo dire : qui il tutto va a 5V ma il mio progetto lavora a 3V3.
Come debbo comportarmi ?

Non puoi mischiare oggetti I2C che lavorano a 3.3V con oggetti fatti per lavorare a 5V perché le pull-up di quelli a 5V porterebbero detta tensione sui pin di quello a 3.3V.

Se il modulo che usi è dato per funzionare solo a 5V (... ma credo che se ne trovino fatti per lavorare a 3.3V), devi usare un modulo traslatore di livello adatto ad I2C, tipo QUESTO di Adafruit.

Guglielmo

No, il DS1307 lavora da 5V a 7V, quindi a 3.3V non lo puoi usare, ma se prendi un modulo con DS3231, che è molto più preciso del DS1307 e che ti tirano dietro per pochi EURO, lo puoi usare a 3.3V. :slight_smile:

Guglielmo

A che ti serve un RTC esterno se stai lavorando con un ESP32?

#include "time.h"

// Definizione del timezone (fuso orario più ora legale)
#define MYTZ "CET-1CEST,M3.5.0,M10.5.0/3"

void setup() {
  .... dopo aver avviato la connessione ....
  // Sync time with NTP
  configTzTime(MYTZ, "time.google.com", "time.windows.com", "pool.ntp.org");
  .....
}

Quando serve l'ora aggiornata (eventualmente struct tm tInfo la puoi mettere come globale e poi ti basta aggiornarla una volta al secondo):

  time_t now = time(nullptr);          // timedate aggiornato in formato unix
  struct tm tInfo = *localtime(&now);  // la struct tm (definita in time.h) contiene tutto quel che serve
  Serial.printf("%02d:%02d:%02d\n", tInfo.tm_hour, tInfo.tm_min, tInfo.tm_sec);

Altra strada è tagliare via le due resistenze di pull-up che sono su quel modulo, alimentarlo comunque a 5V, ma usare il bus I2C con le pull-up a 3.3V ...
... dato che il bus I2C è open-drain e che il DS1307 dovrebbe leggere come livello HIGH già un segnale di 2.2V, probabilmente potrebbe funzionare, ma ... mi raccomando, DEVI togliere le due resistenze di pull-up collegate ai 5V !!!

Guglielmo

P.S.: io comunque userei il DS3231 ... tutta un'altra storia :smiley: :smiley: :smiley:

cotestatnt:
A che ti serve un RTC esterno se stai lavorando con un ESP32?

... questo è vero se è sempre collegato ad internet ... altrimenti il server NTP non è raggiungibile ... ::slight_smile:

Guglielmo

ciao guglielmo
immaginavo che non poteva andar bene e me ne hai dato la certezza.
Da quello che ho visto, però, il DS3231 (che tra l'altro si trova con batterie ricaricabili ed ho già utilizzato) non mi sembra abbia la eeprom per la gestione della memoria.
Almeno questo mi è sembrato di vedere, ma non ho fatto prove approfondite.
Parlo di questo modulo

Ricordo bene però che non mi teneva l'orario, una volta spento.

gpb01:
... questo è vero se è sempre collegato ad internet ... altrimenti il server NTP non è raggiungibile ... ::slight_smile:

Non proprio, una volta sincronizzato con il server NTP non è più necessaria la connessione.

Hai scelto l'unico modulo che NON ha a bordo anche una EEPROM :smiley: :smiley: :smiley:

Normalmente tutti usano questi:


... costano meno di 5€ ed hanno a bordo una AT24C32 che è una EEPROM da 32 Kbit, ovvero 4 Kbytes :smiley:

Guglielmo

@cotestatnt ... il device è collegato ad internet solo rarissimamente e potrebbe rimanere spento anche per mesi.
dubbio amletico : come fa l'orologio a continuare a funzionare e a ritrovarsi aggiornato ?

cotestatnt:
Non proprio, una volta sincronizzato con il server NTP non è più necessaria la connessione.

... certo, ma NON ti sincronizzi più e, per quanto sia preciso il ESP32, comunque non lo è mai come un DS3231 :wink:

Guglielmo

sigh ho già una 30ina di moduli DS3231 senza eprom e una 60ina di DS1307 :frowning:
che faccio ? butto tutto ? :o

p.s. me li hanno dati per fare dei prototipi e mi -DOVREI- arrangiare con questi

Prova come ti ho detto al post #4 ... in teoria dovrebbe andare ... ::slight_smile:

Oppure, se non vuoi tagliare/staccare, usa il level converter che ti ho indicato e vai traquillo ... oltretutto è a 4 canali, quindi puoi fare il level convert anche di altre cose :wink:

Guglielmo

bene .... per ultimo se mi puoi dare un tuo giudizio sul discorso qualità tra i due tipi, in modo che possa fare un confronto. Eventualmente un link non solo di info tecniche...
grazie

p.s. preferisco far sparire le resistenza da 3K3 ...

Il DS1307 usa un quarzo esterno sensibile alle variazioni di temperatura e con precisione proporzionale alla sua qualità, il DS3231 ha il clock interno termo-compensato (accuratezza ±2ppm) … :smiley:

Guglielmo

il DS3231 ha il clock interno termo-compensato (accuratezza ±2ppm)

Grazie per la info ....
mi sa che debbo passare PER FORZA al DS3231.
Se accendono il device dopo un mese si ritrovano la data della rivoluzione francese :o

Si ti conviene.
Il DS1307 fa un po’ pena da quel punto di vista.

noto comunque che anche lui soffre di "sindrome di alimentazione"
guglando ho trovato questo :

l'ho letto al volo ma da quello che ho visto non sta messo bene.
debbo approfondire.

Ho usato centinaiai di quei moduli, per di più comprati su AliEspress per 1.5US$, mai avuto un problema e sempre usati con le CR2032 ... che durano ANNI !!!

Basta che prevedi la sostituzione della batteria ogni N anni e sei a cavallo.

Guglielmo

ottimo feedback ... quello che cercavo !
grazie ancora !