Attuatori o led con indirizzi diversi in bus "i2c"?

Salve ragazzi, sono un dilettante percio ho paura delle vostre risposte troppo complicate :blush:!! ho appena scoperto questa tecnologia "i2c"..vorrei sapere se esiste un modo per inserire N attuatori (relè o led) ciascuno con un address diverso all'interno della rete bus.
vorrei fare tutto da me, sicuramente serve:

  • un microcontrollore che contenga l'indirizzo (esempio 0x50)
  • un led associato che si accende ad un byte inviato all'indirizzo di quel microcontrollore
    ho indovinato? manca qualcosa?

...un po cosi, ma con led classici monocolore:

Mi aiutate a realizzarlo anche nel codice arduino?

Grazieee :wink:

Stai sottovalutando un piccolo problema ... il bus I2C NON è nato per collegamenti a lunga distanza (max. qualche decina di cm) e quindi o ti complichi la vita usando dei chip che ne amplificano il segnale (ma te lo sconsiglio) o, per quello che vuoi fare tu ... passi su RS485 :wink:

Guglielmo

Perfetto!! grande. mi sai dare qualche indicazione? non ho mai sentito parlare di RS485 :disappointed_relieved:!!!.
Con i2c si puo aggiungere una periferica alla "catena" in qualunque momento (credo di aver capito questo leggendo, perdonami se sbaglio). A me interessava quella cosa, ed in più che con 2 cavi SDA SCL (pin di arduino analogici 4 e 5) + alimentazione, io potevo prolungare il circuito a mio piacimento inserendo sia dispositivi i2c di input come sensori sia output tipo led.

Ora con RS485 cosa cambierebbe?? come trasformare quel disegno in alto in rs485? :~

grazie!!!

Esiste tanta di quella documentazione sull'RS485 che neanche immagini ... fai una ricerca con Google per "RS485" per avere le specifiche ed un po' di schemi, poi falla per "Arduino RS485" per avere esempi e quant'altro.

Infine dai un'occhiata a questo datasheet : http://datasheets.maximintegrated.com/en/ds/MAX1487-MAX491.pdf :wink:

Guglielmo

Guglielmo grazie mille, purtroppo essendo davvero (dico davvero!!) un dilettante è molto difficile per me anche interpretare le ricerche su google!!..ecco perche mi serva un aiuto un po più umano :grin:. Finora ho trovato mille esempi, sono stato ore, ma molti progetti che ho trovato sono con connessioni tra arduini diversi (usati come slave) oppure super-schede con relè. Sta di fatto che non riesco a capirli bene perché manca sempre qualcosa... =(

per esempio:
http://yourduino.com/sunshop2/index.php?l=product_detail&p=325
qui c'è il modulo max485 che mi hai consigliato. ma sorgono tanti dubbi:

  • che "indirizzo" hanno i singoli max485...?
  • come collego un led o qualcosa da accendere ad ogni slave max485..?
  • come come collego l'arduino master al posto di quel "USB to TTL"...?

Guglielmo, se da esperto ritieni che io debba rimandare questo progetto per mancanza ora di conoscenze dimmelo tranquillamente, se invece si puo fare in modo semplice allora te ne sarei grato..

grazie di tutto in ogni caso!! XD

Carlo,
il problema è che devi complicare un po' lo schema ...

Dovrai prevedere un Arduino master che colloqui con una serie di Arduino slave, uno per ogni relays/led che vorrai controllare in remoto.

Per gli slave remoti va bene anche una schedina con a bordo un ATtiny o, non volendo realizzare delle schedine tu, va bene anche un Arduino Micro (http://arduino.cc/en/Main/ArduinoBoardMicro).

I MAX485 li dovrai collegare a due pin dei vari micro, pin che userai come porta seriale tramite la libreria "SoftwareSerial" (... in teoria li potresti anche collegare direttamente alla seriale di Arduino, pin 0 e 1, ma poi perdi la possibilità di usarla per il debug).

Infine tutto dovrà essere gestito dal software ... i master che chiama lo slave con cui vuole parlare e lo slave che risponde. Gli indirizzi li dovrai assegnare tu da software, ogni modulino un indirizzo diverso, ecc. ecc.

Insomma ... è un progettino che richiede comunque una discreta esperienza ... vedi tu ... :wink:

Guglielmo

Complicare non tanto.
I moduli da lui indicati, i blinkM, hanno a bordo un ATtini45 o 85 per la gestione del protocollo.
L'unica differenza con la RS485 che ci vuole anche il transrecevier. Per il resto, tutta la parte di gestione software è grosso modo ugualmente complessa.

pelcarlo:
Con i2c si puo aggiungere una periferica alla "catena" in qualunque momento (credo di aver capito questo leggendo, perdonami se sbaglio). ...
io potevo prolungare il circuito a mio piacimento inserendo sia dispositivi i2c di input come sensori sia output tipo led.

Ora con RS485 cosa cambierebbe?? come trasformare quel disegno in alto in rs485? :~
grazie!!!

No, non é cosí semplice con la I2C. Visto che le linee vengono portata a +5V con una resistenza la estensione del bus dipende dalla capacitá delle linee e dal numero e tipo di dispositivi attacati. Se la capacitá é troppo elevata la resistenza non riece a portare in tempo utile il lvello logico a HIGH.
In conclusioe posso dire che con I2C piú di qualche metro e na decina di dispositivi non funionerá. Al massimo sono disponibili 127 indirizzi.

Il RS485 é un interfacciamento che funziona fino a 1000m e con un numero discreto di dispositivi ma devi scriverti Tu stesso un programma per gestire il flusso di dati tra i diversi dispositivi.

Se vuoi svincolarti da questi limiti la soluzione é che ogni dispositivo abbia un entrata e un uscita sulla quale ripete i dati ricevuti all'entrata se non sono destinati per se stesso.

Ciao Uwe

Grazie mille delle informazioni! mi serve tempo per vedere un po tutto quanto detto!
grazie!!!