utilizzare 2 RFID-RC522 con arduino 2009

ciao a tutti,
sono nuovo del forum :slight_smile: 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? :slight_smile: 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 UN device alla volta può essere abilitato (SS = LOW) e comunicare con il bus, gli altri devono essere deselezionati (SS = HIGH).

Guglielmo

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.

grazie per le risposte :slight_smile: ho il piedino IRQ, come posso utilizzarne 2? :slight_smile:

hai una guida o un codice esempio?

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 ... :wink:
... salvo che, come al solito ... non finisce che il programma glie lo fai tu e loro non imparano nulla :grin: XD :grin: XD

Guglielmo

ho dimistichezza con la programmazione C ma vorrei capire se i pin dei due rfid sono comuni oppure no

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 !

Guglielmo

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.

Guglielmo

mi dispiace aver aperto un altro post :slight_smile: 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 :slight_smile: 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,
alcune domande ...

  1. SS_PIN dove lo hai definito e quanto vale ?

  2. Di che led parli e dove lo hai collegato o dove è già collegato ?

  3. stai usando delle librerie per accedere a queste schede ?

Guglielmo

#include <SPI.h>
#include <RFID.h>

int SS_PIN =7;

il led l'ho collegato tra il pin 7 e GND

libreria rfid di Miguel Balboa

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.

Fammi sapere ... :wink:

Guglielmo

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 :slight_smile:

comunque il led funziona senza il modulo, o per meglio dire senza richiamare la libreria

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 :slight_smile:

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 :slight_smile:

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 !!! :astonished:

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 ... :roll_eyes:

Guglielmo

no ragazzi, voglio anche capire che la libreria, come dice guglielmo, ha qualche problema, ma se dico che funziona sia con LOW che con HIGH, è così