RFID Leser mit Leonardo (geht) bzw. Pro MIcro (geht nicht)

Hallo,

ich hab ein kleines Programm "erstellt" (von irgendwo kopiert), das auf meinem
Arduino Leonardo funktioniert. Am Leonardo ist ein RDM6300 angeschlossen, der
wenn er einen RFID Tag erkennt per "serial" die Infos an den Arduino übergibt.
Funktioniert wie gesagt.
Jetzt hab ich mir einen Arduino Pro Micro besorgt, der ja eigentlich genau das
gleiche sein sollte, wie der Leonardo. Also den Sketch auf den Micro kompiliert.
Das Programm selber scheint auch zu laufen. Leider wird der RDM nicht erkannt,
bzw. der RFID Tags werden nicht erkannt. Hab schon div. Pins ausprobiert.

Am Leonardo war es Pin10 (alle anderen Pins haben nicht funktioniert)
am Micro hab ich deswegen auch mit Pin10 probiert, leider erfolglos. Auch Pins
2, 6 und 9 gingen nicht...

jemand ne Idee, wieso es am Leonardo funktioniert, am Micro aber nicht ?

Gruß Martin

Um das zu beurteilen, fehlen dein Sketch, dein Schaltbild und ein Link zu deinem RFID-Reader.

Wollt nur mal grob nachfragen, ob es da ein bekanntes "Problem" gibt... deswegen hab ich da noch gespart.. könnte ja sein das einer sagt... ja ne.. is klar das da nicht geht.. Lenoardo Pin 10 = Micro Pin xy..
aber gut.. kein Thema.. reich ich natürlich gern nach..

hier der Sketch

#include <rdm630.h>
#include <Keyboard.h>

    rdm630 rfid(10, 11);  //TX-pin of RDM630 connected to Arduino pin 6
    byte data[6];
    byte length;
    byte sperre = 1;
    unsigned long previousMillis = 0;
    const long interval = 2000;
    String ID_hex="";
		String pw = "dein Passwort";
    char ctrlKey = KEY_RETURN;
    byte n= 0;


void setup()
{
    Serial.begin(9600);  // start serial to PC
    rfid.begin();
    Keyboard.begin();
    
    
}

void loop()
{

    unsigned long currentMillis = millis();
    unsigned long divMillis = (currentMillis - previousMillis);


    if(rfid.available()&&sperre==0){
        rfid.getData(data,length);
        Serial.println("Data valid");
        for(int i=0;i<length;i++){
            //Serial.print(data[i],HEX);
            //Serial.print(" ");
            ID_hex = ID_hex + String(data[i],HEX);            
        }
        Serial.print("hex CardID: ");
        Serial.println(ID_hex);
        //Serial.println("");
        //Keyboard.print(resultHEX);

					if (ID_hex=="700abcdefg" || ID_hex=="40abcdefg") {
          Keyboard.print(pw);
          }
          else 
          {
          Keyboard.print(ID_hex);
          }
          Keyboard.releaseAll();  //Release all keyboard buttons
          delay(200);             //Wait 200ms before hitting ENTER
          Keyboard.press(ctrlKey);    //Hit ENTER
          Keyboard.releaseAll();      //Release all keyboard buttons
        
        //concatenate the bytes in the data array to one long which can be 
        //rendered as a decimal number
        unsigned long result = 
          ((unsigned long int)data[1]<<24) + 
          ((unsigned long int)data[2]<<16) + 
          ((unsigned long int)data[3]<<8) + 
          data[4];              
        Serial.print("decimal CardID: ");
        Serial.println(result);
       // Serial.println (sperre);
       // Serial.println (currentMillis);
       // Serial.println (previousMillis);
        Serial.print("Interval: ");
        Serial.println (divMillis);
        Serial.println("");
        ID_hex = "";
        sperre=1;     
        }
     if (divMillis >= interval) {
        previousMillis = currentMillis;   
        sperre=0;
        }
        
}

Schaltbild ist auch recht einfach:
RDM6300 am Leonardo:
GRD/VCC an GRD/VCC
TX an Pin 10

beim Micro hab ich es identisch verkabelt

der Link zum Reader:
https://www.ebay.de/itm/EM4100-125K-RFID-Card-Reader-Modul-ID-RF-UART-Output-Arduino-RDM6300/173009947701?hash=item2848324c35:g:vXYAAOSwwadaIYU4

wenn noch was fehlt.. bitte Bescheid geben..

Vielen Dank

Hast du Pin 10 oder Pin D10 verwendet ?

Pin D10 (PB6) ist bei beiden Boards identisch.

Pin D10...

Ich dachte auch, das das alles gleich ist... verstehen tu ich es jedenfalls nicht...

Gruß Martin

Bereich1.png

Ich glaub es ist viel banaler... der RDM brauch 5V... der Micro ist aber die 3,3V Version.. vermutlich liegt es daran.. wenns das ist -->#facepalm ..

Gruß Martin

Sollte so funktionieren.

Teste die Pins mal mit einem "BlinkSketch" bei dem du die Led an Pin D10 blinken lässt.

Edit:
Ok daran (3,3V) könnte es liegen.
Einfach mal einen 1k Widerstand in die serielle Leitung legen.

Es lag daran.. hab mal den Saft vom RDM an den Leonardo angeschlossen (GRD/VCC)
und Pin10 an den Micro... und jetzt läuft es... ärgerlich !!!

evlt. kann ich aber den Saft von der USB Buchse abgreifen... will mir jetzt nicht noch den
Micro 5V bestellen müssen :slight_smile:

Gruß und vielen Dank für die schnelle Hilfe !!

Martin

Brick01:
Es lag daran.. hab mal den Saft vom RDM an den Leonardo angeschlossen (GRD/VCC)
und Pin10 an den Micro... und jetzt läuft es... ärgerlich !!!

evlt. kann ich aber den Saft von der USB Buchse abgreifen... will mir jetzt nicht noch den
Micro 5V bestellen müssen :slight_smile:

Gruß und vielen Dank für die schnelle Hilfe !!

Martin

Gerne...
Ok, verstehe. Dann hat dein RDM auch nur 3,3 Volt erhalten.
Wichtig ist, es funktioniert.

Übrigens hätte dir ein richtiges Schaltbild schnell den Fehler aufgezeigt. :wink:

Hab das jetzt am "RAW" Pin des Micros angeschlossen.. der gibt knapp 5V raus..
Das funktioniert.. ist vielleicht nicht sauber, aber hauptsache es geht ... ist ja nur
für ein kleines Bastelprojekt.. dafür tuts das schon..

@HotSystems, danke jedenfalls ... Schaltbild... pfff... wer braucht schon sowas :wink:

Gruß Martin

Brick01:
Hab das jetzt am "RAW" Pin des Micros angeschlossen.. der gibt knapp 5V raus..
Das funktioniert.. ist vielleicht nicht sauber, aber hauptsache es geht ... ist ja nur
für ein kleines Bastelprojekt.. dafür tuts das schon..

@HotSystems, danke jedenfalls ... Schaltbild... pfff... wer braucht schon sowas :wink:

Da du mit 5V vom RFID-Leser in den 3,3V-Arduino gehst, ist das weder für den RFID-Leser noch für den ProMicro gut. Du solltest einen Spannungsteiler zur Pegelanpassung vorsehen. All so was sieht man mit einem Schaltbild und wenn es mal eben auf Papier hingekrakelt ist.

Das mit den 5V ist mir gestern Abend auch aufgefallen.. hab mir jetzt einen Step Down Wandler bestellt..
Leider ist der 3,3V doch irgendwie lahm... (8Mhz)... Eingaben werden da echt nur verzögert abgearbeitet..Hab mir deswegen jetzt auch noch mal die 5V Version bestellt..

(8Mhz)... Eingaben werden da echt nur verzögert abgearbeitet

Wenn du Eingabe-Verzögerungen bemerkst, liegt das sicher NICHT am Prozessor-Takt.

Ohne deinen Code wirklich anzusehen, ist mir aber direkt

          delay(200);             //Wait 200ms before hitting ENTER

aufgefallen.