Go Down

Topic: Aiuto: Hacking di un lettore USB-RFID (Read 2888 times) previous topic - next topic

napster

Buongiorno a tutti!
Sono nuovo sul forum e spero di trovare qui quello che cerco! :)

Qualche giorno fa su YouTube ho trovato questo video:

http://www.youtube.com/watch?v=RcZI6fK948w

Mi sono subito interessato al progetto dato che a casa avevo lo stesso lettore RFID del video,ed ho deciso di ripetere ciò che ha fatto l'autore del video con il mio Arduino UNO.
Ho smontato il lettore saldato i pin ed ho collegato il pin data ad arduino utilizzando la libreria SoftwareSerial con un banalissimo Sketch.

Quote

#include <SoftwareSerial.h>

SoftwareSerial rfid = SoftwareSerial(2,3); //RX, TX

char x;

void setup()
{
  Serial.begin(9600);
  Serial.println("Seriale OK");
  
  rfid.begin(9600);
  Serial.println("RFID OK");
}

void loop()
{
  if (rfid.available()>0)
  {
    x=rfid.read();
  Serial.println(x);
  }
}





Ma non ho ottenuto quello che cercavo... la risposta di Arduino al passaggio dei tag è questa:



Dove sbaglio? Potete Aiutarmi????

Grazie!

lesto

tu ti aspetti che siano lettere leggibili, ma non è detto (dovresti vedere bene a 0:55), comunque stampati i valori in esadecimale:

Serial.println(x, HEX);
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

napster

Grazie Ho appena provato! Non va nemmeno cosi...

Nel video lui riesce ad avere dati leggibili ma non capisco se li converte in qualche modo...

Non so come fare... Questa è la modifica che ho appena fatto:

Quote

#include <SoftwareSerial.h>

SoftwareSerial rfid = SoftwareSerial(2,3); //RX, TX

char x;

void setup()
{
  Serial.begin(9600);
  Serial.println("Seriale OK");
  
  rfid.begin(9600);
  Serial.println("RFID OK");
}

void loop()
{
  if (rfid.available()>0)
  {
    x=rfid.read();
  //Serial.println(x);
  Serial.println(x, HEX);
  }
}






e questa è la risposta:



:smiley-roll: :smiley-roll: :smiley-roll:

...altri suggerimenti???


lesto

tanto per cominciare rfid.read(); non ritorna un char (1 byte) ma un int (2 byte).

quindi dichiara x come int e il resto lo lasci così com'è.

Iniziamo ad ottenere dei valori validi, poi mi aspetto che questi valori in corrispondenza della tabella ASCII siano lettere (quindi è giusto il concetto del char, ma qualcosa da qualche parte rompe tutto)

edit: tra l'altro l'uoput è moooolto strano:
dovrebbe esseer (dal reference)
Serial.print(78, HEX) gives "4E"
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

napster

Ok fatto ora ci sono 4 valori che per me sono comunque strani!
Quando utilizzato normalmente, il lettore rfid collegato a windows con l'usb restituisce il codice del tag con 10 numeri (esempio 0012847567)
Invece quello che si ottiene dalla seriale di Arduino sono solo 4 valori!

Da quello che ho capito ho modificato cosi...giusto?

Quote

#include <SoftwareSerial.h>

SoftwareSerial rfid = SoftwareSerial(2,3); //RX, TX

int x;

void setup()
{
  Serial.begin(9600);
  Serial.println("Seriale OK");
  
  rfid.begin(9600);
  Serial.println("RFID OK");
}

void loop()
{
  if (rfid.available()>0)
  {
    x=rfid.read();
    Serial.println(x, HEX);
  }
}






e questo è l'output:



:smiley-roll-sweat:

lesto

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

napster

#6
Jan 25, 2013, 03:11 pm Last Edit: Jan 25, 2013, 04:13 pm by napster Reason: 1
Si Si!!! Utilizzo la 1.0.1  e  Arduino uno rev3


lesto

no, arduino IDE è il programma lato PC, non la scheda :)
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

pitusso

...sicuro anche della velocità della comunicazione serale?

lesto

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

napster


lesto

quindi molto strano, sicuro di esserti collegato al pin dati e non quello ready? in oltre il fatto che i dati sonao solo 4 byte invece che molti di più, può essere che il tuo chip lavori ad un bitrate inferiore (prova un pò quello default)

1 200
1 800   
2 400
3 600   
4 800   
7 200   
9 600
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

napster

Allora ho fatto tutte le prove! Ma niente! Guarda:

Con 1200 e 4800 ottengo questo:

Con 1800, 3600 e 7200 questo:

E con 2400 questo:

Con 9600 ottengo ciò che abbiamo visto fino ad ora nei post precedenti...
:~ :~ :~

lesto

ma invece col sui driver normale funziona?

puoi fare così, lascia perdere la serial per un momento e leggi le durate grezze dei segnali low e high, poi confrontale con i messaggi che ti aspetti, in particolare con la durata di un baud via seriale
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

leo72


...sicuro anche della velocità della comunicazione serale?

Quoto.
Se non comunichi alla stessa velocità ottieni caratteri senza senso.

Go Up