RFID Reader über Funk in PC einlesen

Hallo
ich stehe vor einen Problem und weis nicht weiter.
ich hab mir vor kurzen mit einem RC522 und einen Arduino micro ein RFID reader gebaut, dieser funktioniert auch.
Jetzt stört mich aber das Usb Kabel da es ständig im weg ist.
Meine Überlegung war nun mit einem Rc 522, Arduino Nano, HC05 und natürlich mit einen Akku den eigentlichen Reader zu bauen. Und mit einem Arduino Micro und noch einem HC05 Module einen USB Empfänger zu Bauen.
Ausprobiert haben ich das mal mit zwei Arduino UNO R3 die Kommunikation Ansicht funktionier soweit, bloß bekomme ich Die Falschen werte beim Empfänger.
Eingelesene UID: F2 0 2 A0 79
Empfangene UID: 50 52 50 50 49 54 48 49 50 49
Das ist Problem 1.
Problem 2 ist da ich ja über <Keyboard.h> die UID an dem PC weiter geben möchte benötige ich ja einen Arduino Mirco da ich grad aber keinen zur verfügung haben habe ich es mit einem Leonardo versucht und da habe ich das Problem das ich keine Daten empfange.
Versucht habe ich es über den normalen RX TX pin aber auch über <SoftwareSerial.h>. Da es aber bei den zwei UNOs funktioniert und das auch der gleiche scetch war komm ich Rad nich ganz weiter.
Jetzt die fragen an euch :

  1. Wie kann ich dem Empfänger sagen das er mir die UID wieder richtig ausgibt.
  2. Funktioniert es überhaupt mit einem Arduino Micro (Leonardo).
  3. Oder hat jemand noch eine Besseren Vorschlag ich ich das Projekt Lösen Kann.
    Schonmal Vielen dank im Voraus!!

RFID_Funk_test.ino (940 Bytes)

RFID_emp_nger.ino (300 Bytes)

Hi

Was auffällt: Du versendest 5 Byte, empfängst aber 10.
Die versendeten Byte sehen nach HEX aus, die empfangenen können 'sowohl als auch' sein - wobei '48' dezimal 0x30 entspräche und Das wäre eine Null
50 52 50 50 49 54 48 49 50 49
-> 2 4 2 2 1 6 0 1 2 1
Hat aber noch nicht wirklich viel Ähnlichkeit mit den 5 HEX-Byte.

Edit
Doch:
F2 = 242
02 = 2
A0 = 160
79 = 121
/Edit

Versuche Mal in der Zeile

mySerial.print(mfrc522.uid.uidByte[i]) ;

das .print in .write zu tauschen.

Ich gehe davon aus, daß die jetzt neue Übertragung via SoftSerial erfolgen soll - die Ausgabe der führenden Null in dem Sketch scheint mir auch nicht korrekt zu funktionieren.

MfG

batzler:
Versucht habe ich es über den normalen RX TX pin aber auch über <SoftwareSerial.h>. Da es aber bei den zwei UNOs funktioniert und das auch der gleiche scetch war komm ich Rad nich ganz weiter.

Ein Arduino UNO ist, was die serielle Schnittstelle betrifft anders ausgestattet als ein Leonardo bzw. Micro.

Arduino UNO hat die serielle Schnittstelle an den Pins 0 (RX) und 1 (TX). Diese wird auch zur USB-Schittstellte “weitergereicht”. Um die Anbindung an USB kümmert sich ein zusätzliche Mikrocontroller (bei den aktuellen UNOs ist es ein Atmega16U2).
Mit der Anweisung Serial.print(“xyz”); schreibst du also auf die serielle Schnittstelle (Pin 1, TX) und auch gleichzeitig auf USB.

Leonardo bzw. Micro “kümmern” sich selbst um die USB-Schnittstelle.
Mit Serial.print(“xyz”) schreibst du nur auf die USB-Schnittstelle, aber nicht an Pin 1.
Wenn du eine serielle Nachricht an Pin 1 senden willst so geht das mit:
Serial1.print(“xyz”);

Also: Wenn du mit Leonardo/Micro die serielle Schnittstelle auf Pin 0 / Pin 1 verwenden möchtest, verwende die entsprechenden Anweisungen wie:

Serial1.begin(9600);
Serial1.read();
Serial1.print("xyz");

Wenn du etwas an USB senden bzw. von USB empfangen willst verwendest du Anweisungen wie:

Serial.begin(9600);
Serial.read();
Serial.print("xyz");

Softwareserial braucht man am Leonardo / Micro nicht so häufig, weil es ohnehin eine “zusätzliche” serielle Schnittstelle (in Hardware) gibt.