ciao a tutti,
sono nuovo del forum utilizzo arduino da un anno circa e avrei intenzione di utilizzare 2 RFID-RC522 con il mio arduino 2009.
su ogni codice esempio è riportato:
Read a card using a mfrc522 reader on your SPI interface
Pin layout should be as follows (on Arduino Uno):
MOSI: Pin 11 / ICSP-4
MISO: Pin 12 / ICSP-1
SCK: Pin 13 / ISCP-3
SS: Pin 10
RST: Pin 9
e nn so se è possibile utilizzarne due. qualcuno può delucidarmi? grazie!!
L'SPI è un bus su cui puoi connettere più devices, ma, contrariamente all' I2C, non esiste un metodo di indirizzamento software, bensì, ogni device, ha un pin di abilitazione (nel tuo caso credo che loro abbiano usato il 10 ... non so se modificabile).
Quindi, se puoi assegnare ad ogni pin di abilitazione pin differenti su Arduino, non c'è problema ...
Ricorda che SOLO UNdevice alla volta può essere abilitato (SS = LOW) e comunicare con il bus, gli altri devono essere deselezionati (SS = HIGH).
Verifica se la tua board porta all'esterno il piedino IRQ (Interrupt request) del micro mfrc522 (http://www.nxp.com/documents/data_sheet/MFRC522.pdf).
In quel modi inviando i segnali IRQ ai pin 2 e 3 di Arduino puoi selezionare il lettore solo quando necessità. Ovvero sarà il lettore a dirti che ci sono dati disponibili da leggere.
PaoloP:
Verifica se la tua board porta all'esterno il piedino IRQ (Interrupt request) del micro mfrc522
....
Paolo, occhio, mi sembra un tantino fuori dalla portata di qualcuno che non conosce il bus SPI non ti pare ...
... salvo che, come al solito ... non finisce che il programma glie lo fai tu e loro non imparano nulla XD XD
ripper88:
ho dimistichezza con la programmazione C ma vorrei capire se i pin dei due rfid sono comuni oppure no
Ok allora, scusa, mi sembra che siano due schede separate e ... non che siano due shield con inserimento obbligato sopra ad Arduino quindi ...
... i pin li collegherai come vuoi tu no ?
Ovvio MISO, MOSI, SCK .. sono obbligati, ma gli altri ... te li gestisci tu da software e li colleghi hai pin che vuoi !
Riporto qui una domanda che ripple ha posto da altra parte ... così continuiamo in un unico thread ....
ripper88:
ciao a tutti,
quando si hanno due shield (sd card e rfid o 2 rfid) che condividono gli stessi pin, nel caso specifico:
MOSI: Pin 11 / ICSP-4
MISO: Pin 12 / ICSP-1
SCK: Pin 13 / ISCP-3
SS: Pin 10
come si fa a farle funzionare entrambe, attivando una e disattivando l'altra? per esempio, leggo dall'rfid e quindi tengo disabilitata l'sd card
Come ti ho già spiegato, MOSI, MISO e SCK sono sempre in comune e non te ne devi preoccupare, quello che devi controllare è il pin SS che, se tenuto HIGH disabilita la scheda interessata, se posto in LOW la abilita.
Non mi sembra molto complicato ...
... da software dovrai semplicemente specificare dei pin in output ai quali collegherai i vari SS delle varie schede con cui vuoi parlare e, prima di farlo, porterai il pin della scheda selezionata a LOW, riportandolo ad HIGH quando avrai finito di parlare con quella scheda e vorrai passare ad un altra.
mi dispiace aver aperto un altro post comunque non avendo mai avuto prima questo tipo di problema non mi era ben chiaro il fatto dei pin comuni, dopo aver fatto ricerche credo di aver capito se avrò problemi chiederò in questo post. Grazie mille dell'aiuto!
ho fatto come mi hai detto:
il pin SS l'ho impostato nel void setup in questo modo:
pinMode(SS_PIN, OUTPUT);
nel void loop()
{
digitalWrite(SS_PIN, LOW);
ora il problema è che: o è HIGH o è LOW, il risultato è lo stesso, la shield comunica sempre; ho provato con un led ed effettivamente resta sempre acceso
Allora, il spero bene che il LED tu lo abbia collegato con una resistenza in serie o ... rischi di bruciare qualche cosa (ricorda che ogni singolo pin di Arduino NON può dare più di MASSIMO 40 mA, meglio 30 mA) ...
Comunque ... da quanto dici, sembra che stia fisso ad HIGH e quindi ... se il pin SS del modulo lo hai collegato allo stesso pin, il modulo NON può comunicare, visto che SS = HIGH significa disabilitato ... quindi c'è una incongruenza in quello che riporti ...
Poi, se stai usando una libreria, fai attenzione perché spesso queste controllano loro il pin SS, quindi, per fare una prova SERIA, elimina la libreria e prova senza. Il LED deve accendersi e spegnersi a seconda se sul pin scrivi HIGH o LOW.
l'incongruenza non è in quel che riporto in quanto il led funziona e allo stesso modo funziona il modulo rfid, non ci vuole molto a vedere la lettura di una card e notare un led acceso
ripper88:
l'incongruenza non è in quel che riporto in quanto il led funziona e allo stesso modo funziona il modulo rfid, non ci vuole molto a vedere la lettura di una card e notare un led acceso
invece si che c'è perchè se tu metti alto il pin ss il chip non comunica, se comunica vuol dire che il pin ss è low...
ripper88:
l'incongruenza non è in quel che riporto in quanto il led funziona e allo stesso modo funziona il modulo rfid, non ci vuole molto a vedere la lettura di una card e notare un led acceso
Ma guarda che il modulo mica smette di funzionare eh !!! Solo è disabilitato il bus SPI e quindi i dati non devono arrivare ad Arduino, mica spegne ed accende il modulo !!!
Comunque, se il LED rimane fisso acceso, capisci da solo che c'è qualche cosa che non quadra ... quindi, o la libreria che usi controlla lei (male) quel pin o c'è un errore ...