Zum Inhalt springen

#20 Gesichertes Eingangsprojekt mit PicoBricks

07 Nov 2023
#20 Secured Entrance Project With PicoBricks

Zu den Sicherheitssystemen gehören Technologien, die den Zugang zu Gebäude- und Raumeingängen kontrollieren können. Zu den ersten Beispielen, die einem in den Sinn kommen, gehören Kartenzutrittssysteme, mit denen nur autorisiertes Personal die Operationssäle von Krankenhäusern betreten kann. Darüber hinaus sind viele Eingangsbereiche mit Karten- und Passworteingabetechnologien ausgestattet. Diese elektronischen Systeme verhindern nicht nur den Zutritt Unbefugter, sondern sorgen auch dafür, dass Ein- und Ausgangsinformationen erfasst werden. Passworteingabe, Karteneingabe, Fingerabdruckscan, Gesichtsscan, Netzhautscan und Spracherkennungstechnologien sind die Authentifizierungsmethoden, die in elektronischen Zugangssystemen verwendet werden.

Systeme wie RFID und NFC sind heute die Grundformen kontaktloser Zahlungstechnologien. Obwohl sich die kontaktlose Zahlungstechnologie bei Kreditkarten technisch unterscheidet, ist die Arbeitslogik dieselbe. Der maximale Abstand zwischen Lesegerät und Karte ist eines der Merkmale, die die Technologien voneinander unterscheiden. Beim Verlassen der Einkaufsgeschäfte, insbesondere Bekleidungsgeschäfte, piepen NFC-Tags an den Produkten, wenn diese von den Lesegeräten am Eingang erkannt werden. In diesen Systemen kommt eine Art RFID-Technologie zum Einsatz.

In diesem Projekt werden wir ein Kartenzutrittssystem an einem Modellhaus vorbereiten. Die von uns verwendeten elektronischen Komponenten sind ein MFRC522-RFID-Lesegerät und 13,56-MHz-Karten.

Details und Algorithmus

Platzieren Sie den MFRC522-Leser in der Nähe der Tür des Modells, sodass er von außen sichtbar ist. Setze das RGB-LED und der Summer an der Wand, wo die Tür von außen sichtbar ist. Picoboard kann im Modell verbleiben. Die Eingangstür des Modells sollte mit der Tür des Servos verbunden sein, während das Servo auf 0 Grad eingestellt ist, sollte die Tür geschlossen sein. Sie sollten die Seriennummer des RFID-/NFC-Tags ermitteln, der die Tür öffnet, und erstellen Hausbesitzer Variable und weisen Sie dieser Variablen die Seriennummer zu.

Stellen Sie die Tür beim Programmstart auf die geschlossene Position. Mach das Summer Signalton, wenn eine Karte dem RFID-Lesegerät gezeigt wird. Wenn die Seriennummer der gelesenen Karte mit der Seriennummer in der Hausbesitzervariablen übereinstimmt, schalten Sie die RGB-LED auf grün. Dann lassen Sie die Tür aufgehen. Stellen Sie sicher, dass die Tür 3 Sekunden nach dem Öffnen der Tür geschlossen ist. Wenn die Seriennummer der gelesenen Karte nicht mit der übereinstimmt Hausbesitzer variabel, schalten Sie die RGB-LED auf rot und ertönen Sie einen anderen Ton als der Summer.

Komponenten

1X PicoBricks
1X Servomotor
1X RC522-RFID-Karte
Überbrückungskabel
Einfache Verbindungskabel

Schaltplan

Sie können die Module von Picobricks ohne Verkabelung programmieren und betreiben. Wenn Sie die Module getrennt von der Platine verwenden möchten, sollten Sie die Modulverbindungen mit Grove-Kabeln herstellen.

Bauphasen des Projekts

Wir erstellen das Projekt nach dem Hausmodell, das Sie im Smart Home-Projekt Nr. 18 verwendet haben.

Klicken Sie hier, um zum Smart Home-Projekt zu gelangen

Bohren Sie Löcher für die RGB-LED, den Summer und den RC522-RFID-Leser am Hausmodell.

Bringen Sie doppelseitiges Schaumstoffband auf der Rückseite der RGB-LED und des Summers an und befestigen Sie es an der Box. Platzieren Sie den RC522 wie im Bild im Modell.

Befestigen Sie den Servomotor mit doppelseitigem Klebeband als Scharnier an der Innenseite des Modells in der oberen linken Ecke der Tür. Befestigen Sie den Servokopf mit Heißkleber oder Flüssigkleber an der Tür.

Platzieren Sie abschließend die Pico-Platine und den 2-Schlüssel-Batteriekasten im Modellhaus und stellen Sie die Kabelverbindungen her. Nachdem Sie die letzten Kontrollen Ihres Projekts durchgeführt haben, ist es betriebsbereit.

MicroBlocks-Codes der PicoBricks

Sie können auf die Microblocks-Codes des Projekts zugreifen, indem Sie das Bild auf die Registerkarte „Microblocks Run“ ziehen oder auf klicken Taste.

Registerkarte „Mikroblöcke ausführen“.

MicroPython-Codes der PicoBricks

Der Code, der zum Erlernen der Karten-ID ausgeführt werden muss:

Vom Maschinenimport Pin, SPI
aus mfrc522 MFRC522 importieren
Zeit importieren
# Bibliotheken definieren
sck = Pin(18, Pin.OUT)
mosi = Pin(19, Pin.OUT)
miso = Pin(16, Pin.OUT)
sda = Pin(17, Pin.OUT)
rst = Pin(15, Pin.OUT)
spi = SPI(0, Baudrate=100000, Polarität=0, Phase=0, sck=sck, mosi=mosi, miso=miso)
rdr = MFRC522(spi, sda, rst)
# MFRC522-Pins definieren
während True:
    (stat, tag_type) = rdr.request(rdr.REQIDL)
    if stat == rdr.OK:
        (stat, raw_uid) = rdr.anticoll()
        if stat == rdr.OK:
            uid = ("0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
            print(uid)
            utime.sleep(1)
            # Lesen Sie die Karte und geben Sie die Seriennummer der Karte an

Projektnummer:
Vom Maschinenimport I2C, Pin, SPI, PWM
aus mfrc522 MFRC522 importieren
aus ws2812 NeoPixel importieren
aus utime import schlaf

Servo = PWM(Pin(21))
servo.freq(50)
servo.duty_u16(1350) # Servo-Set 0 Winkel 8200 für 180.
Summer = PWM(Pin(20, Pin.OUT))
Buzzer.freq(440)
neo = NeoPixel(6, n=1, Helligkeit=0,3, autowrite=False)
ROT = (255, 0, 0)
GRÜN = (0, 255, 0)
SCHWARZ = (0, 0, 0)

sck = Pin(18, Pin.OUT)
mosi = Pin(19, Pin.OUT)
miso = Pin(16, Pin.OUT)
sda = Pin(17, Pin.OUT)
rst = Pin(15, Pin.OUT)
spi = SPI(0, Baudrate=100000, Polarität=0, Phase=0, sck=sck, mosi=mosi, miso=miso)

Hausbesitzer = „0x734762a3“
rdr = MFRC522(spi, sda, rst)

während True:
    (stat, tag_type) = rdr.request(rdr.REQIDL)
    if stat == rdr.OK:
        (stat, raw_uid) = rdr.anticoll()
        if stat == rdr.OK:
            Buzzer.duty_u16(3000)
            Schlaf(0,05)
            Buzzer.duty_u16(0)
            uid = ("0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
            print(uid)
            schlafen(1)
            wenn uid == Hausbesitzer:
                neo.fill(GRÜN)
                neo.show()
                servo.duty_u16(6000)
                schlafen(3)
                servo.duty_u16(1350)
                neo.fill(SCHWARZ)
                neo.show()
            anders:
                neo.fill(ROT)
                neo.show()
                schlafen(3)
                neo.fill(SCHWARZ)
                neo.show()
                servo.duty_u16(1350)
 

Arduino C-Codes der PicoBricks

Der Code, der zum Erlernen der Karten-ID ausgeführt werden muss:

 

#include 
#include 
// Bibliotheken definieren
int RST_PIN = 26;
int SS_PIN = 17;
// Pins definieren
MFRC522 RFID(SS_PIN, RST_PIN);

void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
}

void loop() {
  if (!rfid.PICC_IsNewCardPresent())
    zurückkehren;
  if (!rfid.PICC_ReadCardSerial())
    zurückkehren;
  rfid.uid.uidByte[0];
  rfid.uid.uidByte[1];
  rfid.uid.uidByte[2];
  rfid.uid.uidByte[3];
  printid();
  rfid.PICC_HaltA();
  // Deinen Ausweis lesen.
}

void printid() {
  Serial.print("Ihre ID: ");
  for (int x = 0; x < 4; x++) {
    Serial.print(rfid.uid.uidByte[x], HEX);
    Serial.print(" ");
  }
  Serial.println("");
}

Projektnummer:

#include 
#include 
#include 
#include 
//Bibliotheken definieren.
#define RST_PIN 26
#define SS_PIN 17
#servoPin 22 definieren
#PIN 6 festlegen
#define NUMPIXEL 1
#Summer definieren 20
//Pins von Servo, Summer, Neopixel und RFID definieren.
Adafruit_NeoPixel Pixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Servomotor;
MFRC522 RFID(SS_PIN, RST_PIN);
byte ID[4] = {"Schreiben Sie Ihre eigene ID."}; // Durch Ihre tatsächliche ID ersetzen
void setup() {
  pixels.begin();
  motor.attach(servoPin);
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  pinMode(summer, OUTPUT);
}

void loop() {
  pixels.clear();
  if ( !rfid.PICC_IsNewCardPresent())
    zurückkehren;
  if ( !rfid.PICC_ReadCardSerial())
    zurückkehren;
  if (rfid.uid.uidByte[0] == ID[0] &&
      rfid.uid.uidByte[1] == ID[1] &&
      rfid.uid.uidByte[2] == ID[2] &&
      rfid.uid.uidByte[3] == ID[3]) {
    Serial.println("Tür geöffnet.");
    printid();
    Ton(Summer,523);
    Verzögerung(200);
    noTone(Summer);
    Verzögerung(100);
    Ton(Summer,523);
    Verzögerung(200);
    noTone(Summer);
    pixels.setPixelColor(0, pixels.Color(0, 250, 0));
    Verzögerung(200);
    pixels.show();
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));
    Verzögerung(200);
    pixels.show();
    motor.write(180);
    Verzögerung (2000);
    motor.write(0);
    Verzögerung (1000);
    //RGB-LED leuchtet grün und die Tür öffnet sich dank des Servomotors, wenn die richtige Karte vom Sensor gelesen wird.
  } anders {
    Serial.println("Unbekannte Karte.");
    printid();
    Ton(Summer,494);
    Verzögerung(200);
    noTone(Summer);
    Verzögerung(100);
    Ton(Summer,494);
    Verzögerung(200);
    noTone(Summer);
    pixels.setPixelColor(0, pixels.Color(250, 0, 0));
    Verzögerung(100);
    pixels.show();
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));
    Verzögerung(100);
    pixels.show();
    //RGB-LED leuchtet rot und die Tür öffnet sich nicht, wenn die falsche Karte vom Sensor gelesen wird.
  }
  rfid.PICC_HaltA();
}

void printid() {
  Serial.print("ID-Nummer: ");
  for (int x = 0; x < 4; x++) {
    Serial.print(rfid.uid.uidByte[x], HEX);
    Serial.print(" ");
  }
  Serial.println("");
}

GitHub-Projektseite
Vorheriger Beitrag
Nächster Beitrag

Danke fürs Abonnieren!

Diese E-Mail wurde registriert!

Shoppen Sie den Look
Wählen Sie Optionen

Bearbeitungsoption

Benachrichtigung wieder auf Lager

Vergleichen

Produkt ArtikelnummerBewertungBeschreibung Sammlung Verfügbarkeit Produktart Andere Details
this is just a warning
Anmeldung
Einkaufswagen
0 Artikel
Same Day Shipping No Extra Costs
Easy Returns Guarantee Return with Ease
Secure Checkout Secure Payment