NodeMCU & RC522

Hi,

wie ihr schon aus dem Titel entnehmen könnt hab ich nun n RFID-Reader an meinem NodeMCU angeschlossen. Der Code hierzu ist wie folgt:


#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN D4
#define RST_PIN D2

MFRC522 mfrc522(SS_PIN, RST_PIN); // Instance of the class
void setup() {
  Serial.begin(9600);
  SPI.begin();       // Init SPI bus
  mfrc522.PCD_Init(); // Init MFRC522
  Serial.println("RFID reading UID");
}
void loop() {
long code = 0;
if ( mfrc522.PICC_IsNewCardPresent())
   {
       if ( mfrc522.PICC_ReadCardSerial())
       {
          Serial.print("Tag UID:");
          for (byte i = 0; i < mfrc522.uid.size; i++) {
                 code = ((code+mfrc522.uid.uidByte[i])*10);
                 
           }
         
           Serial.println(code);
          
       }
}
if (code==1363910) 
{
 digitalWrite (5, HIGH);
 delay (5000);
 digitalWrite (5, LOW);
}

}

Problem: Er ließt die ID als Dezimal, funktioniert auch erstmal Einwandfrei.
Problematik ist nur das der unter code:

if (code==1363910)
{
digitalWrite (5, HIGH);
delay (5000);
digitalWrite (5, LOW);
}

NICHT REAGIERT.

Hab ne LED an einer Seite mit GND und die andere an GPIO 5 (indem Fall D1) angeschlossen.
Nachdem Lesen der Karte passiert NICHTS. Schließe ich die eine seite der LED (wo mit GPIO verbunden ist) mit den 3,3V, leuchtet die LED.

Jemand ne Idee ?

Vielen Dank im voraus.

Kannst du den Thread bitte mal anständig posten, damit der auch lesbar ist.

Sketch in Code-Tags setzen, den Rest normal in den Post.

Vergessen folgendes zu erwähnen:

Sobald ich die karte lese dann leuchtet die LED AUF dem NodeMCU für 5 Sekunden nicht (delay(5000)), daher denke ich das irgendetwas anderes nicht passen muss....

Den Sketch bitte ordentlich einrücken, dann liest er sich besser. +T in der IDE hilft Dir dabei.

Was wird als Code nach dem Einlesen ausgegeben?

Gruß Tommy

Tommy56:
Den Sketch bitte ordentlich einrücken, dann liest er sich besser. +T in der IDE hilft Dir dabei.

Was wird als Code nach dem Einlesen ausgegeben?

Gruß Tommy

Danke für den Hinweis!!

Ausgegeben wird einfach nur meine RFID als Dezimalzahl, sieht wie folgt aus:

Tag UID: 1363910

Dann zeige uns doch mal ein Schaltbild, wie du alles verdrahtet hast.

HotSystems:
Dann zeige uns doch mal ein Schaltbild, wie du alles verdrahtet hast.

http://www.bilder-upload.eu/show.php?file=7303e8-1535567106.png

hier, genauso hab ichs verschaltet.

Hab inzwischen mal von GPIO 5 auf D4 gewechselt .... ist also nicht der Fehler :slight_smile:

Komisch ist auch das wie gesagt die LED für genau den Zeitraum des "delays" nicht leuchtet.
Wenn ich ne andere ID scanne dann liest er diese ca 10-20x und schreibt dies immer in eine neue zeile, die ID die in der IF-Anweisung steht liest er genau nur 1x und nachdem die delay abgelaufen ist kann ich sie erst wieder erneut scannen.

Anmerkung eben folgendes Probiert:

 if (code == 1363910) {
      
        Serial.println("Access");
        digitalWrite(ledPin, LOW);
        delay (2000);
        digitalWrite(ledPin, HIGH);
        delay(1000);
        return;
      } else {
        Serial.println("FAIL");
      }

Ich bekomme auf dem Monitoring "Access" zurück.
Die LED leuchtet jedoch trzm nicht.
Scheint wohl die Verschaltung falsch zu sein...

Dann male mal Deine reale Verdrahtung der LED am Arduino auf. Bleistift genügt.
Bitte kein Fritzing.

Gruß Tommy

D4/GPIO2 ist auf meinen NodeMCU's eine LED am ESP Modul, die sollte schon reagieren (invers).

Du ziehst auf HIGH, dann wird diese verbaute LED ausgehen. Works as designed.

noiasca:
D4/GPIO2 ist auf meinen NodeMCU's eine LED am ESP Modul, die sollte schon reagieren (invers).

Du ziehst auf HIGH, dann wird diese verbaute LED ausgehen. Works as designed.

Hey, die LED geht auch tatsächlich aus wenn ich die karte einlese (direkt am NodeMCU), mein Problem ist das ich eine "externe" LED per scan nicht zum leuchten bringen kann... auch nicht an D0, D1, D2 oder D4 ...

Verkabelung überprüfen.
Polarität der LED checken.
Vorwiderstand verwenden.
LED überprüfen - vieleicht ist sie schon hinüber.
Mit einem Blink-Sketch neu ausprobieren.

Für weitere Hilfe:
Hochauflösendes Foto hier ins Forum hochladen, sodass man die LED-Verkabelung + Widerstand + Dupont-Kabel eindeutig erkennt.

Es ist wie immer, du stellst Fragen, lieferst auf unsere Fragen

es werden Fragen gestellt, aber als Antwort folgt nur irgendwelcher Müll aus dem Netz.

Warum postest du nicht dein Schaltbild, so wie du es aufgebaut hast.
Oder wie noiasca schrieb, ein Foto deines Aufbaus.

Wie sollen wir helfen, wenn du nicht bereit bist, unsere Fragen/Bitten zu bedienen ?

Und in dem Bild von dir sehe ich keinen Vorwiderstand für die Led. Damit kannst du schnell den Ausgang des NodeMCU killen.

HotSystems:
Es ist wie immer, du stellst Fragen, lieferst auf unsere Fragen aber nur irgendwelchen Müll aus dem Netz.

Warum postest du nicht dein Schaltbild, so wie du es aufgebaut hast.
Oder wie noiasca schrieb, ein Foto deines Aufbaus.

Wie sollen wir helfen, wenn du nicht bereit bist, unsere Fragen/Bitten zu bedienen ?

Und in dem Bild von dir sehe ich keinen Vorwiderstand für die Led. Damit kannst du schnell den Ausgang des NodeMCU killen.

Mal im ernst, was heißt hier "wie immer" ?

Ich hatte gestern Abend nicht die Möglichkeit meine Verschaltung zu fotografieren, weshalb ich euch hier den Schaltplan aus dem Internet gepostet habe. Ich habe ausdrücklich Vermerkt das ich die LED / RC522 & mein NodeMCU genau nachdem Schaltplan aus dem Internet verkabelt habe.

Kirikkayis:
Mal im ernst, was heißt hier "wie immer" ?

....

Ok, ich habe meine Bemerkung etwas entschärft. :wink:

Dennoch gehst du wieder mal nicht auf meine Anmerkung (Vorwiderstand) ein.

HotSystems:
Ok, ich habe meine Bemerkung etwas entschärft. :wink:

Dennoch gehst du wieder mal nicht auf meine Anmerkung (Vorwiderstand) ein.

Doch, deine Anmerkung habe ich Aufgenommen und auch schon Umgesetzt. Danke für die Info.

Problematik: LED reagiert auch an D0, D1 etc. nicht :wink:

Obwohl, wie oben schon erwähnt, ich "Access" zurück bekomme. Das bedeutet doch das die folgende IF-Anweisung funktioniert, oder irre ich mich?

if (code == 1363910) {
      
        Serial.println("Access");
        digitalWrite(ledPin, LOW);
        delay (2000);
        digitalWrite(ledPin, HIGH);
        delay(1000);
        return;
      } else {
        Serial.println("FAIL");
      }

Damit die Diode in der Schaltung aus dem Netz auch funktioniert, musst du den Code so schreiben:

if (code == 1363910) {
      
        Serial.println("Access");
        digitalWrite(ledPin, HIGH);
        delay (2000);
        digitalWrite(ledPin, LOW);
        delay(1000);
      } else {
        Serial.println("FAIL");
      }

Die Led ist ja einseitig auf GND.
Das "return" brauchst du nicht.

Edit:
Ich sehe in deinem Sketch nicht, dass du den Pin überhaupt und als Ausgang definiert hast.

HotSystems:
Damit die Diode in der Schaltung aus dem Netz auch funktioniert, musst du den Code so schreiben:

if (code == 1363910) {

Serial.println("Access");
        digitalWrite(ledPin, HIGH);
        delay (2000);
        digitalWrite(ledPin, LOW);
        delay(1000);
      } else {
        Serial.println("FAIL");
      }




Die Led ist ja einseitig auf GND.
Das "return" brauchst du nicht.

Edit:
Ich sehe in deinem Sketch nicht, dass du den Pin überhaupt und als Ausgang definiert hast.

Okay danke für den Hinweis probiere ich heute Nachmittag gleich aus.

Ach Sry, oben habe ich ledPin selbstverständlich definiert als D4.

:slight_smile:

Kirikkayis:
Okay danke für den Hinweis probiere ich heute Nachmittag gleich aus.

Ach Sry, oben habe ich ledPin selbstverständlich definiert als D4.

:slight_smile:

Das reicht nicht, muss auch ein Ausgang sein.

HotSystems:
Das reicht nicht, muss auch ein Ausgang sein.

Habe ich auch :slight_smile:

Als alternative habe ich auch folgendes Probiert

digitalWrite (5, LOW);