Problemi inspiegabili modulo RTC

Buongiorno, scrivo per avere consigli su alcuni problemi che sto avendo al mio progetto. Ho arduino da pochissimo tempo e quindi sicuramente sbaglio io qualcosa, ma non riesco a capire dove.

Il progetto è un semplice dispositivo da posizionare sotto un televisore: se dopo una certa ora viene rilevato un livello audio superiore ad una soglia, il dispositivo abbassa automaticamente il volume.
Ho quindi unito 3 moduli: dispositivo RTC, microfono, led IR. Mentre con gli ultimi due me la sono cavata in qualche modo (il microfono mi ha fatto penare ma ci sono), non pensavo potesse essere così problematico gestire il modulo dell'orario.

Veniamo al problema. Il dispositivo sembra funzionare quando è attaccato al pc: se ad esempio imposto come orario-soglia le 22 e sono le 13, non succede niente e il led non si attiva qualunque sia il rumore ambientale. La cosa assurda è che se stacco l'USB e alimento Arduino con la pila da 9V, viene completamente bypassato il controllo dell'ora, cioè è come se il modulo RTC restituisse un valore sempre maggiore di 24.

Questo è il codice che uso per chiedere l'ora (spalmato nelle varie sezioni).

RTC_DS1307 rtc;
unsigned int ora;
rtc.begin()
DateTime now = rtc.now();
ora = now.hour(), DEC;
Serial.println(ora);
delay(200);

Ho la sensazione che per qualche motivo il modulo, una volta scollegato dal pc, restituisca il valore 165 come orario, che ovviamente è >24 e fa scattare sempre il ciclo. Ma perchè mai?

Grazie a chi ha avuto la pazienza di ascoltarmi.

Ha iniziato a presentarsi lo stesso problema anche da usb: ogni tot secondi l'RTC mi spara 165 come valore, per poi tornare normale il secondo successivo:

2165/165/12 (mer) 14:50:0
2020/4/24 (ven) 14:50:2
2020/4/24 (ven) 14:50:4
2020/4/24 (ven) 14:50:6
2020/4/24 (ven) 14:50:8
2020/4/24 (ven) 14:50:10
2020/4/24 (ven) 14:50:12
2165/165/165 (mar) 165:165:10
2027/4/24 (sab) 14:50:16
2020/4/24 (ven) 14:50:18
2020/4/24 (ven) 14:50:20
2020/4/24 (ven) 14:50:22
2165/165/24 (lun) 14:50:24
2020/4/24 (ven) 14:50:26
2020/4/24 (ven) 14:50:28
2020/4/24 (ven) 14:50:30
2020/4/24 (ven) 14:50:32

Con la batteria da 9v suppongo avvenga più spesso. Usando il plotter ho notato che toccando i cavi aumentano i 165 e ci sta, ma succede anche se non tocco nulla e le connessioni sono perfette.

Quelli sono errori saltuari sul bus I2C ... fili troppo lunghi, mancanza delle resistenze di pull-up o di valore errato, distubi nelle vicinanze, ecc. ecc.

Verifica bene il cablaggio e come hai collegato il RTC.

Guglielmo

Confermo quello che ha detto Guglielmo perché è capitato anche a me: quel 165 si legge sempre quando non c'è comunicazione col modulo (la lettura "vuota" viene convertita dalla libreria per qualche ragione come le ore 165 e minuti 165).

Controlla bene tutti i cablaggi.

Grazie mille, ho sostituito i cavi con altri più corti e meno ballerini, sembra andare meglio! Forse quando cambiavo alimentazione involontariamente spostavo qualcosa, non pensavo fosse così sensibile.

Beh ... stai parlando di un bus che è nato per connettere tra di loro IC sullo stesso stampato (I2C = Inter-Integrated Circuit) e che non è certo stato pensato per essere portato a spasso su fili volanti ! Che se poi uno fa brevi collegamenti fatti bene funzioni ugualmente ci sta, ma che non sia nato per questo ... pure :wink:

Guglielmo