Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino Ethernet-RFID-Kartenleser

Komponenten und Verbrauchsmaterialien

Mifare MFRC522
Jede Art von Spi-RFid-Lesegerät ist in Ordnung
× 1
Arduino UNO
Jedes Arduino ist in Ordnung
× 1
enc28j60
Sie müssen den Code für alles ändern, was ENC28J60 nicht verwendet
× 1
Jumper (generisch)
× 1
Breadboard (generisch)
× 1
Computer
Jeder Computer, der mit dem Internet verbunden ist
× 1

Notwendige Werkzeuge und Maschinen

Schere
Oder Abisolierzangen

Apps und Onlinedienste

Pycharm
Arduino-IDE

Über dieses Projekt


Haben Sie schon einmal daran gedacht, ein RFID-Tags-/Kartensicherheitssystem oder ein Überwachungssystem in Ihrem Zuhause und/oder Büro hinzuzufügen? Nun, wenn Sie hier sind, ich wette, Sie haben bereits nachgesehen, wie verdammt teuer sie zwischen 200 und 2000 US-Dollar sind, ZU VIEL RICHTIG!?? Nun, ein Freund und ich haben beschlossen, ein System zu entwickeln, das weniger als 100 US-Dollar kostet und noch mehr kann, als nur auf eine Tür zuzugreifen, also haben wir uns das einfallen lassen. Ein internetfähiger Arduino-RFID-Tag-Reader. das für 20 Dollar mehr Türen öffnen kann. Dieses System wurde entwickelt, um Schüler an unserer Highschool zu verfolgen, und wir hoffen, dass die Schule es genehmigt.

Hier ist der Prototyp:

Du denkst vielleicht, es könnte lange dauern, yatta yatta yatta. Dieses Ding dauerte jedoch nur etwa 6 Stunden (weil ich Probleme mit der Stromversorgung hatte), aber die Einrichtung wie im obigen Beispiel könnte etwa 30 Minuten dauern. Der gesamte Code und die Bilder sind unten. Wenn Sie bei den nächsten Schritten verwirrt sind, sehen Sie sich die unteren Bilder / den Code an.

Hier sind alle Schritte:

Bevor wir beginnen (notwendig)

Bevor wir Karten scannen und an unseren Telnet/TCP-Server senden können, benötigen wir einige Bibliotheken. Holen Sie sich UIPEthernet hier https://github.com/ntruchsess/arduino_uip

Holen Sie sich MFRC522 hier https://github.com/miguelbalboa/rfid

Legen Sie diese beiden Bibliotheken in Program Files (x86)/Arduino/Libraries/Restart arduino

Hardware

  1. Arduino Nano (Sie können Ihren Code jederzeit an Ihr Gerät anpassen)
  2. MFRC522 mit MAIFARE-Karten
  3. Überbrückungsdrähte (männlich zu männlich) (männlich zu weiblich)
  4. enc28j60 Ethernet-Modul/Schild
  5. RGB-LED
  6. 3 V ODER 5 V AC/DC-Wandler mit mehr als 700 Meilenampere

Einrichtung

  1. Befestige Arduino an Steckbrett (Wenn Nano oder Mikro)
  2. Suchen Sie online nach der Pinbelegung Ihres Boards, um das SPI-Setup zu finden (Werte unten ändern)
  3. Verbinden Sie Arduino Pin 10 (SS) mit dem Ethernet-Modul SS oder CS
  4. Verbinden Sie Arduino Pin 12 (MISO) mit RFID MISO und Ethernet SO
  5. Verbinden Sie Arduino Pin 11 (MOSI) mit RFID MOSI und Ethernet SI
  6. Verbinden Sie Arduino Pin 13 (SCK) mit RFID SCK und Ethernet SCK
  7. Verbinden Sie den Arduino-Pin 9 mit dem RFID-RST-Pin
  8. Verbinden Sie Arduino Pin 8 mit RFID SSN
  9. Verbinden Sie Arduino Pin 5 mit grüner LED, 4 mit blau und 3 mit rot
  10. Schließe deinen Wechselstrom an Gleichstrom an + und - auf deinem Steckbrett an
  11. Erden Sie Ihr Arduino an AC zu DC
  12. VCC und GND sowohl an rfid als auch an Ethernet an AC-DC anschließen (Denken Sie daran, dass diese Geräte NUR 3V SIND!!!!! liefern Sie keine 5V) Wenn das Problem besteht, verwenden Sie Widerstände, um die Spannung auf 3V zu bringen
  13. Verdrahten Sie den VCC-Pin der LED mit dem Arduino 3V oder AC-DC 3V
  14. Verbinden Sie das Ethernet-Kabel mit dem Modul und stellen Sie sicher, dass es sich im selben Netzwerk wie Ihr Computer befindet
  15. Verbinden Sie das USB-Kabel vom Computer mit dem Arduino
  16. Computer mit demselben Netzwerk verbinden


Code an Ihre Bedürfnisse anpassen

  1. Der Code ist ziemlich gut kommentiert, sodass Sie einfach hineingehen und bestimmte Teile ändern können, aber eines ist sicher das Ethernet-Modul
  2. Mac-Adresse kann gleich bleiben (es sei denn, Sie planen, mehrere davon zu erstellen)
  3. Wenn Sie eine 192.168. Basis-IP-Netzwerk Sie können die IP behalten
  4. Wieder können Sie die DNS behalten, nur die Zeit zum Ändern ist auf 8.8.4.4
  1. führen Sie ipconfig aus, um Ihr Gateway zu finden, der Standardwert ist 192.168.1.1 (wenn Sie ihn nicht kennen) (Der Code ist derzeit 192.168.1.5)
  2. führen Sie die Eingabeaufforderung aus und geben Sie ipconfig ein, um die IP-Adresse Ihres Computers herauszufinden
  1. scrollen Sie nach unten, um SEND TO SERVER zu finden, und geben Sie die IP Ihres Computers ein oder ob Ihr Port Ihren Router an Ihre öffentliche IP-Adresse weitergeleitet hat
  2. STELLEN SIE SICHER, DASS SIE PYTHON HABEN UND DEN SERVER AUSFÜHREN (Denken Sie daran, dass es sich nur um einen Beispielcode handelt, den wir für unsere Präsentation vor der Schule verwendet haben, daher war der Python-Server bereits vorgefertigt und fast nicht modifiziert, Sie können jeden Telnet/TCP-Server verwenden)

Und der andere Code, den Sie wahrscheinlich ändern müssen:


Ausführen des Codes

  1. Wechselstrom/Gleichstrom an die Wand anschließen
  2. Stellen Sie sicher, dass Ihr Arduino derzeit mit dem Computer verbunden ist
  3. Stellen Sie sicher, dass sich beide Geräte im selben Netzwerk befinden
  4. Flashen Sie Ihren modifizierten Arduino-Code oder wenn der, den ich habe, für Sie funktioniert, dann großartig (fast keine Chance, dass Sie ihn ändern müssen)
  5. Starten Sie Ihr Python-, C++-Skript oder einen anderen Telnet/TCP-Server in Ihrem Netzwerk
  6. Starten Sie Ihr Arduino zur Sicherheit neu
  7. Warten Sie, bis das Licht blau wird und versuchen Sie, eine Karte zu scannen. Wenn Ihr Server die ID der Karte erhalten hat, können Sie loslegen
  8. Denken Sie daran, was die Lichter bedeuten Violett/verblasstes Rot bedeutet Hochfahren
  9. Rot bedeutet, dass ein Fehler aufgetreten ist, beispielsweise dass die Karte in einem seltsamen Winkel war und/oder der Server nicht rechtzeitig reagiert hat
  10. Grün bedeutet bestanden, sodass der Server mit einem Versuch geantwortet hat und Sie Ihre nächste Karte lesen können
  11. Blau bedeutet Warten/Laden, warten auf eine Karte oder Antwort
  12. Wenn Ihr Arduino anfängt, sich zu verzögern und es länger als 30 Sekunden dauert, bis ein rotes Licht angezeigt wird, bedeutet das, dass das Arduino-Ethernet-Modul überhaupt keine Verbindung zum Server herstellen konnte. Dies kann durch mehrere Dinge verursacht werden. Erstens hat Ihr Arduino nicht genug Leistung und das Arduino-Ethernet-Modul hat Schwierigkeiten, ein Paket zu senden, oder Ihr Computerserver läuft nicht oder Ihr Arduino und Ihr Computer befinden sich nicht im selben Netzwerk.
  13. Wenn Ihr Arduino weiterhin verzögert, versuchen Sie diese Tricks, um sie zu beheben

  14. Deaktivieren Sie die Windows-Firewall

  15. Gehen Sie in die erweiterten Firewall-Einstellungen und erlauben Sie den eingehenden/ausgehenden Port 23
  16. Portweiterleitung Ihres Routers an Ihren Computer mit Port 23
  17. Wenn Sie drahtlos sind, verbinden Sie das Arduino direkt mit dem Router und Ihrem Computer mit demselben
  18. Kaufen Sie ein robusteres AC-DC-Netzteil
  19. Andernfalls haben Sie möglicherweise Ihre IP-Adresse oder Verbindungsadresse falsch eingegeben

  20. Entweder kontaktieren Sie mich unter [email protected], wenn es irgendwelche Probleme gibt

  21. DU BIST GUT ZU GEHEN!!!

Denken Sie daran, dass es keinen Code für das Türschlosssystem gibt, da ich keinen habe. Dies bedeutet, dass Sie einen Code hinzufügen müssen, wenn Sie dies nicht nur als Tracking-System, sondern als Türschloss-Tracking-System verwenden möchten.


Bitte lesen Sie unten:

Code

  • Der Arduino-Code
  • Beispiel-Servercode
Der Arduino-CodeC/C++
Dies ist die Software, die auf dem Arduino fast einsatzbereit ist. Sie müssen also nur Gateway, IP, Gateway, Mac-Adresse und DNS
 / * * ------------ anpassen ---------------------- * MFRC522 Arduino * Reader/PCD Nano v3 * Signal Pin Pin * -------------- -------------------- * RST/Reset RST D9 * SPI SS NSS D10 * SPI MOSI MOSI D11 * SPI MISO MISO D12 * SPI SCK SCK D13 */// DIE ERSTE BIBLIOTHEK, DIE INSTALLIERT WERDEN MUSS, IST UIP ETHERNET ZWEITE IST MFRC522 BEIDE SIND AUF GITHUB#include #include  //Für die Auswahl des Schlüssels#include  //Die RFID-Schlüsselbibliothek #define RST_PIN 9 // Konfigurierbar, siehe typisches Pin-Layout oben - Dies ist für den Arduino Nano - Für RFID #define SS_PIN 8 // WIR VERWENDEN 8 FÜR RFID, WEIL DAS ETHERNET-MODUL 10 Byte Sektor verwendet =0; Byte BlockAddr =0; ////////Zugriff auf bestimmte Sektoren/Blöcke in der Karte, Trailerblock ist der letzte Block Byte trailerBlock =1;int red =3;int blue =4; //Pins für RGB LEDint green =5;EthernetClient-Client; // ETHERNET-INSTANZMFRC522 mfrc522 (SS_PIN, RST_PIN); // MFRC522-Instanz erstellen.MFRC522::MIFARE_Key key; //Setze Schlüsselinstanzsigniertes langes Timeout; // TIMEOUT, DAMIT ES NICHT FÜR IMMER SITZT.void setup () {// UI BEGIN pinMode (rot, OUTPUT); PinMode (blau, AUSGANG); // Initieren Sie den RGB-LED-PinMode (grün, AUSGANG); Zurücksetzen(); // Beginnen Sie mit LEDs aus Serial.begin (9600); //Computerverbindung mit einer Rate von 9600 Bits pro Sekunde starten //UI END //ETHERNET MODULE INITIAL SPI.begin(); // SPI-Bus initiieren uint8_t mac[6] ={0x00,0x01,0x02,0x03,0x04,0x05}; //MAC =000102030405 IP-Adresse mip(192.168.1.160); //IP =192.168.1.160 IPAdresse mdns(8,8,8,8); //DNS =8.8.8.8 IPAddress mgate(192,168,1,5); //GATEWAY =192.168.1.5 IP-Adresse msubnet(255,255,255,0); // SUBNET =255.255.255.0 Ethernet.begin (mac, mip, mdns, mgate , msubnet); // VERBINDEN MIT OBEN Serial.println ( "Erfolgreiche Verbindung"); // ENDE VON ETHERNET for(int t =255; t> 0; t--) { analogWrite(red, t); ////Mehr anzeigen, aber mindestens eine Sekunde zwischen dem SPI des Ethernets und der RFID-Verzögerung (10) lassen; } //RFID INITIAL mfrc522.PCD_Init(); // Init MFRC522-Karte für (Byte i =0; i <6; i++) { // Bereiten Sie den Schlüssel vor (wird sowohl als Schlüssel A als auch als Schlüssel B verwendet) key.keyByte[i] =0xFF; // Verwenden von FFFFFFFFFFFFh, was die Standardeinstellung bei der Chiplieferung ab Werk ist} Serial.println (F ("Scan a Card")); dump_byte_array(key.keyByte, MFRC522::MF_KEY_SIZE); // Schlüsselbytegröße abrufen Timeout =0; Verzögerung (2000); Reset();}//END RFID INITIALvoid loop() //Für immer laufen{// Nach neuen Karten suchen if (! mfrc522.PICC_IsNewCardPresent()) { digitalWrite (blue, LOW); Rückkehr; } // Eine der Karten auswählen if ( ! mfrc522.PICC_ReadCardSerial()) return; digitalWrite (blau, HOCH); //Zeige dem Benutzer, dass die Karte gelesen wurde byte piccType =mfrc522.PICC_GetType(mfrc522.uid.sak); // Kompatibilität mit Mifare-Karte prüfen if ( piccType !=MFRC522::PICC_TYPE_MIFARE_MINI &&piccType !=MFRC522::PICC_TYPE_MIFARE_1K &&piccType !=MFRC522::PICC_TYPE_MIFARE_4K) { Error(); Rückkehr; } Bytestatus; Bytepuffer [18]; Bytegröße =sizeof(Puffer); status =mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid)); if (status !=MFRC522::STATUS_OK) { Serial.print (F ("PCD_Authenticate () fehlgeschlagen:")); Serial.println (mfrc522.GetStatusCodeName (Status)); Fehler(); Rückkehr; } // Daten aus dem Block lesen status =mfrc522.MIFARE_Read(blockAddr, buffer, &size); if (status !=MFRC522::STATUS_OK) { Serial.print (F("MIFARE_Read() fehlgeschlagen:")); Serial.println (mfrc522.GetStatusCodeName (Status)); Fehler(); } // PICC anhalten mfrc522.PICC_HaltA(); // Verschlüsselung auf PCD stoppen mfrc522.PCD_StopCrypto1(); // NACH DEM LESEN DER KARTE AN SERVER SENDEN if (client.connect(IPAddress(192,168,1,100),23)) { timeout =millis()+1000; Serial.println ("Client verbunden"); const String-ID =dump_byte_array(Puffer, Größe); client.println(ID); Serial.println("gesendet:" + ID); Verzögerung(10); while(client.available()==0) { if (timeout - millis() <0) goto close; } int-Größe; while((size =client.available())> 0) { uint8_t* msg =(uint8_t*)malloc(size); Größe =client.read (Nachricht, Größe); Serial.write (Nachricht, Größe); if(size ==sizeof("g") - 1) { Pass(); } sonst { Fehler(); } kostenlos (Nachricht); }schließen:client.stop(); } else { Serial.println ( "Verbindung zum Server konnte nicht hergestellt werden"); Fehler(); } //ENDE SENDEN ZUM SERVER Reset(); // LOOP OHNE LEDS NEU STARTEN} // DAS BUFFER-ARRAY IN EINE EINZELNE STRING IN GROSSBUCHSTABEN MACHEN, DIE UNSERER ID DES SEKTORS UND BLOCKString ENTSPRECHEND dump_byte_array(byte *buffer, byte bufferSize) { String out =""; for (byte i =0; i  
BeispielservercodePython
Hier ist ein vollständiges Beispiel für die Verwendung des server
import SocketServerclass MyTCPHandler(SocketServer.BaseRequestHandler):def handle(self):# self.request ist der mit dem Client verbundene TCP-Socket self.data =self.request.recv (1024).strip() print "{} hat geschrieben:".format(self.client_address[0]) print self.data """ SQL STUFF HIER if(self.data ==SQL NAME oder so) { self.request .sendall("g")//gut senden // ZEIT UND STANDORT HIER IN SQL EINFÜGEN { else { self.request.sendall("bb")//schlecht senden // NICHTS nur an Arduino senden schlechte Daten} "" " self.request.sendall("g")if __name__ =="__main__":HOST, PORT ="", 23 server =SocketServer.TCPServer((HOST, PORT), MyTCPHandler) server.serve_forever()
Aktualisierter Code auf GitHub
Hier erhalten Sie den aktuellsten Codehttps://github.com/smerkousdavid/InternetRFIDTags

Schaltpläne

Die Schaltung ist einfach, also habe ich nur ein Foto mit der Verkabelung gemacht

Herstellungsprozess

  1. Grußkarte
  2. Kreditkarte
  3. Arduino RFID-Schloss mit RC522 - MIFARE-Protokoll 13,56 Mhz
  4. Anleitung zum Arduino-RFID-Schloss
  5. Anwesenheitssystem mit Arduino und RFID mit Python
  6. Arduino Spybot
  7. FlickMote
  8. Selbstgemachter Fernseher B-Gone
  9. Hauptuhr
  10. Arduino Amiga Diskettenleser (V1)