Arduino Mega - Gestione RTC e Relè

Buona sera a tutti,

Come anticipato tanto tempo fa, sono alle prime armi e per mancanza d'esperienza spesso faccio degli sbagli. Cmq ho progettato un controllo per la mia plafoniera dell'acquario. Dopo tanti tentativi e simulazioni sono riuscito a farla funzionare.

Dopo aver implementato un modulo RTC, 26 relè, tre galleggianti 4 LM35, una fotoresistenza e molti LED, sto riscontrando un comportamento anomalo.

Spesso il modulo RTC non mi viene letto (not running) e o addirittura mi legge dati sbagliati:

####################
2165/165/165 165:165:85
ORE-MINUTI:16665
RTC RUNNING
MANUTEZIONE OFF

MAndandomi in tilt l'intero progetto con i relativi Relè. Ossia li lascia in modalità NA anche se arduino me li segna spenti:

MANUTEZIONE OFF
RELAY 1 OFF
RELAY 2 OFF
RELAY 3 OFF
RELAY 4 OFF
RELAY 5 OFF
RELAY 6 OFF
RELAY 7 OFF
RELAY 8 OFF
RELAY 9 OFF
RELAY 10 OFF
RELAY 11 OFF
RELAY 12 OFF
RELAY 13 OFF
RELAY 14 OFF
RELAY 15 OFF
RELAY 16 OFF
RELAY 17 LUCE ROSSA OFF
RELAY 18 LUCE ROSSA OFF
DOSOMETRICA 1 SPENTA 
DOSOMETRICA 2 SPENTA

Per non parlare che spesso sono costretto ad eseguire il reset del mega, attraverso il bottone oppure togliendo la connessione della USB.

MEntre allego le foto della plafoniera, dove si evidenzia che rimane accesa anche se i relè mi indicano OFF. invece nella parte destra delle foto si notano i relè con arduino mega nel centro.....mentre nell'altra foto (parte sinistra il terzo relè con il modulo rtc.
Sicuramente ho sbagliato qualcosa ma non riesco a capire dove.

CODICE_DEFINITIVO_20181120.c (19.8 KB)

Perché monti il RTC cosí lontano dal Arduino?
Che valore di resistenze pullup sul I2C hai messo?
Ciao Uwe

Ciao uwefed ,

mi consigli di avvicinare il modulo RTC ad arduino? nel we lo provo.

mentre per quanto riguarda il secondo punto....scusa l'ignoranza ma non ho messo nessuna resistenza. utilizzo le porte SDA e SCL

uwefed:
Che valore di resistenze pullup sul I2C hai messo?
Ciao Uwe

Una domanda ma il cavo USB lo usi solo per alimentarlo o il sistema è collegato a qualcosa per visualizzare il log?
Perché se lo usi solo per alimentare ti consiglio di eliminare tutte le print sulla seriale quando non sei in debug, il metodo più usao è una cosa del genere:

#define DEBUG_MODE

#ifdef DEBUG_MODE
  Serial.println("jfjfjfjfj");
#endif

In questo modo quando tutto è ok commenti la define ricompili e agiorni il programma sulla mega.
Non dovrebbe essere questo a costringerti a riavviare ma potrebbe essere un inizio di ottimizzazione.
L'altra cosa che potrebbe portarti al blocco sono appunto i relé, quelle schede da 8 relé sono note per introdurre problemi se alimentate in comune con Arduino, tu come le alimenti? L'ideale è separare nettamente alimentazione della mega dai relé (ovvero due alimentatori separati e evitare di mettere in comune anche i GND) se cerchi sul forum troverai mlte discussioni a riguardo.
La terza cosa che mi viene in mente che può portare a comportamenti "anomali e bizzarri" è l'utilizzo dei collegamenti a mezzo breadboard su progetto definitivo, se hai anche solo una minima capacità di saldare e un saldatore ti consiglio di effettuare i collegamenti in modo più stabile a mezzo di schede "millefori"