Buongiorno a tutti!
Sono nuovo sul forum e spero di trovare qui quello che cerco!
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.
#include <SoftwareSerial.h>
SoftwareSerial rfid = SoftwareSerial(2,3); //RX, TX
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"
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?
#include <SoftwareSerial.h>
SoftwareSerial rfid = SoftwareSerial(2,3); //RX, TX
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)
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
Collegato al computer tramite usb funziona perfettamente e non necessita di driver. Infatti simula una tastiera virtuale e "scrive" 10 numeri che corrispondono al numero del tag che ci si passa sopra.
Per il resto non ho capoto bene!
Cosa dovrei fare?
è per un µC ATtiny2313 e un display 2X8 Digit LCD.
Sarebbe possibile convertirlo per Arduino???
Anche escludendo il display e inviare i dati al serial monitor cosi è piu facile!
uart_getc() corrisponde a Serial.read() (però DEVE ritornare un valore, quindi prima fai un loop finchè non c'è un available o il valore letto è != -1)
counter_ms corrisponde a millis(). Il resto resta uguale tranne le inizializzazione della UART (la seriale) e del counter_ms (la millis() si autosetta
Ho trovato qualcosa!!! http://thetransistor.com/2011/10/hacking-cheap-rfid-readers/
Sembrava che poteva risolvere i miei problemi!
Invece non è stato cosi... Dove sbaglio?
La scheda che usa lui è molto simile alla mia! E credo che ha gli stessi componenti e le stesse uscite!
Ho provato ad utilizzare il suo Sketch ma il risultato è una pagina bianca!
// Ebay RFID decoder by Aaron Christiansen
// NOTE: this uses the NewSoftwareSerial beta 11
// by Mikal Hart, available here:
// NewSoftSerial 11 (beta) | Arduiniana #include <SoftwareSerial.h>
String out = "";
int temp = 0;
unsigned long timer = millis() + 1000;
// using a timer to prevent a possible hang
while(out.length() < 10 && timer > millis()){
if(rfid.available()){
temp = rfid.read() - 29;
if(temp > -1 && temp < 11){
temp = (temp == 10)? 0 : temp;
out += temp;
}
}
}
// clearing out the unused extra bytes
rfid.flush();
return out;
}
ho provato a mettere la visualizzazione dei dati prima di String readRFID() ma ottengo quello che ottenevo all' inizio numeri senza senso divisi su 4 righe!!! Sembra che fa 4 letture!!! Perche?