Ciao a tutti, volevo fare una rete composta da 3 o 4 Arduini connessi tra loro in modalità multimaster attraverso l'interfaccia RS485. Ho pensato al modbus ma ho cercato un po' in rete ma mi rimangono dei dubbi:
Purtroppo gli arduino sono un po' distanti tra di loro. Il circuito con i max485 l'ho già fatto, Volevo usare il Modbus perchè ho anche scritto un semplice protocollo di comunicazione ma ho dei problemi, se faccio trasmettere un dato dall'arduino 1 all'arduino 2 nessun problema, ma quando tento di far andare i messaggi in entrambe le direzioni i messaggi non arrivano correttamente. Ho usato questa sequenza:
Arduino 1 setta il pin di direzione per trasmettere
Arduino 1 dice ad arduino 2 di settare/resettare un'uscita
Arduino 1 resetta il pin di direzione per ricevere
Arduino 2 riceve il messaggio e setta l'uscita
Arduino 2 setta il pin di direzione per trasmettere
Arduino 2 dice ad arduino 1 che ha ricevuto correttamente il messaggio
Arduino 2 resetta il pin di direzione per ricevere
Invece di settare/resettare le uscite desiderate ne setta/resetta altre, è come se il messaggio non arriva correttamente. Eppure ho anche fatto un sistema per controllare che i dati arrivino correttamente e funziona.
Ho anche provato ad aggiungere dei delay per essere sicuro che i messaggi siano arrivati completamente prima di utilizzarli ma niente !
@brainbooster
Non so dirtelo su 2 piedi, ma so dirti che le resistenze dipendono dalla capacitá parasita dei cavi; Metti resistenze anche molto piú basse di quella pull up che sono da 20 a 50kOhm.
Ciao Uwe
No no, forse mi sono espresso male, non ho usato l'I2C ho usato l' RS485 senza nessun protocollo già fatto. Praticamente se il programma è fatto in questo modo, funziona tutto (anche inviando tanti comandi)
Arduino 1 setta il pin di direzione per trasmettere
Arduino 1 dice ad arduino 2 di settare/resettare un'uscita
Arduino 1 resetta il pin di direzione per ricevere
Arduino 2 riceve il messaggio e setta l'uscita
Se invece aggiungo anche la parte dove "Arduino 2" rimanda indietro un messaggio di conferma non funziona:
Arduino 1 setta il pin di direzione per trasmettere
Arduino 1 dice ad arduino 2 di settare/resettare un'uscita
Arduino 1 resetta il pin di direzione per ricevere
Arduino 2 riceve il messaggio e setta l'uscita
+
Arduino 2 setta il pin di direzione per trasmettere
Arduino 2 dice ad arduino 1 che ha ricevuto correttamente il messaggio
Arduino 2 resetta il pin di direzione per ricevere
Per non impazzire ulteriormente avevo pensato di passare a Modbus che è già fatto e lavora già su RS485