RFID Reader - Arduino Ethernet RC522

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • uli
    LoxBus Spammer
    • 30.08.2015
    • 225

    #16
    Wie lange ist die Reaktionszeit Deiner Lösung in etwa (also vom Anhalten bis zur Türöffnung)?

    Und wie hast Du das mit der Spannungsversorgung gelöst?

    Kommentar

    • hismastersvoice
      Supermoderator
      • 25.08.2015
      • 7318

      #17
      sehr schnell ca 1 Sekunde + Zeit des Türschloß, bei mir also 2-3Sek.
      Spannung kommt bei mir per POE.
      Kein Support per PN!

      Kommentar

      • uli
        LoxBus Spammer
        • 30.08.2015
        • 225

        #18
        POE hätte mir nämlich auch vorgeschwebt. Das heißt Du hast zusätzlich zur obigen Liste noch ein "PoE Module 5V" verbaut?

        Kommentar

      • roadi
        MS Profi
        • 26.08.2015
        • 558

        #19
        Ich wollte jetzt keinen Extra Thread aufmachen. Aber habt ihr die schon gesehen?



        Sollten eigentlich funktionieren. Hab momentan ibuttons in Betrieb. Da ich aber immer wieder Metallspäne dran kleben habe nervt das etwas.

        Nur weis ich nicht ob das auch mit einem elektronischen Schlüsselbrett machbar wäre :-/
        Loxone: 1x Miniserver, 8x Extension, 2x Dimmer, 1x Relay 2x 1Wire, 1x DMX, 1x Fröling, 1x AirBase, 1x NanoIO Air, 1x RemoteAir, 2x Multi Extension Air
        Dmx4all:4x X9, 1x MaxiRGBW, 1x RGB
        Synology: DS414, 4x4TB WD red,
        Intel NUC7I3BNK: Proxmox, MusikServer4Lox, Win10, loxberry, Verstärker für 10 Zonen Eigenbau
        Fritzbox: 7490
        Rasenmäher: Husqvarna Automower 420 (2017), Robonect HX R3 Modul

        Kommentar

        • Vossi
          LoxBus Spammer
          • 25.08.2015
          • 456

          #20
          Ja, die Teile funktionieren. Habe sie schon vor einiger Zeit getestet, läuft soweit...

          Kommentar


          • Gast
            Gast kommentierte
            Kommentar bearbeiten
            Hallo.
            Muss mich einmal einklinken.
            Ich möchte einen RFID als Zugangskontakt einsetzen.
            Funktioniert der RFID von "eservice" direkt an der 1Wire-Extention?
            Versucht habe ich es. Aber leider kriege ich keine Meldung von dem RFID Test!
            Hat einer eine IDee?

            Danke
            Hans-Jürgen

          • Vossi
            Vossi kommentierte
            Kommentar bearbeiten
            Hallo Hans-Jürgen,
            sollte gehen. Zwar habe ich nicht den von Eservice online getestet, meiner sieht aber genau so aus. Auch der Anschluss scheint gleich zu sein. Wichtig ist, dass die Versorgungsspannung nicht von der 1wire-Ext. kommen kann/darf -- die reicht nämlich nicht. Für die Versorgungsspannung des RFID-Teils unbedingt ein eigenes Netzteil mit angegebener Spannung, Masse zusätzlich an den Masse-Kontakt des 1wire-Busses (Datenleitung sowieso an 1wire-Ext.). Dann sollte es eigentlich laufen. Ach ja: Die LEDs machen zunächst nichts! Solange du sie nicht mit z.B. DOs vom MS ansteuerst.
        • Gast

          #21
          Hallo Vossi und ...
          Frohe Weihnachten allen die mitlesen!
          Ja. Das Problem habe ich auch schon gelöst.
          DQ und Masse auf 1 Wire, Strom vom 24V Netzteil.
          Funktioniert dann wie ein Ibotton.
          Man muss natürlich die Schlüssel einlesen um in der LOXON-Config unter 1Wire suchen etwas zu sehen.
          Hatte bei meinen Versuchen einen defekten Schüssel (Der Teufel versteckt sich in den unscheinbarsten Dingen.)
          Darum bin ich am Anfang verzweifelt.

          Aber alles gut.
          Ich hatte auch bei eService nachgefragt. Ihre Anwort: "Geht nicht!" Aber in Bezug auf die Seriennummer des RFid's. Den kann man nicht auslesen um eine Standortbestimmung machen zu können.
          Werde mir mal das 1Wire von eService zulegen. Vielleicht kriege ich es damit hin.

          Danke für die Rückmeldung und
          Frohe...
          Hans-Jürgen Schilling

          Kommentar

          • Gast

            #22
            Loxone bringt ja bald die festen NFC Tags für das NFC Code Touch raus. Ich nutze schon seit einiger Zeit den RFID Reader, bin nun am Überlegen den Touch an der Haustür nach zu rüsten und den Reader für die Nebentüren zu nutzen. Weiß schon jemand, ob die Loxone Tags auch per RFID auslesbar sind. Die ID soll ja bei einigen Readern funktionieren. Es wäre halt schön dann dauerhaft ein Medium zu haben.
            hismastersvoice Es gibt ja auch NFC Reader für Arduino. Hast du schon mal was in die Richtung gemacht?
            Gruß
            Christoph

            Kommentar

            • hismastersvoice
              Supermoderator
              • 25.08.2015
              • 7318

              #23
              Was sind "feste" NFC Tag?

              Der eigentliche Unterschied zwischen RFID und NFC mit 13.57MHz ist die zurück gegebene Länge des Code.
              RFID gibt im Standart xx xx xx xx zurück NFC xx xx xx xx xx xx xx.
              Da das Board auf 13MHz basiert sollte es reichen den Code anzupassen.
              Kein Support per PN!

              Kommentar

              • Gast

                #24
                Hallo hismastersvoice , ich habe die Schaltung am WE nachgebaut und bekomme es nicht ans laufen: Nano und RFIS522 bzw. Nano und W5100 funktionieren jeweils einzeln, baue ich jedoch Nano und W5100 samt RFID522 gleichzeitig laut Anleitung zusammen, bekommt der Nano keine DCHP-Verbindung mehr. Mir scheint die beiden Nano-Erweiterungen blockieren sich (beide senden/empfangen gleichzeitig seriell?).
                Nano bootet, RGB-LED geht an, aber DHCP erhält keine IP. Ziehe ich den 522er ab, bekommt der Nano eine IP. An der Wartezeit liegt es nicht - auch nach 10 Minuten keine IP.

                Liegt es vielleicht an diesen 522er Pins? Die sind im Code enthalten, in der Schaltung unten aber nicht. Port 8 habe ich gar nicht verkabelt, Pin 9 an Nano SDA.
                // Definition Pins fuer RC522
                #define SS_PIN 9 // SS-Pin fuer RC522
                #define RST_PIN 8 //RST-Pin fuer RC522
                // MFRC522 Instanz eroeffnen
                MFRC522 mfrc522(SS_PIN, RST_PIN);


                Ich verkable (über ein Breadboard) wie im ersten Post beschrieben:

                Elektrische Verbindungen (Schaltung)
                Ethernet zu Breadboard
                MO -> Pin 11
                MI -> Pin 12
                SCK -> Pin 13
                SS -> Pin 10
                5v -> 5V
                GND -> GND

                RC522 zu Breadboard
                MO -> Pin 11
                MI -> Pin 12
                SCK -> Pin 13
                SDA -> Pin 9
                5v -> 5V
                GND -> GND

                RGB-LEDs und Buzzer zu Arduino (direkt)
                Grün -> Pin7
                Blau -> Pin 6
                Rot -> Pin 5
                GND -> GND

                Arduino zu Breadboard:
                Pin 9 - Pin 9
                Pin 10 - Pin 10
                Pin 11 - Pin 11
                Pin 12 - Pin 12
                Pin 13 - Pin 13
                5V - VIN
                GND - GND

                Kommentar

                • hismastersvoice
                  Supermoderator
                  • 25.08.2015
                  • 7318

                  #25
                  Ich nutze das ganze so nicht mehr, deswegen kann ich wenig dazu sagen. Habe alles auf ESP8266 bzw. ESP32 umgestellt.

                  Verbinde mal noch PIN8 auf RST des 522iger


                  Kein Support per PN!

                  Kommentar

                  • Gast

                    #26
                    Leider keine Änderung. Auch bei zusätzlichem Anschluss des 522er RST auf den Nano Pin 8 leider kein DHCP mehr möglich.
                    Die LED scheint zu funktionieren - eine Sekunde nach Stromanschluß an den Arduino geht sie blau an.
                    Gast sonorobby oder sonst irgendjemand hier, der mir weiterhelfen kann? Ich denke ich bin recht kurz vorm Ziel, aber ich komme alleine nicht weiter ;(

                    Kommentar


                    • hismastersvoice
                      hismastersvoice kommentierte
                      Kommentar bearbeiten
                      Mach mal Fotos deiner Verdrahtung und hänge den Code an...
                  • Gast

                    #27
                    Ich hoffe das ist so nachvollziehbar:

                    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: IMG_8303.JPG Ansichten: 0 Größe: 1,14 MB ID: 191839
                    LED: RGB an Nano 576, GND LED and GND Arduino.
                    LED geht


                    Breadboard:
                    5V an ROT (NANO, ETH, RFID)
                    GND an SCHWARZ (NANO, ETH, RFID)
                    Pin 9 - GRÜNE KABEL (NANO <> RFID)
                    Pin 10 - WEISSES KABEL (NANO <>ETH)
                    Pin 11 - ORANGES KABEL (ALLE)
                    Pin 12 - GELBES KABEL (ALLE)
                    Pin 13 - BRAUNES KABEL (ALLE)

                    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: IMG_8305 (2).JPG Ansichten: 0 Größe: 400,0 KB ID: 191842
                    Habe ein zweites Board drunter gelegt daß man die Pinbelegung besser ablesen kann - nur fürs Foto...

                    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: IMG_8306 (2).JPG Ansichten: 0 Größe: 346,6 KB ID: 191844
                    Orange MO
                    Weiss SS
                    ROT +5

                    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: IMG_8307 (2).JPG Ansichten: 0 Größe: 307,1 KB ID: 191846
                    Schwarz GND
                    Braun CK
                    Gelb Mi

                    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: IMG_8308 (2).JPG
Ansichten: 913
Größe: 396,6 KB
ID: 191848
                    Nicht verwirren lassen - ich hab die Pins nach unten weg an den arduino angebracht...
                    Braun Pin 13
                    Gelb Pin 12
                    Orange Pin 11
                    Weiss Pin 10
                    Grün Pin 9

                    Testweise hatte ich Pin 8 mit RST von RFID zusammengeschaltet - hat nichts gebracht.
                    Habs wieder entfernt.


                    Code:
                    [FONT=courier new]// RFID 2 Loxone Miniserver
                    // DHCP Version
                    
                    //Bibliotheken die benoetigt werden
                    #include <SPI.h>
                    #include <Ethernet.h>
                    #include <EthernetUdp.h>
                    #include <MFRC522.h>
                    
                    // Definition Befehle
                    #define LED_ON HIGH
                    #define LED_OFF LOW
                    #define BUZZER_ON HIGH
                    #define BUZZER_OFF LOW
                    
                    // Definition Pins
                    #define greenLed 7 // Farbe gruen RGB LED
                    #define blueLed 6 // Farbe blau RGB LED
                    #define redLed 5 // Farbe rot RGB LED
                    #define buzzer 4 // Buzzer/Summer
                    
                    // Definition Pins fuer RC522
                    #define SS_PIN 9 // SS-Pin fuer RC522
                    #define RST_PIN 8 //RST-Pin fuer RC522
                    
                    // MFRC522 Instanz eroeffnen
                    MFRC522 mfrc522(SS_PIN, RST_PIN);
                    
                    // Variablen
                    byte readCard[4];
                    String uID;
                    
                    // Netzwerk Einstellungen
                    // bei mehr als einem Reader MAC anpassen (Anmerkung: MAC funktioniert wenn nur ethernet angeschlossen ist)
                    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
                    // UDP Port zum Datenempfang Lox MS -> Arduino
                    unsigned int ARDUPORT = 7003;
                    
                    // IP Lox MS (Anmerkung: IP hier abgeändert - funktioniert wenn nur ethernet angeschlossen ist)
                    IPAddress MSIP(192, 168, 123, 123);
                    // UDP Port zum Datenversand Arduino -> Lox MS
                    unsigned int MSPORT = 7003;
                    
                    // Daten-Buffer
                    char packetBuffer[UDP_TX_PACKET_MAX_SIZE];
                    
                    // EthernetUDP Instanz um UDP zu senden/empfangen
                    EthernetUDP Udp;
                    
                    // Programm
                    void setup() {
                      Serial.begin(9600);
                    
                      pinMode(greenLed, OUTPUT);
                      pinMode(blueLed, OUTPUT);
                      pinMode(redLed, OUTPUT);
                      pinMode(buzzer, OUTPUT);
                      digitalWrite(buzzer, BUZZER_OFF); // stellt sicher das
                      digitalWrite(redLed, LED_OFF);
                      digitalWrite(greenLed, LED_OFF);
                      digitalWrite(blueLed, LED_OFF);
                    
                      if (!Ethernet.begin(mac)) Serial.println("DHCP fehlgeschlagen");
                      else {
                    
                        Serial.println ("Netzwerkdaten");
                        Serial.println ("---------------");
                        Serial.print("Arduino MAC: ");
                        Serial.print(mac[0], HEX);
                        Serial.print(":");
                        Serial.print(mac[1], HEX);
                        Serial.print(":");
                        Serial.print(mac[2], HEX);
                        Serial.print(":");
                        Serial.print(mac[3], HEX);
                        Serial.print(":");
                        Serial.print(mac[4], HEX);
                        Serial.print(":");
                        Serial.println(mac[5], HEX);
                        Serial.print("Arduino IP: ");
                        Serial.println(Ethernet.localIP());
                        Serial.print("Arduino UDP Port: ");
                        Serial.println(ARDUPORT);
                        Serial.println ("---------------");
                        Serial.print ("Miniserver IP: ");
                        Serial.println(MSIP);
                        Serial.print("Miniserver UDP Port: ");
                        Serial.println(MSPORT);
                        Serial.println ("---------------");
                      }
                      Udp.begin(ARDUPORT); // Start UDP
                    
                      SPI.begin();        // Init SPI bus
                      mfrc522.PCD_Init(); // Init MFRC522 Karte
                      mfrc522.PCD_SetAntennaGain(mfrc522.RxGain_max); // Setzt Antenne auf max. Empfang
                    }
                    
                    void loop() {
                    
                      // schaut on ein UDP Befehl empfangen wurde
                      checkUDP();
                    
                      if (!strcmp(packetBuffer, "OK"))
                      {
                        uuid_ok();
                      }
                      else if (!strcmp(packetBuffer, "NOK"))
                      {
                        uuid_notok();
                      }
                      else if (!strcmp(packetBuffer, "SAB"))
                      {
                        uuid_lock();
                      }
                      else {
                        wait_picc();
                      }
                    
                      // RDIF lesen und Werte bearbeiten
                      if ( ! mfrc522.PICC_IsNewCardPresent()) {
                        return;
                      }
                      if ( ! mfrc522.PICC_ReadCardSerial()) {
                        return;
                      }
                      int val1 = (mfrc522.uid.uidByte[0]);
                      int val2 = (mfrc522.uid.uidByte[1]);
                      int val3 = (mfrc522.uid.uidByte[2]);
                      int val4 = (mfrc522.uid.uidByte[3]);
                    
                      String valA = String(val1, HEX);
                      String valB = String(val2, HEX);
                      String valC = String(val3, HEX);
                      String valD = String(val4, HEX);
                    
                      uID = valA + valB + valC + valD;
                    
                      Serial.print("RFID-Key: ");
                      Serial.print(uID);
                      Serial.println();
                      sendUDP(uID);
                      mfrc522.PICC_HaltA();
                      return;
                    }
                    
                    //empfangene UDP-Befehle auswerten
                    void checkUDP()
                    {
                      // if there's data available, read a packet
                      int packetSize = Udp.parsePacket();
                      if (packetSize)
                      {
                        // read the packet into packetBufffer
                        Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE);
                      }
                      delay(10);
                    }
                    
                    //UDP-Befehl senden
                    void sendUDP(String text)
                    {
                      Udp.beginPacket(MSIP, MSPORT);
                      Udp.print(text);
                      Udp.endPacket();
                      delay(10);
                    }
                    
                    //RFID PIC OK
                    // LED gruen geht an, Buzze piep einmal kurz (50ms)
                    void uuid_ok() {
                      digitalWrite(blueLed, LED_OFF);
                      digitalWrite(redLed, LED_OFF);
                      digitalWrite(greenLed, LED_ON);
                      digitalWrite(buzzer, BUZZER_ON);
                      delay(50);
                      digitalWrite(buzzer, BUZZER_OFF);
                      delay(1000);
                      for (int i = 0; i < UDP_TX_PACKET_MAX_SIZE; i++) packetBuffer[i] = 0;
                    }
                    
                    //RFID PIC nicht OK
                    // LED rote geht an, Buzze piep zweimal kurz (50ms)
                    void uuid_notok() {
                      digitalWrite(greenLed, LED_OFF);
                      digitalWrite(blueLed, LED_OFF);
                      digitalWrite(redLed, LED_ON);
                      digitalWrite(buzzer, BUZZER_ON);
                      delay(50);
                      digitalWrite(buzzer, BUZZER_OFF);
                      delay(100);
                      digitalWrite(buzzer, BUZZER_ON);
                      delay(50);
                      digitalWrite(buzzer, BUZZER_OFF);
                      delay(1000);
                      for (int i = 0; i < UDP_TX_PACKET_MAX_SIZE; i++) packetBuffer[i] = 0;
                    }
                    
                    //Schloss gesperrt
                    // LED rot geht an, Buzze piep dreimal lang (250ms)
                    void uuid_lock() {
                      digitalWrite(greenLed, LED_OFF);
                      digitalWrite(blueLed, LED_OFF);
                      digitalWrite(redLed, LED_ON);
                      digitalWrite(buzzer, BUZZER_ON);
                      delay(250);
                      digitalWrite(buzzer, BUZZER_OFF);
                      delay(50);
                      digitalWrite(buzzer, BUZZER_ON);
                      delay(250);
                      digitalWrite(buzzer, BUZZER_OFF);
                      delay(50);
                      digitalWrite(buzzer, BUZZER_ON);
                      delay(250);
                      digitalWrite(buzzer, BUZZER_OFF);
                      delay(1000);
                      for (int i = 0; i < UDP_TX_PACKET_MAX_SIZE; i++) packetBuffer[i] = 0;
                    }
                    
                    //Wartet auf RFID PIC
                    //Grundeinstellung blaue LED ist ein und wartet auf PICC
                    void wait_picc() {
                      digitalWrite(greenLed, LED_OFF);
                      digitalWrite(blueLed, LED_ON);
                      digitalWrite(redLed, LED_OFF);
                    }[/FONT]
                    Zuletzt geändert von Gast; 25.02.2019, 21:13.

                    Kommentar


                    • sonorobby
                      sonorobby kommentierte
                      Kommentar bearbeiten
                      Du kannst dem Arduino bzw. dem W5100 Shield eine feste IP vergeben, dann muss er sich nicht immer über den DHCP Server eine neue Anfragen.
                      Ist bei den Arduinos ab und an mal echt ein Problem.

                      Der Syntax sollte sein wenn du die Standard Arduino nimmst:

                      #include <SPI.h>
                      #include <Ethernet.h>
                      // network configuration. dns server, gateway and subnet are optional.
                      // the media access control (ethernet hardware) address for the shield:
                      byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

                      // the dns server ip
                      IPAddress dnServer(192, 168, 0, 1);
                      // the router's gateway address:
                      IPAddress gateway(192, 168, 0, 1);
                      // the subnet:
                      IPAddress subnet(255, 255, 255, 0);

                      //the IP address is dependent on your network
                      IPAddress ip(192, 168, 0, 2);

                      void setup() {
                      Serial.begin(9600);

                      // initialize the ethernet device
                      Ethernet.begin(mac, ip, dnServer, gateway, subnet);

                      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
                      Für einen ESP8266 nimmt man diesen Syntax:

                      //set fix IP ADDRESS
                      IPAddress ip(192, 168, 2, 155);
                      IPAddress gateway(192, 168, 2, 1);
                      IPAddress subnet(255, 255, 255, 0);
                      IPAddress dns(192, 168, 2, 1);
                      WiFi.config(ip, dns, gateway, subnet);

                    • Gast
                      Gast kommentierte
                      Kommentar bearbeiten
                      sonorobby Danke. Setze ich die IP manuell, bleibt das Programm nach der Anzeige der Netzwerkdaten stehen. Setze ich die IP fest und entferne den ethernet-shield vor dem Programmstart, zeigt er die Netzwerkdaten und beginnt angehaltene Karten anzuzeigen. Sobald der ethernet-shield wieder dazugesteckt wird, werden keine karten mehr erkannt.
                  • Gast

                    #28
                    Ich habe hier drei nanos, drei rfid-reader und einen ethernet-shield. Wenn es mit einem ESP8266 läuft, versuche ich es gerne so. Gibt es dafür ein Tutorial irgendwo?

                    Kommentar


                    • sonorobby
                      sonorobby kommentierte
                      Kommentar bearbeiten
                      Esp ist ja auch nur nen atmega daher sollte es eins zuneins funktionieren. Das ethernet shield kann dann weg und du musst die pins überprüfen sprich ein ausgänge...
                      Probiers aus schadet ja nicht....
                  • Gast

                    #29
                    Kann der Aufsatz für Loxone wieder zur Verfügung gestellt werden?

                    Kommentar

                    • hismastersvoice
                      Supermoderator
                      • 25.08.2015
                      • 7318

                      #30
                      https://www.loxforum.com/filedata/fetch?id=21936
                      Kein Support per PN!

                      Kommentar

                      Lädt...