Autore Topic: Espandere GPIO fonera  (Letto 19649 volte)

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #105 il: Luglio 22, 2010, 10:01:24 pm »
Ed ecco qua il ds 1621 e il pcf8574  sullo stesso bus.
Codice: [Seleziona]
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:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --                        
root@OpenWrt:~#
pcf8574 -d /dev/i2c-x -a address -w mask -r -v
root@OpenWrt:~# pcf8574 -d /dev/i2c-0 -a 0x38 -r -v
Testing
LSB                  MSB
 1  1  1  1  1  1  1  1
root@OpenWrt:~# ds1621 -d /dev/i2c-0 -a 0x48
21.50
root@OpenWrt:~#

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #106 il: Luglio 27, 2010, 04:54:30 pm »
Il ds1307 ora funziona... era la scheda comperata in corto :| e quindi non bastava cambiare il ds1307.

@silverfox
l'applicativo ds1307 funziona in parte sul wrt54gl
Codice: [Seleziona]
root@OpenWrt:/# ds1307             
Usage :
ds1307 -d /dev/i2c-x [-s] [-h] [-t time]
All times are in MMDDhhmmCCYY.ss format
-s - set system time to rtc time
-h - set rtc time to system time
-t - set rtc time to 'time'
root@OpenWrt:/#
root@OpenWrt:/# ds1307 -d /dev/i2c-1 -t 121212121212.12
hardware clock set
root@OpenWrt:/#
root@OpenWrt:/# ds1307 -d /dev/i2c-1                   
121212122012.43

ma non funzionano le opzioni -h e -s per settare il rtc, vanno in Segmentation fault

Codice: [Seleziona]
root@OpenWrt:/# ds1307 -d /dev/i2c-1 -s
Segmentation fault
root@OpenWrt:/#
root@OpenWrt:/# ds1307 -d /dev/i2c-1 -h
Segmentation fault
root@OpenWrt:/#

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #107 il: Luglio 27, 2010, 05:34:33 pm »
Ho fatto due termometri con il ds1621 utilizzando l'involucro di due adattatori usb-serial mai andati...
saldati e infilati dentro e poi un bagno di silicone... questi ds1621 son così piccoli e delicati che una protezione ci va proprio.
Ora ci metto una retina sopra...




SilverFox89

  • Full Member
  • ***
  • Post: 183
    • Mostra profilo
    • Fonera Repository
    • E-mail
Re: Espandere GPIO fonera
« Risposta #108 il: Agosto 01, 2010, 12:41:08 pm »
Ottimo lavoro!!!

Sono mancato qualche giorno e ti sei dato alla pazza gioia  :lol:

Per l'applicativo del ds1307 non so che dirti..mi sembra strano che funzioni sulla Fonera e non vada sul WRT forse utilizzano librerie diverse o compilate diversamente..purtroppo non sono addentrato all'argomento  :| bisognerebbe fare un p? di debug..
Fonera Repository -> http://silverfox89.dyndns.org/

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #109 il: Agosto 02, 2010, 01:41:08 pm »
? pure una condanna quando ci si mette dietro a 'ste cose :-D
comunque senti, tu dicevi di mettere delle resistenze di pull-up da 2,2kΩ e funzionano ma in molti siti ho trovato che le resistenze devono essere da 4,7KΩ... hai qualche dritta in proposito.

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #110 il: Agosto 02, 2010, 05:20:51 pm »
supponiamo ora di dover disattivare la 7 e attivare la 2 senza disattivare la 1 la 3 e la 5 tramite script, quindi che non "vede" cosa ci sta attivato e cosa no.
Dovr? leggere il valore all'indirizzo 0x38 (in esadecimale), trasformarlo in binario, controllare quali bit sono attivi, memorizzarli, costruire un nuovo numero binario che tenga conto dei bit da portare a "0", cambiare a "1" quelli attivati dall'ultimo comando, controllare se i primi o secondi 4 bit sono uguali a 0, invertire o meno la sequenza, trasformare il tutto in esadecimale e darlo in pasto a i2cset. Mi sembra complicato. o ci sta anche qui una soluzione "umana".
mi cito perch? ho fatto uno script  integrandolo nella webif  che risolve il problema... se c'? di meglio sempre pronto a prenderlo.

prima vado a leggere lo stato, dividendolo, dei valori del pcf8574
Codice: [Seleziona]
for n in $pin1 $pin2  $pin3  $pin4 $pin5 $pin6 $pin7 $pin8;do
        eval stato$n="$(echo "$(pcf8574 -d /dev/i2c-$bus -a $indirizzo -r -v)" | sed -n '3p' | awk '{ print $('$n') }')"
done
poi controlla il valore passato dalla pagina (ACCENDI o SPEGNI i vari pin) e fa il resto
Codice: [Seleziona]
for n in $pin1 $pin2  $pin3  $pin4 $pin5 $pin6 $pin7 $pin8;do
        pin=FORM_npin$n
        eval pin=\$$pin
        statozero="0000"
                if equal $pin "ACCENDI" ; then
                        eval stato$n="0"
                fi
                if equal $pin "SPEGNI" ; then
                        eval stato$n="1"
                fi
                if ! equal $pin " " ;then
                        stato="$stato8$stato7$stato6$stato5$stato4$stato3$stato2$stato1"
                        statopin2="$stato1$stato2$stato3$stato4"
                        statopin1="$stato5$stato6$Stato7$stato8"
                        if equal $statopin1 "0000" ;then
                                stato="$stato4$stato3$stato2$stato1"
                        fi
                        if equal $statopin2 "0000" ;then
                                stato="$statopin8$stato7$stato6$stato5$statozero"
                        fi
                        codice="$(echo "ibase=2; $stato" | bc)"
                        codiceesa="$(echo "obase=16; $codice" | bc)"
                        echo "$(pcf8574 -d /dev/i2c-$bus -a $indirizzo -w 0x$codiceesa)"
                fi
done

Come si vede ho utilizzato "bc" per trasformare il binario in esa.
Funziona.

« Ultima modifica: Agosto 02, 2010, 09:41:30 pm da truthahn »

djsmoye

  • Novellino
  • *
  • Post: 5
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #111 il: Dicembre 21, 2010, 10:27:55 pm »
Buona sera a tutti, scusate per il mio italiano ma fa 20 anni che non o piu parlato (n? scritto) -)

O provato il bus i2c con 2 fili ? pull-up da 1k, 2,2k ? 10k ma posso fare quel che voglio con "i2cdetect 0" non trova mai il mio pcf7574 o ds75 ? anch? mcp23009.

Con pull-up 2,2k:

Codice: [Seleziona]
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] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@OpenWrt:~#


Con Pull-up 1k
Codice: [Seleziona]
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] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@OpenWrt:~#


Con Pull-up 10k
Codice: [Seleziona]
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] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77
root@OpenWrt:~#

Sensa niente sul bus dopo un minuto di scan:
Codice: [Seleziona]
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] y
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
root@OpenWrt:~#

seguito queste spiegazioni: http://code.google.com/p/fonera-i2c/wiki/FoneraHacks

Qualcuno a gia provato ? riuschito i2c con due fili?

Grazzie mille per il vostro aiuto :-)

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #112 il: Dicembre 21, 2010, 11:48:06 pm »
Ciao djsmoye,
Quello riportato negli ultimi post di questo 3d ? con 2 fili, che poi ? sfociato in questo...
http://www.nabuk.org/f/index.php?topic=2361.msg24050#msg24050.
Fai molta attenzione nelle saldature e nei collegamenti.

djsmoye

  • Novellino
  • *
  • Post: 5
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #113 il: Dicembre 23, 2010, 11:32:36 pm »
Grazie a t?, continuer? con questo thread.

fpaliuc

  • Full Member
  • ***
  • Post: 140
  • www.cristinasurbera.it
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #114 il: Gennaio 13, 2011, 02:20:19 pm »
Vorrei collegare alla Fonera 2 sensori di temperatura e 4 rel? ma non ho capito bene come vanno collegati questi al PCF8574. Qualcuno che mi potrebbe dare una mano?

Grazie

truthahn

  • Global Moderator
  • Hero Member
  • *****
  • Post: 1546
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #115 il: Gennaio 13, 2011, 06:34:34 pm »
Cosa intendi? Fisicamente? A quali pin?
questa ? la scheda che ho preparato io...http://www.nabuk.org/f/index.php?topic=2361.msg24050#msg24050

fpaliuc

  • Full Member
  • ***
  • Post: 140
  • www.cristinasurbera.it
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #116 il: Gennaio 13, 2011, 08:13:25 pm »
Si, fisicamente non so come collegare i 2 sensori di temperatura e poi collegare i pin del PCF ai rel?. La tua scheda l'ho vista...ma non c'? lo schema da seguire. :)

fpaliuc

  • Full Member
  • ***
  • Post: 140
  • www.cristinasurbera.it
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #117 il: Febbraio 11, 2011, 02:53:01 pm »
Oggi mi sono arrivati i ds1621, termometri tanto per capirci, cos? visto che c'ero ho modificato un wrt54gl portando all'"aperto" la seriale, la jtag, la 3,3 V, la 12 V e naturalmente il bus i2c (2 bus quello sui gpio 4 e 7 3 quello sui 2 e 3)
Intanto per provare il ds1621 l'ho messo volante.

Al primo colpo il bel termometrino ha funzionato.. Coviene comunque prendere i dip, questi hanno una dimensione di pochi millimetri e saldarci i cavi ci vuol... tanta ma tanta pazienza.
Codice: [Seleziona]
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:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --                        
root@OpenWrt:~#
e con la comodissima utility postata da SilverFox

Codice: [Seleziona]
root@OpenWrt:~# ds1621 -d /dev/i2c-0 -a 0x48
22.50
root@OpenWrt:~#





Mica male ??? Intendo la temperatura. Sono nel mio eremo sul monte e ho dormito tutta estate con la coperta. :-D

Invece non riesco proprio a far andare il ds1307. :?
Ho modificato il driver del DS1621 per aumentare la precisione con quale restituisce la temperatura.  Magari qualcuno ? interessato.

marco1979

  • Novellino
  • *
  • Post: 34
    • Mostra profilo
    • E-mail
Re: Espandere GPIO fonera
« Risposta #118 il: Febbraio 11, 2011, 09:34:13 pm »
...anche se il tempo a disposizione ? pochissimo mi avete fatto venir una voglia matta di provare sto bus i2c  :lol:
avevo gi? acquistato al tempo due ds1621, ho provato a collegarne uno a 2 gpio dell' agpf con le due R da 2,2k, carico il modulo con:
Codice: [Seleziona]
insmod i2c-gpio-custom bus0=0,9,10 poi
Codice: [Seleziona]
i2cdetect 0 ma
Codice: [Seleziona]
Error: Could not open file `/dev/i2c-0' or `/dev/i2c/0': No such file or directory...ho controllato mille volte i colegamenti e sembra tutto ok..boh

@fpaliuc
riesci mica a passarmi il package i2c-utils per bcm63xx?...grazie mille

fpaliuc

  • Full Member
  • ***
  • Post: 140
  • www.cristinasurbera.it
    • Mostra profilo
Re: Espandere GPIO fonera
« Risposta #119 il: Febbraio 11, 2011, 10:34:03 pm »
...anche se il tempo a disposizione ? pochissimo mi avete fatto venir una voglia matta di provare sto bus i2c  :lol:
avevo gi? acquistato al tempo due ds1621, ho provato a collegarne uno a 2 gpio dell' agpf con le due R da 2,2k, carico il modulo con:
Codice: [Seleziona]
insmod i2c-gpio-custom bus0=0,9,10 poi
Codice: [Seleziona]
i2cdetect 0 ma
Codice: [Seleziona]
Error: Could not open file `/dev/i2c-0' or `/dev/i2c/0': No such file or directory...ho controllato mille volte i colegamenti e sembra tutto ok..boh

@fpaliuc
riesci mica a passarmi il package i2c-utils per bcm63xx?...grazie mille

Prova a vedere se esiste il file /dev/i2c-0. Se esiste, verifica i permessi .