Acceso restringido a dispositivos mediante tarjeta sin contacto con NodeMCU y el módulo RC522

En esta múltiple Serie nos dedicamos a las Posibilidades de Restricción del acceso a los Dispositivos o Sistemas con Tarjetas sin contacto de MiFare Serie, aprovechando relativamente lejos verbeiteteten RFID-RC522 Módulo.

En la primera Parte de esta Serie, vamos a ver los Componentes que necesitamos, como nuestros Hardwaregrundschaltung se ve y programar una primera aplicación de Mapas. En esta Aplicación, un Relé de un Código establecido autorizado de la Tarjeta y se apaga. A través de un LED multicolor aparece si la Tarjeta es leída el derecho es (era) el Relé de línea o no. Por el Relé libre de potencial a los Consumidores de línea. Vale:

¡ADVERTENCIA!! Existe la Conmutación de Cargas de más de 30 v o 230 Voltios de Tensión peligro de Muerte por descarga eléctrica. Por favor, presta atención a un Aislamiento y a la politica de Protección y Normas de funcionamiento según la norma DIN VDE 0105.

En particular, son siempre las 5 normas de Seguridad a aplicar en https://de.wikipedia.org/wiki/F%C3%BCnf_Sicherheitsregeln los torneos.

Hemos llegado ahora, de vuelta a nuestro Proyecto y nuestra lista de Piezas. Necesitan los siguientes componentes:

1x NodeMcu

1x 2 veces Relé

1x RC522 Lector de tarjetas + Mifare Classic Card

1x Batería

1x RGB LED con el Módulo de

Notas:

En el RC522 Cardreaderpaket ya MiFare Classic, Tarjetas, para nuestro Proyecto son suficientes. Por lo tanto, no es necesario, separte Tarjetas RfId a la orden.

En el KY-016 LED RGB Módulo son ya los Vorwiederstände para la Operación directa de los Portpins contienen. Por lo tanto, estos ya no por separado usado. Si prefiere sin RGB Módulo se debe trabajar, werdenneben del RGB Led con Cátodo común 3x 220 Ohmios Wiederstände necesita.

El Pin Asignación de los LED RGB es:

Salida NodeMcU

LED Color

D2

(B)lau

D3

(G)rün

D4

(R)ot

En un Protoboard, los Componentes, como sigue conectado:

Construido ve el Circuito a continuación:

En la Imagen para detectar el Consumo de corriente del Circuito si está activado el Relé. Este es el caso de 8 Voltios de Tensión de aproximadamente 190 mA. Sin activado el Relé es de la demanda de Electricidad de aproximadamente 110 mA. Es importante, entonces, necesariamente, una Fuente de alimentación externa de conectar y no en el de la Alimentación por USB para salir.

Después de que todos los Componentes juntos han construido presentamos nuestro Arduino en el Soporte del ESP8266 Fichas, seleccione Herramientas - > Board el "Generic Módulo ESP8266" de. A continuación, seleccione Herramientas Port el Puerto COM en el que nuestros NodeMcu está conectado. Ahora añadimos el siguiente Código:

 

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN     5   // SPI Reset Pin (D1)Salida
#define RELAIS_PIN  16  // Relé (D0 Salida) [LOW Activo] - internos LED, cerca de Puerto USB
#define SS_PIN      15  // SPI Esclavo Select Pin

#define RGBLED_R    2   // Rojo (D4 Salida) 
#define RGBLED_G    0   // Verde (D3 Salida) - También interna LED en el ESP Módulo
#define RGBLED_B    4   // Azul (D2 Salida)

#define LED_BUILTIN 16
#define PIN_WIRE_SDA 4 
#define PIN_WIRE_SCL 5 
 
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Instancia de la MFRC522 generar
MFRC522::MIFARE_Key key;

byte myValidCardUID[4] = {0x00,0x00,0x00,0x00}; // Aquí la vía Interfaz serie leídos                                                 // UID incorporar, para la operación de Lectura en el futuro                                                 // en vigencia, y conecta el Relé se                                                  // debe.
void setup() {   pinMode(RST_PIN,SALIDA);   pinMode(RELAIS_PIN,SALIDA);   pinMode(RGBLED_R,SALIDA);   pinMode(RGBLED_G,SALIDA);   pinMode(RGBLED_B,SALIDA);   digitalWrite(RELAIS_PIN,ALTA);    // Relé está inactivo   digitalWrite(RST_PIN,ALTA);   digitalWrite(RGBLED_R,LOW);       //Led DE   digitalWrite(RGBLED_G,LOW);   digitalWrite(RGBLED_B,LOW);   Serial.begin(9600);               // Comunicación Serie con el PC inicializar   Serial.println(("Ser. Ven. OK.");    SPI.begin();                      // Inicializando SPI Comunicación   digitalWrite(RST_PIN,LOW);   delay(300);   digitalWrite(RST_PIN,ALTA);   mfrc522.PCD_Reset();   mfrc522.PCD_Init();               // Inicializando MFRC522 módulo de Lectura   mfrc522.PCD_AntennaOn();   yield();   digitalWrite(RGBLED_R,ALTA);     //Led de Color Púrpura - completado la Inicialización   digitalWrite(RGBLED_G,LOW);   digitalWrite(RGBLED_B,ALTA);
}
 
void loop()   {   si (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial() )   // PICC = proximidad circuito integrado de tarjeta                                                                                                                                            // kontaktlose Chipkarte   {     Serie.de impresión("PICC UID:");     por (byte yo = 0; me < mfrc522.uid.tamaño de la; i++)      {       Serie.de impresión(mfrc522.uid.uidByte[me] < 0x10 ? " 0" : " ");       de Serie.impresión(mfrc522.uid.uidByte[me], HEX);     } 
 bool IsValid = verdadero;    para (byte yo = 0; me < sizeof(myValidCardUID); yo++)      {     si (mfrc522.uid.uidByte[me] != myValidCardUID[me]) { IsValid = false; }        }    si (IsValid)    {       bool PinState= digitalRead(RELAIS_PIN);       PinState = !PinState;       digitalWrite(RELAIS_PIN, PinState);            digitalWrite(RGBLED_R,BAJA);     //Led Grün       digitalWrite(RGBLED_G,ALTA);       digitalWrite(RGBLED_B,BAJA);       de Serie.impresión(" válido.");       retraso(2000);       digitalWrite(RGBLED_R,BAJA);     //Led de Colores Blau Leser ist en Grundzustand       digitalWrite(RGBLED_G,BAJA);       digitalWrite(RGBLED_B,ALTA);     } demás    {        digitalWrite(RGBLED_R,ALTA);     //Led Rot - Letzte Karte guerra ungültig       digitalWrite(RGBLED_G,BAJA);       digitalWrite(RGBLED_B,BAJA);       de Serie.impresión(" ungültig.");       retraso(2000);       }      de Serie.println();      mfrc522.PICC_HaltA();       // Versetzt morir aktuelle Karte en einen Ruhemodus.     retraso(1000);   }   de rendimiento(); // interne ESP8266 Funktionen aufrufen
}

 

Wir kompilieren den el Código und laden Ihn auf unsere NodeMcu hoch. Während des Hochladens des Bocetos leuchtet unsere RGB Led de la "putrefacción". Nach erfolgreichem Subir wechselt die Farbe der LED auf "lila". Durch den Wechsel der Farbe wird angezeigt, das der Subir Vorgang erfolgreich guerra.

Damit ein Hochladen auf die NodeMcu funktioniert, muss während der Kompiliervorganges der Catador "Flash" auf der NodeMcu gedrückt werden und gedrückt gehalten werden.

Wenn der Subir -Vorgang erfolgreich abgeschlossen wurde, starten wir in der IDE unser Serielles Terminal und stellen die Übertragungsgeschwindigkeit auf 9600 Baudios ein.

Nun ist unser Leser bereit die erste Karte einzulesen. Diese wird natürlich nicht als zugangsberechtigt angesehen, da unser Leser ja Ihre ID noch nicht kennt. Morir Ausgabe im Terminal sollte dann wie folgt aussehen:

Dies ist eine erwartete Ausgabe. Damit diese Karte von unserem Leser zukünftig ela válido akzeptiert wird, ändern wir monja morir Zeile "byte myValidCardUID[4] = {0x00,0x00,0x00,0x00};" en "byte myValidCardUID[4] = {0x16,0x15,0x8D,0x05};" kompilieren neu und laden unseren Código auf die Nodo MCU hoch. Danach wird diese Karte ela válido erkannt und man kann das Relais durch vorhalten der gültigen Karte umschalten. Muere wird durch ein 2 sekündiges grünes leuchten der LED bestätigt.

Cae eine ungültige Karte vorgehalten wird, schaltet morir LED auf dauerhaft "putrefacción". Es ist somit erkennbar, ob der Vergangenheit ein Fehlversuch durch eine nicht autorisierte Karte erfolgte.

Der Aufmerksame Leser wird sich sicherlich fragen, warum wir für diese Aufgabe eine NodeMcu verwenden, da diese Aufgabe z.B. auch durch einen Arduino Uno erfüllt werden könnte. Dies ist zwar prinzipiell richtig, jedoch wollen wir unseren Kartenleser um komfortable Konfigurationsmöglichkeiten por Netzwerk erweitern sowie Sicherheitsfunktionen ergänzen. Todos los das ist aber Teil der kommenden Teile dieser Reihe.

Der Autor empfiehlt das hier beschriebene Sistemas nicht als Zugangskontrolle für Türsysteme oder anderen sicherheitskritischen Systemen einzusetzen, da u.un die dem Sistema zugrundeliegende PICC "Mifare Classic" ya geknackt wurde und daher ela unsicher eingestuft wurde.

Viel Spaß beim Nachbauen und bis zum nächsten Esta :) Tobias Kuch

 

Precipitador electrostático - 8266Proyectos para avanzados.

8 comentarios

Harald

Harald

Hallo,
Einer von vielen sehr hilfreichen Artikeln. Allerdings auch mit einer Frage. hat sich schon mal jemand daran getraut diesen Card Reader per I2C anzusprechen. Angeblich kann das Funktionieren und würde mir viele Eingänge bringen.

Frank Carius

Frank Carius

Schaut euch vielleicht mal https://github.com/esprfid/esp-rfid) an. Das ist quasi eine fertige Firmware wie Tasmota, ESPEasy, ESPurna nur mit dem Fokus auf RFID.
Läuft vermutlich out of the Box mit eurem Hardware setup

Interessant wäre es natürlich mal, wie man z.B. eine EC-Karte/Kreditkarte mit dem RC522 nicht nur liest, sondern vielleicht einen Challenge sendet und den REsponse liest. Dann wäre es sicherer als einfach nur “Seriennummer lesen”

Michael

Michael

Hallo zusammen,
cooles Projekt. Ich versuche die Sensitivität des RC522 durch die Ergänzung der Initialisierung PCD_WriteRegister(RFCfgReg, (0×07<<4)); im File MRFC522.cpp zu erhöhen.
Leider ohne Erfolg.
Habt jemand schon mal erfolgreich die Reichweite des RC522 erhöht?
Die Reichweite ist für mein Projekt zu gering :-(.

Vielen Dank für alle Hinweise

Jörg

Jörg

Hallo,
toller Artikel, der Aufbau funktioniert nach einigem Hin und Her
(LED leuchtet lila), aber die LED reagiert nicht, wenn ich eine RFID-Karte davor halte.
Im seriellen Monitor gibt es keine Reaktion.
Ich habe es mit zwei unterschiedlichen Cardreadern und Karten versucht.
Was kann ich noch machen?

Vielen Dank und Grüße
Jörg

Paul

Paul

Ein super Projekt.

Hat auf Anhieb funktioniert. (Nur das kopieren des Codes muss man manuell machen, über den Button kommen die ein anderer schon schreibt Fehler rein.)
Ich gehe direkt zum Teil 2.

Heiko

Heiko

Hallo zusammen,
die Fehlermeldung ist geklärt.
Durch das Kopieren von der Internetseite werden statt Leerzeichen im Code Sonderzeichen eingetragen.
Die habe ich dann alle ersetzt durch Leerzeichen und schon läufts.

Danke trotzdem

Weiter so, ist ein Super Blog. Sehr interessant und leicht zu verstehen.

Heiko

Heiko

Hallo zusammen,
tolles Projekt.
Habe alles aufgebaut.
Ich bekomme die Fehlermeldung stray ‘\302’ in program
Alle Librarys sind installiert (meiner Meinung nach).
Der Reader ist in Ordnung, liest die Karten ordnungsgemäß ein.
Ist getestet mit einem anderen Programm.

Kann mir jemand erklären was es mit dieser Fehlermeldung auf sich hat?

Vielen Dank im voraus

Mathias Päzolt

Mathias Päzolt

Hallo,
sehr interessanter Artikel, aber ich wäre nicht ich, wenn ich nicht was zu meckern hätte :-)
Da ich ein anderes RFID-Modul verwende (VMA405 von Velleman, fand sich noch in der Bastelkiste) wäre ein mapping für alle Kontakte sehr sinnvoll, da sich mein Modul in der Beschaltung unterscheidet.

Deja un comentario

Todos los comentarios son moderados antes de ser publicados

Artículos de blog

  1. Ahora instalamos el esp32 a través de la administración.
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. Transporte Aéreo - programación de ESP mediante redes locales inalámbricas