Pages: [1] 2   Go Down
Author Topic: Aiuto: Hacking di un lettore USB-RFID  (Read 2362 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 1
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Qualche giorno fa su YouTube ho trovato questo video:



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!
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10453
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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);
Logged

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

Offline Offline
Newbie
*
Karma: 1
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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???

Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10453
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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"
Logged

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

Offline Offline
Newbie
*
Karma: 1
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10453
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

stai usando un IDE > 1.0 vero?
Logged

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

Offline Offline
Newbie
*
Karma: 1
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si Si!!! Utilizzo la 1.0.1  e  Arduino uno rev3

« Last Edit: January 25, 2013, 10:13:20 am by napster » Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10453
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

no, arduino IDE è il programma lato PC, non la scheda smiley
Logged

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

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2301
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10453
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

nel video han specificato
Logged

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

Offline Offline
Newbie
*
Karma: 1
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

A si giuto! Utilizzo la 1.0.1 !!! smiley-sweat
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10453
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

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

Offline Offline
Newbie
*
Karma: 1
Posts: 12
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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...
 smiley-confuse smiley-confuse smiley-confuse
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10453
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

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

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

...sicuro anche della velocità della comunicazione serale?
Quoto.
Se non comunichi alla stessa velocità ottieni caratteri senza senso.
Logged


Pages: [1] 2   Go Up
Jump to: