SDA e SCL connessi ad un modulo LCM1602 (e display) e un secondo arduino

Ciao e grazie in anticipo per le eventuali risposte.
Premetto che è il mio primo post in questo forum. Ho già cercato qualche risposta al mio problema senza esito...spero quindi di non andare ad inserire una questione già risolta.
Ho sviluppato un piccolo progettino che tramite la libreria wire.h mette in comunicazione due schede Arduino. Un Arduino Uno, utilizzato come master e un Arduino Nano utilizzato come slave, in futuro il numero degli slave dovrebbe aumentare di un paio di unità. Lo slave attualmente presente è connesso ad un sensore mente il master è connesso ad un display (con modulo LCM1602, quindi utilizzando SDA e SCL del master) che tramite la libreria LiquidCrystal_I2C visualizza lo stato del sensore sullo slave. Master e slave sono tra loro connessi sui relativi pin SDA e SCL e condividono GND.
Tutto funziona correttamente se entrambe le schede sono accese. Mi sono però posto il problema di qualche possibile malfunzionamento futuro, nello specifico la morte della scheda slave. Ho quindi provato a toglire alimentazione a quest'ultima con la conseguenza che la scheda master smette di lavorare correttamente (rimane come "incantata"... giusto per verifica ho provato a caricare sul master uno sketch che non preveda la comunicazione tra i due Arduino e il comportamenteo non è cambiato) anche dopo un reset. Se disconnetto i cavetti da SDA e SCL dello slave spento il master riprende a lavorare correttamente. Se ridò alimentazione allo slave, dopo un reset, tutto riprende a funzionare.
Non mi è chiaro il perchè di questo comportamente e sarei curioso di avere una spiegazione e, se possibile, vorrei sapere se esite una soluzione al problema.
Grazie

  1. quando manca alimentazione il 5V e il GND sono allo stesso potenziale; si puó dire anche che sono “in corto”
  2. tutti gli integrati per proteggere le entrate da scariche elettrostatiche hanno dei diodi dal entrata sia al alimentazione che a GND, che scaricano qualsiasi tensione sopra la tensione di alimentazione (+0,7V del diodo) e al di sotto di GND (anche qua -0,7V)

Quando sul slave non hai tensione di aliemntazione hai un diodo collegato (virtualmente) tra SDA e SCL e GND. La tensione puó diventare al massimo 0,7V.

Per questo non puó funzionare.

Rimedio che io sappi solo dei circuiti abbastanza complicati.

Ciao Uwe

Grazie per la risposta.
Mi sembra di capire che in caso di caduta di un qualsiasi slave in un sistema come questo comporti un non funzionamento completo.
Quindi le uniche alternative sono date dall'utilizzo di un altro sistema di comunicazione tra le schede...ethernet, wireless o bluetooth? O esiste qualche altro sistema "tipo" wire/SDA-SCL?

Visto che I2C funziona a distanze cortre e visto che normalmente l’alimentazione é comune a tutti slave I2C non c’é il problema che un slave blocca il bus.

Tutti gli altri sistemi costano di piú.
Ciao Uwe

Ciao, l'i2c è un protocollo "on board": non è previsto che le periferiche possano scollegarsi o essere disalimentate. Per il tuo uso, se devi prevedere questa opzione, puoi utilizzare il can oppure l'rs485 (che ti garantiscono anche distanze di decine di metri).

Stefano