stefanet
Posts: 13
Joined: Tue Jan 22, 2013 1:42 pm

Input Output GPIO

Fri Feb 15, 2013 4:42 pm

Salve,

leggendo la documentazione del GPIO del raspberry si fa riferimento che si possa leggere solo il valore HIGH o LOW, quindi solo lo stato binario.

E' possibile leggere i dati su queste porte?
Ovvero ho letto che è possibile leggere ad esempio i dati della temperatura del sensore ds18s20 tramite il modulo 1-wire. Gli esempi usano il pin #4 e non capisco se si può usare solo quello o anche gli altri vanno bene.
Ma se ad esempio uso il lettore rfid id-12 posso leggere questi dati? Sono riuscito a leggerli collegandolo alla porta UART, quindi tramite seriale, ma mi chiedevo se potessi usare altre porte e lasciarmi libera la seriale per altri scopi.

Inoltre ho comprato il chip mcp23017 (i2c) e mi chiedevo se potevo mettere questi componenti su questo chip e quindi leggere i dati tramite i2c.

Grazie
Stefano

3-4-Fun
Posts: 50
Joined: Sun Dec 23, 2012 3:25 pm

Re: Input Output GPIO

Fri Feb 15, 2013 6:22 pm

Prova a vedere qui
http://nathan.chantrell.net/20120602/ra ... der-board/

e qui
http://www.skpang.co.uk/blog/archives/575

Google è tuo amico, basta una piccola ricerca...

stefanet
Posts: 13
Joined: Tue Jan 22, 2013 1:42 pm

Re: Input Output GPIO

Fri Feb 15, 2013 9:29 pm

quei link li ho già visti, ma purtroppo non rispondono alla mia domanda...

se attacco ad esempio l'id-12 su un qualsiasi pin GPIO, posso leggere il tag che ci passo allo stesso modo che faccio utilizzando il pin UART?
O dai pin GPIO posso solo leggere il valore HIGH e LOW?

macca
Posts: 122
Joined: Tue Oct 16, 2012 9:14 am

Re: Input Output GPIO

Sun Feb 17, 2013 7:27 pm

I pin GPO sono esclusivamente digitali, quindi si possono leggere solo dati binari (1 o 0).
Alcuni pin possono essere configurati per funzionare con un protocollo particolare, ad esempio i pin 8 e 10 (dell'header) possono funzionare come seriale RS-232 TTL, i pin 3 e 5 come I2C e i pin 19, 21, e 23 come seriale SPI. A questi pin puoi collegare i dispositivi che utilizzano i relativi protocolli e utilizzare i driver del kernel di Linux per gestirli senza aggravio sulla CPU (vengono gestiti direttamente dall'hardware).
Ciò non toglie che puoi usare qualsiasi pin per gestire qualsiasi protocollo ma in questo caso è necessario implementare tutto via software (il cosiddetto bit-banging) con conseguente impegno di CPU e possibili malfunzionamenti dovuti alle tempistiche non precise.
Come leggere i dati veri e propri dai dispositivi collegati poi dipende dal dispositivo stesso, un convertitore A/D I2C ad esempio avrà un comando per leggere lo stato degli ingressi e ritornerà uno o due byte con il valore binario. Nei relativi datasheet troverai tutti i comandi che si possono inviare al dispositivo e i dati che questi ritornano.

stefanet
Posts: 13
Joined: Tue Jan 22, 2013 1:42 pm

Re: Input Output GPIO

Wed Feb 20, 2013 8:29 am

Grazie per la risposta ora è un po più chiaro...

ora devo riuscire a capire se posso intercettare il TAG mandato dall'ID-12 tramite mcp23017 e gestirlo quindi tramite i2c.

Tutto questo sarebbe solo per non utilizzare la porta UART del Raspberry :p

macca
Posts: 122
Joined: Tue Oct 16, 2012 9:14 am

Re: Input Output GPIO

Wed Feb 20, 2013 12:34 pm

L'MCP23017 è un I/O expander, in pratica è come avere altri 16 pin GPIO a disposizione, ma il fatto che comunichi via I2C non ti risolve il problema di comunicare con il dispositivo RFID, dovresti comunque implementare il protocollo via software con l'aggravante di passare attraverso l'I2C per ogni cambio di stato dei pin (e se non vado errato devi comunque inviare o leggere tutti i 16 bit ogni volta). A questo punto tanto vale utilizzare i GPIO del Raspberry direttamente.

Al limite, se proprio non vuoi usare l'UART del Raspberry, potresti trovare un PIC con I2C slave mode e UART (tipo il 16F690 se non vado errato), colleghi l'UART del PIC al chip RFID, l'I2C del PIC con il Raspberry, programmi il PIC in modo da rispondere ai comandi e interrogare l'RFID e sei a posto. Il PIC poi puoi usarlo anche per altro, tipo leggere dati analogici o come I/O expander con i pin rimanenti.

L'unico dubbio che mi viene, non conoscendo il chip RFID, è che probabilmente devi pollare in continuazione per sapere se è stata passata una tessera, mentre se usi l'UART direttamente non appena si passa una tessera ricevi i dati in background.

stefanet
Posts: 13
Joined: Tue Jan 22, 2013 1:42 pm

Re: Input Output GPIO

Wed Feb 20, 2013 2:06 pm

Uhm mi sembra un po troppo ingarbugliata come soluzione. Volevo solo sapere se era possibile avere questa possibilità in modo nativo, in modo da liberare la UART che magari in un futuro mi sarebbe potuta servire, ma da quello che dici non sembra essere possibile.

Non credo neanche che sia possibile collegare più device alla porta uart :p

Grazie

Return to “Italiano”