sincronizzare due arduino

807 views
Skip to first unread message

Marco Clocchiatti

unread,
Feb 10, 2014, 3:47:07 AM2/10/14
to treviso_ardui...@googlegroups.com
dopo aver giocato un pochino con il mio arduino e l'accelerometro adxl345, mi sta venendo voglia di provare a lavorare contemporaneamente con più sensori.

tuttavia, ogni singolo arduino uno dispone di due soli pin dedicati al protocollo I2C (A5 e A4), che permettono di scambiare dati con un solo sensore alla volta.
per utilizzare due sensori, quindi, è necessario disporre di due unità arduino uno distinte.

io le ho, ma mi pongo il problema di sincronizzarli.
infatti, per me, è estremamente importante allineare le misure di tempo dei due oggetti.

quale può essere la tecnica migliore per riuscirci?
devo passare attraverso la porta seriale dei due oggetti, connessa al pc esterno o posso stabilire una interconnessione diretta tra gli arduino?

Mirco Piccin

unread,
Feb 10, 2014, 3:59:49 AM2/10/14
to treviso_ardui...@googlegroups.com
Ciao,

> dopo aver giocato un pochino con il mio arduino e l'accelerometro adxl345,
> mi sta venendo voglia di provare a lavorare contemporaneamente con più
> sensori.
>
> tuttavia, ogni singolo arduino uno dispone di due soli pin dedicati al
> protocollo I2C (A5 e A4), che permettono di scambiare dati con un solo
> sensore alla volta.
> per utilizzare due sensori, quindi, è necessario disporre di due unità
> arduino uno distinte.

Al canale i2c puoi collegare più device, è sufficiente assegnargli
indirizzi diversi
Lettura propedeutica:
http://tronixstuff.com/2010/10/20/tutorial-arduino-and-the-i2c-bus/

> io le ho, ma mi pongo il problema di sincronizzarli.
> infatti, per me, è estremamente importante allineare le misure di tempo dei
> due oggetti.
>
> quale può essere la tecnica migliore per riuscirci?
> devo passare attraverso la porta seriale dei due oggetti, connessa al pc
> esterno o posso stabilire una interconnessione diretta tra gli arduino?

puoi collegare tra loro le due arduino direttamente via seriale (o
seriale software), via i2c, via spi, rs485, etc etc.
La scelta dipende dalla velocità richiesta, distanza tra le arduino,
disturbi presenti, comunicazione sincrona/asincrona, etc.
Qui una discussione sul tema:
http://forum.arduino.cc/index.php?topic=15233.5
(ma ne trovi molte in rete)

Saluti
M



> --
> --
> ----
> Per mandare un messaggio al gruppo "Treviso Arduino User Group", invialo a:
> treviso_ardui...@googlegroups.com
> Per annullare l'iscrizione a questo gruppo, invia un'email a:
> treviso_arduino_use...@googlegroups.com
> Per altre informazioni, visita la url:
> http://groups.google.com/group/treviso_arduino_user_group
>
> ---
> You received this message because you are subscribed to the Google Groups
> "Treviso Arduino User Group" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to treviso_arduino_use...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.

Marco Clocchiatti

unread,
Feb 10, 2014, 3:39:56 PM2/10/14
to treviso_ardui...@googlegroups.com


Il giorno lunedì 10 febbraio 2014 09:59:49 UTC+1, pictux ha scritto:
Al canale i2c puoi collegare più device, è sufficiente assegnargli
indirizzi diversi

ottimo. allora è proprio quello che devo fare.
a pagina 18, si capisce che il mo accelerometro può rispondere a due indirizzi diversi, modificando lo stato del canale CS (alt address).

Purtroppo, però, fino ad ora sono riuscito ad usare solo la configurazione con CS=HIGH.
Con CS basso, il testo delle specifiche mi confonde un po':

"
With the ALT ADDRESS pin high, the 7-bit I2C address for the device is 0x1D, followed by
the R/W bit. This translates to 0x3A for a write and 0x3B for a read. An alternate I2C address
of 0x53 (followed by the R/W bit) can be chosen by grounding the ALT ADDRESS pin (Pin 12).
This translates to 0xA6 for a write and 0xA7 for a read.

In teoria, dovrei rinominare il dspositivo con 0x1D, anzichè 0x53. Ma non capisco bene il significato di quello che segue:
che cosa è quello 0x3A che poi diviene 0xA6? Io, nei miei sketch, non uso per nulla quei valori.

specifico che costruisco gli sketch partendo da questa guida minimale:

Marco Clocchiatti

unread,
Feb 11, 2014, 11:04:15 AM2/11/14
to treviso_ardui...@googlegroups.com
ok.
ho mangiato la foglia.

stavo facendo confusione tra il pin CS e il pin SDO, che, in modalità i2C, ha la funzione di ALT_ADDRESS.
forse ho anche fatto qualche test un po' distratto, che ha peggiorato le cose.

in realtà, modificando lo stato del pin SDO da 0 a 1 si cambia l'indirizzo da 0x53 a 0x1D senza altri problemi e si possono quindi utilizzare due accelerometri sullo stesso bus.
Reply all
Reply to author
Forward
0 new messages