// Stai leggendo ...

Fonera

Fonera e I2C Bus da oggi una realta

FoneraE’ stato sviluppato anche I2C bus per la fonera!! Probabilmente chi non è pratico starà pensando: “e a che mi serve?”. Ebbene I2C è un protocollo utilizzato nel campo elettronico per il quale sono state sviluppate molti devices (dal più conosciuto e utilizzato sensore di temperatura, a multiplexer ,e a ben altro).

Pensate alle possibili applicazioni: potreste sapere da remoto la temperature ambientale del posto in cui aveta lasciato la fonera. Inoltre in altri progetti hanno collegato alla fonera anche triac per pilotare luci (o altre apparecchiature) che necessitano di ben 220V per funzionare.

Utilizzando 4 linee GPIO (General Purpose Input Output), un inverter, qualche resistenza, ed un minimo di passione/conoscenza nel campo dell’elettronica, da oggi potrete sbizzarrirvi nella creazione di svariatati accessori per casa: grazie ai device I2C, e alla versatilità del piccolo social router, otterrete DOMOTICA A BASSO COSTO :)

Modifica

Cosa vi serve per iniziare? Prima di tutto una fonera, poi un 74LS05, delle resistenza da 10 KOhms, e poi naturalmente dei device I2C bus. Per questo progetto è stato scelto il DS75 della maxim-ic.

Il progetto è sviluppato da un francese che per ora ha utilizzato solo 4 GPIO ed ha scelto quelle piu’ semplici da raggiungere (quelle che trovate sul connettore SW1 affianco al connettore Ethernet). I pins 1 e 2 sono stati dedicati per i segnali SDA, mentre i PIN 5 e 6 per SCL.

Il kernel linux già supporta il protocollo I2C, e per questo è stato sufficiente sviluppare solo un software per la gestione dei segnali. L’algoritmo è supportato dal driver I2C-algo-bit che si dovrà attivare come i2c-core dal nuovo kernel (sotto forma di moduli, oppure all’interno dello stesso). Per la realizzazione è stata scelta l’opzione moduli in quanto piu facilmente usabile in un ambiente di sperimentazione.

Il driver nominato i2c_gpio è disponibile http://www.lefinnois.net/fonerai2c/i2c_gpio.tar.gz con un README dettagliato.

Per testare il BUS è stato utilizzato il programma i2cdetect del progetto lm-sensors. Questo programma permette di fare una scansione del BUS alla ricerca di componenti I2C.

La versione adattata è disponibile nel progetto OpenWRT http://www.lefinnois.net/fonerai2c/i2cdetect.tar.gz.

Nel file troverete anche il file ds75ioctl che permetterà di comunicare con il sensore di temperatura.

Ecco l’esempio:

insmod i2c-algo-bit i2c_debug=3 bit_test=1
insmod i2c_gpio inverted=1

Nei logs (che potete vedere con dmesg)

i2c-algo-bit.o: (0) scl=128, sda=16
i2c-algo-bit.o: (1) scl=128, sda=0
i2c-algo-bit.o: (2) scl=128, sda=16
i2c-algo-bit.o: (3) scl=0, sda=16
needed 1 jiffies
i2c-algo-bit.o: (4) scl=128, sda=16
i2c-algo-bit.o: GPIO adapter passed test.
: hw routines registered.
i2c_adapter i2c-0: adapter GPIO adapter registered
i2c-dev: adapter GPIO adapter registered as minor 0
gpio_i2c: module loaded
gpio_i2c: inverted outputs

Poi usiamo i programmi i2cdetect e ds75ioctl :

root@OpenWrt:/# i2cdetect -l
i2c-0   i2c    GPIO adapter  Algorithm unavailable

Facciamo la scansione del bus

root@OpenWrt:/# i2cdetect 0
WARNING! This program can confuse your I2C bus,
cause data loss and worse!
I will probe file /dev/i2c-0.
I will probe address range 0x03-0x77.
Continue? Y/n
0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          XX XX XX XX XX XX XX XX XX XX XX XX XX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
40: XX XX XX XX XX XX XX XX 48 XX XX XX XX XX XX XX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
70: XX XX XX XX XX XX XX XX

E all’indirizzo 0×48 è stato trovato il DS75.
Interroghiamo il device:

root@OpenWrt:/# ds75ioctl -d /dev/i2c-0 -a 0x48
23.81

Come risultato abbiamo la temperatura ambientale!!!

Qui trovate il sito dello sviluppatore:

http://www.lefinnois.net/dotclear/index.php?2007/05/05/41-un-bus-i2c-pour-la-fonera

e tutti i links degli schemi, driver e software necessari:

http://www.lefinnois.net/fonerai2c/i2c_gpio.pdf

http://www.lefinnois.net/fonerai2c/i2c_gpio.tar.gz

http://www.lefinnois.net/fonerai2c/i2cdetect.tar.gz

Per il momento abbiamo solo riportato la notizia, ma pensiamo anche di testarla e di riportarne i risultati. Se qualcuno riesce a farlo prima di noi, vi preghiamo di renderci partecipi delle vostre sperimentazioni.

NOTE: Lo staff di Liberailvoip non vuole in alcun modo promuovere un’ utilizzo del social router Fonera contrario alle condizioni d’acquisto sottoscritte dagli utenti.Ogni singolo utente è L’UNICO responsabile del buon esito del progetto FON.Le nostre sono solo sperimentazioni dimostrative delle infinite potenzialità di questo router, il cui firmware, rilasciato sotto licenza GPLv.2, è liberamente modificabile e personalizzabile.Vi invitiamo pertanto a ricaricare il firmware ufficiale al termine delle vostre prove. Non potremo essere ritenuti responsabili di un uso distorto delle informazioni reperibili in questa pagina.

 

Commenti

commenti


I commenti all'articolo

15 commenti for “Fonera e I2C Bus da oggi una realta”

  1. [...] grado di accendere o spegnere le luci di casa. Per ulteriori informazioni potete far riferimento a questo post. la, [...]

    Commentato da I mille utilizzi della Fonera | iltuoweb blog | maggio 6, 2007, 16:28 |
  2. Bellissima notizia.
    Secondo me è nel dna della fonera un utilizzo di questo tipo.
    Il bus I2c apre infinite possibilità di utilizzo nel campo della domotica e non solo.
    La mia idea è quella di fare una stazione meteo con la fonera, magari alimentandola con un piccolo pannello solare, con un po di sensori I2c diventa fattibilissimo… e divertentissimo da fare..

    Commentato da Fabrizio | maggio 7, 2007, 12:43 |
  3. Si veramente utilizzando I2C si puo’ fare di tutto con un minimo di impegno.
    Se fosse possibile ti pregherei di farci pervenire il tuo progetto una volta ultimato.

    Commentato da michele | maggio 7, 2007, 13:15 |
  4. [...] Una volta terminato il montaggio ed averlo connesso al fonera (alle porte GPIO che ho indicato qui sulla sinistra) passate ad installare il software (tutte le informazioni relative al driver, e le istruzioni per utilizzarlo le trovate al post precedente) [...]

    Commentato da Ma è una Fonera o una stazione meteo? I2C Seconda Puntata: oggi lezione pratica » Libera il VoIP | maggio 21, 2007, 01:39 |
  5. Sto proprio svoluppando la mia tesi sull’utilizzo della comunicazione via powerline in ambito domotico. Appena avrò terminato i moduletti da interfacciare alla rete elettrica, farò qualche esperimento.

    Nel frattempo dovrei procurarmi una fonera, anzi due. Qualcuno mi può passare un paio d’inviti per acquistarle a 20 euro ciascuna?

    Vi ringrazio, siete mitici e i vostri articoli sono molto interessanti!

    Continuate così.

    Commentato da Saint | giugno 2, 2007, 18:57 |
  6. Se vai su http://www.vocesuip.com c’era un post apposito nella sezione OFFTOPIC in cui ci scambiavamo gli inviti per avere le fonera

    ciaooo :)
    Skumpic

    Commentato da skumpic | giugno 2, 2007, 19:16 |
  7. Ciao,
    noi abbiamo provato a seguire la guida.

    All’inizio con kamikaze 7.07 e pacchetti compilati ad hoc, poi con kamikaze 7.06 e i pacchetti ipk presenti sul sito di lefinnois, infine con kamikaze 7.06 e pacchetti compilati ad hoc.

    Il risultato migliore che siamo riusciti ad ottenere è che, dopo aver caricato i2c-algo-bit, provando a caricare i2c_gpio (tutto come da istruzioni), la fonera ritorna un errore del tipo “bus i2c seems to be busy”, con “jiffies 0″ e conseguente non-caricamento del modulo.

    Idee?

    Abbiamo provato a rifare anche il circuito (magari c’era un problema hardware) ma non ha giovato. Anzi, l’errore lo da anche senza alcun circuito collegato.

    Ciao e grazie,
    matteo – milk

    Commentato da milk | agosto 13, 2007, 23:29 |
  8. Ciao,
    sembra un problema al circuito. Il driver si aspetta SCL e SDA UP quando lo lanci. Verifica con un tester se hai 5V in entrambi. Inoltre potrebbe anche essere che hai usato fili troppo piccoli.

    Ciao

    Commentato da Michele | agosto 14, 2007, 11:20 |
  9. Grazie Michele per la pronta risposta.

    Detesto fare lo spaccaballe della situazione ma non so proprio dove sbattere la testa (a dire il vero siamo in tre).

    Ho ricontrollato tutto, ed ho provato a misurare il misurabile.

    All’avvio abbiamo:
    sdai 0.75v
    sdao 1.22v
    scli 1.42v
    sclo 1.22v

    Caricando i2c_algo_bit non cambia niente, mentre caricando i2c_gpio ottengo:
    sdai 0.57v
    sdao 0.0v
    scli 2.21v
    sclo 0.0v

    E l’errore che trovo in dmesg è:
    i2c-algo-bit.o: (0) scl=128, sda=0
    i2c-algo-bit.o: GPIO adapter seems to be busy.
    needed 0 jiffies
    gpio_i2c: adapter GPIO adapter registration failed

    Ora proverò a sostituire l’integrato… così, per provare… non so più che pensare!

    Ciao,
    matteo

    Commentato da milk | agosto 14, 2007, 16:26 |
  10. Un saluto a Udine (non so se siete tutti di codroipo :-) )
    Comunque avevo avuto lo stesso identico problema.
    Potrebbe essere l’alimentazione che non e’ buona, un problema di massa, fili troppo piccoli o l’integrato. Usa espressamente quello indicato.
    Non ricordo piu’ di tanto in quanto da quella data non ho toccato piu’ il circuito.

    Commentato da Michele | agosto 14, 2007, 16:49 |
  11. Presi dallo sconforto più totale abbiamo un’ultima domanda: che versione hardware di fonera è stata usata? la 2100 o la 2200? noi con 2 fonere versione 2100 e 3 diversi circuiti con 4 integrati… otteniamo sempre lo stesso errore!!!

    magari dobbiamo solo usare fonera più recente…

    ciao e grazie (sigh!)
    matteo

    Commentato da milk | settembre 18, 2007, 23:12 |
  12. Prova cosi quando carichi i2c_algo_bit usa bit_test=1 e prova a vedere se riesci a legegre le seguenti configurazioni

    1 – Leggi se SDA=up SCL=up
    2 – metti SDA down e devi leggere sda=down scl=up
    3 – metti SDA up e devi leggere SDA=up SCL=up
    4 – metti SCL down e devi leggere SDA=up SCL=down
    5 – metti SCL up e devi leggere SDA=up SCL=up

    Se questi test danno l’esito positivo dovrebbe funzionare
    Ricordati che devi usare inverted=1 quando usi insmod i2c_gpio con 74HC05

    Ciao

    Commentato da Michele | settembre 20, 2007, 14:36 |
  13. Salve a tutti, ho provato giorni fa ad usare il 74LS05 con il PCF8574 ma ho riscontrato lo stesso identico problema anchio…Quando carico i driver ricevo il seguente messaggio: “bus i2c seems to be busy”…Non so proprio più come poter risolvere questo problema…Inoltre ho notato anche che se cerco di caricare i driver senza l’opzione bit_test=1, si caricano perfettamente…ma poi non funziona niente, o meglio accade una cosa molto strana: quando provo a dare il comando “i2cdetect 0″ mi dice che trova tutti gli indirizzi presenti sul bus ! Come posso fare ?

    Commentato da M@tteo | ottobre 6, 2007, 23:31 |
  14. stesso problema anche qui.
    fonera 2100, circuito realizzato con 72hc05

    se carico i2c-algo-bit con bit_test=1, in dmesg mi trovo “bus i2c seems to be busy” e i2c-gpio nemmeno carica.

    se invece carico i2c-algo-bit senza parametri, i2c-gpio carica senza errori ma la scansione del bus con i2cdetect mi torna che tutti gli indirizzi sono disponibili.

    Qualcuno ha consigli?
    grazie

    Commentato da Pierlo | marzo 19, 2010, 01:40 |
  15. Ciao Michele,
    sto cercando grossomodo di fare ciò che hai fatto te (vorrei collegare alla Fonera più di un sensore).
    Mi potresti dire l’utilità dell’inverter in questo caso? scusa la domanda banale.

    Mandi

    Commentato da Daniele Simonin | aprile 3, 2012, 16:07 |

Lascia un commento

Devi essere autenticato per lasciare un commento.