İçeriğe Geç

#20 PicoBricks ile Güvenli Giriş Projesi

07 Nov 2023
#20 Secured Entrance Project With PicoBricks

Güvenlik sistemleri bina ve oda girişlerinde erişimi kontrol edebilen teknolojiler içerir. Hastanelerin ameliyathanelerine sadece yetkili personelin girebildiği kartlı geçiş sistemleri ilk akla gelen örneklerden biridir. Ayrıca birçok giriş alanı kartlı ve şifreli giriş teknolojileri ile donatılmıştır. Bu elektronik sistemler yetkisiz kişilerin girişini engellemenin yanı sıra giriş çıkış bilgilerinin kayıt altına alınmasını da sağlar. Şifre girişi, kart girişi, parmak izi tarama, yüz tarama, retina tarama ve ses tanıma teknolojileri elektronik giriş sistemlerinde kullanılan kimlik doğrulama yöntemleridir.

RFID ve NFC gibi sistemler günümüzde temassız ödeme teknolojilerinin temel formlarını oluşturmaktadır. Kredi kartlarıyla kullanılan temassız ödeme teknolojisi teknik olarak farklı olsa da çalışma mantığı aynıdır. Okuyucu ile kart arasındaki maksimum mesafe, teknolojileri birbirinden ayıran özelliklerden biridir. Başta giyim mağazaları olmak üzere alışveriş mağazalarından çıkarken, ürünler üzerinde yer alan NFC etiketleri, girişteki okuyucular tarafından tespit edilmesi durumunda bip sesi çıkaracaktır. Bu sistemlerde bir çeşit RFID teknolojisi kullanılmaktadır.

Bu projemizde örnek ev üzerinde kartlı giriş sistemi hazırlayacağız. Kullanacağımız elektronik bileşenler MFRC522 RFID okuyucu ve 13.56 Mhz kartlardır.

Ayrıntılar ve Algoritma

MFRC522 okuyucuyu modelin kapısının yakınına dışarıdan görülebilecek şekilde yerleştirin. Yerleştirin RGB LED'i ve kapının dışarıdan görülebildiği duvardaki zil. Picoboard modelde kalabilir. Modelin giriş kapısı servo kapısına bağlanmalı, servo 0 dereceye ayarlı iken kapı kapalı olmalıdır. Kapıyı açacak RFID/NFC etiketinin seri numarasını belirlemeli, ev sahibi değişkeni seçin ve seri numarasını bu değişkene atayın.

Program başladığında kapıyı kapalı konuma getirin. Yapmak zil RFID okuyucuya bir kart gösterildiğinde bip sesi duyulur. Okunmakta olan kartın seri numarası ev sahibi değişkenindeki seri numarasıyla eşleşiyorsa RGB LED'i yeşile çevirin. O zaman kapıyı açalım. Kapı açıldıktan 3 saniye sonra kapının kapalı olduğundan emin olun. Okunmakta olan kartın seri numarası eşleşmiyorsa ev sahibi Değişken, RGB LED'i kırmızıya çevirir ve zilden farklı bir ton çalar.

Bileşenler

1X PicoBricks
1X Servo Motorlu
1X RC522-RFID Kartı
Atlama Kabloları
Kolay Bağlantı Kabloları

Bağlantı şeması

Picobricks modüllerini kablolama olmadan kodlayabilir ve çalıştırabilirsiniz. Modülleri panodan ayırarak kullanacaksanız modül bağlantılarını grove kablolarla yapmalısınız.

Projenin İnşaat Aşamaları

18 numaralı Akıllı Ev projemizde kullandığınız ev modelinin projesini yapacağız.

Akıllı Ev projesi için tıklayın

Ev modelinde RGB LED, Buzzer ve RC522 RFID okuyucu için delikler açın.

RGB LED ve Buzzer'ın arkasına çift taraflı köpük bant yapıştırıp kutuya yapıştırın. RC522'yi modelin içine resimdeki gibi yerleştirin.

Servo motoru kapının sol üst köşesine menteşe şeklinde çift taraflı bantla modelin iç kısmına takın. Servo kafasını sıcak tutkal veya sıvı tutkalla kapıya takın.

Son olarak Pico kartını ve 2 tuşlu pil kutusunu model evin içine yerleştirin ve kablo bağlantılarını tamamlayın. Projenizin son kontrolleri yapıldıktan sonra çalışmaya hazır hale gelir.

PicoBricks'in MicroBlock Kodları

Projenin Microblocks kodlarına görseli Microblocks Run sekmesine sürükleyerek veya butonuna tıklayarak ulaşabilirsiniz. düğme.

Mikroblok Çalıştırma Sekmesi

PicoBricks'in MicroPython Kodları

Kart ID'sini öğrenmek için çalıştırılacak kod:

makine ithalatından Pin, SPI
mfrc522'den MFRC522'yi içe aktarın
kullanım süresini içe aktar
#kütüphaneleri tanımla
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, baud hızı=100000, polarite=0, faz=0, sck=sck, mosi=mosi, miso=miso)
rdr = MFRC522(spi, sda, ilk)
# MFRC522 pinlerini tanımlayın
Doğruyken:
    (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]))
            yazdır(uid)
            utime.sleep(1)
            # kartı okuyun ve kartın seri numarasını verin

Proje kodu:
makine içe aktarımından I2C, Pin, SPI, PWM
mfrc522'den MFRC522'yi içe aktarın
ws2812'den NeoPixel'i içe aktarın
utime içe aktarma uykusundan

servo = PWM(Pin(21))
servo.freq(50)
servo.duty_u16(1350) # servo 180 için 0 açısını 8200 olarak ayarlayın.
buzzer = PWM(Pin(20, Pin.OUT))
buzzer.freq(440)
neo = NeoPixel(6, n=1, parlaklık=0,3, otomatik yazma=Yanlış)
KIRMIZI = (255, 0, 0)
YEŞİL = (0, 255, 0)
SİYAH = (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, baud hızı=100000, polarite=0, faz=0, sck=sck, mosi=mosi, miso=miso)

ev sahibi = "0x734762a3"
rdr = MFRC522(spi, sda, ilk)

Doğruyken:
    (stat, tag_type) = rdr.request(rdr.REQIDL)
    if stat == rdr.OK:
        (stat, raw_uid) = rdr.anticoll()
        if stat == rdr.OK:
            buzzer.duty_u16(3000)
            uyku(0,05)
            buzzer.duty_u16(0)
            uid = ("0x%02x%02x%02x%02x" % (raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3]))
            yazdır(uid)
            uyku(1)
            uid == ev sahibi ise:
                neo.fill(YEŞİL)
                neo.show()
                servo.duty_u16(6000)
                uyku(3)
                servo.duty_u16(1350)
                neo.fill(SİYAH)
                neo.show()
            başka:
                neo.doldur (KIRMIZI)
                neo.show()
                uyku(3)
                neo.fill(SİYAH)
                neo.show()
                servo.duty_u16(1350)
 

PicoBricks'in Arduino C Kodları

Kart ID'sini öğrenmek için çalıştırılacak kod:

 

#include 
#include 
// kütüphaneleri tanımla
int RST_PIN = 26;
int SS_PIN = 17;
// pinleri tanımla
MFRC522 rfid(SS_PIN, RST_PIN);

geçersiz kurulum() {
  Seri.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
}

geçersiz döngü () {
  if (!rfid.PICC_IsNewCardPresent())
    geri dönmek;
  if (!rfid.PICC_ReadCardSerial())
    geri dönmek;
  rfid.uid.uidByte[0];
  rfid.uid.uidByte[1];
  rfid.uid.uidByte[2];
  rfid.uid.uidByte[3];
  printid();
  rfid.PICC_HaltA();
  // Kimliğiniz okunuyor.
}

geçersiz baskı kimliği () {
  Serial.print("Kimliğiniz: ");
  for (int x = 0; x < 4; x++) {
    Seri.print(rfid.uid.uidByte[x], HEX);
    Seri.print(" ");
  }
  Seri.println("");
}

Proje kodu:

#include 
#include 
#include 
#include 
//Kütüphaneleri tanımlıyoruz.
#define RST_PIN 26
#define SS_PIN 17
#define servoPin 22
#PIN 6'yı tanımla
#NUMPIXELS 1'i tanımla
#zil sesini tanımla 20
//servo, buzzer, neopixel ve rfid pinlerini tanımlıyoruz.
Adafruit_NeoPixel pikselleri(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
Servo motor;
MFRC522 rfid(SS_PIN, RST_PIN);
byte ID[4] = {"Kendi kimliğinizi yazın."}; // Gerçek kimliğinizle değiştirin
geçersiz kurulum() {
  piksel.begin();
  motor.attach(servoPin);
  Seri.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  pinMode(sesli uyarı, ÇIKIŞ);
}

geçersiz döngü () {
  piksel.clear();
  if ( !rfid.PICC_IsNewCardPresent())
    geri dönmek;
  if ( !rfid.PICC_ReadCardSerial())
    geri dönmek;
  if (rfid.uid.uidByte[0] == ID[0] &&
      rfid.uid.uidByte[1] == Kimlik[1] &&
      rfid.uid.uidByte[2] == Kimlik[2] &&
      rfid.uid.uidByte[3] == Kimlik[3]) {
    Serial.println("Kapı Açıldı.");
    printid();
    ton(zil,523);
    gecikme(200);
    noTone(zil);
    gecikme(100);
    ton(zil,523);
    gecikme(200);
    noTone(zil);
    piksel.setPixelColor(0, piksel.Color(0, 250, 0));
    gecikme(200);
    piksel.show();
    piksel.setPixelColor(0, piksel.Color(0, 0, 0));
    gecikme(200);
    piksel.show();
    motor.write(180);
    gecikme(2000);
    motor.write(0);
    gecikme(1000);
    //Sensöre doğru kart okunduğunda RGB LED yeşile döner ve servo motor sayesinde kapı açılır.
  } başka {
    Serial.println("Bilinmeyen Kart.");
    printid();
    ton(zil sesi,494);
    gecikme(200);
    noTone(zil);
    gecikme(100);
    ton(zil sesi,494);
    gecikme(200);
    noTone(zil);
    piksel.setPixelColor(0, piksel.Color(250, 0, 0));
    gecikme(100);
    piksel.show();
    piksel.setPixelColor(0, piksel.Color(0, 0, 0));
    gecikme(100);
    piksel.show();
    //Sensöre yanlış kart okunduğunda RGB LED kırmızıya döner ve kapı açılmaz.
  }
  rfid.PICC_HaltA();
}

geçersiz baskı kimliği () {
  Seri.print("Kimlik Numarası: ");
  for (int x = 0; x < 4; x++) {
    Seri.print(rfid.uid.uidByte[x], HEX);
    Seri.print(" ");
  }
  Seri.println("");
}

GitHub Proje Sayfası
Önceki Gönderi
Sıradaki Gönderi

Abone olduğun için teşekkürler!

Bu e-posta kaydedildi!

Görünümü satın alın
Seçenekleri Seçin

Seçeneği Düzenle

Stok Bildirimi

Karşılaştır

Ürün Stok KoduDeğerlendirmeAçıklama Kategori Uygunluk Ürün Tipi Diğer Detaylar
this is just a warning
Giriş Yap
Alışveriş Sepeti
0 Ürünler
Same Day Shipping No Extra Costs
Easy Returns Guarantee Return with Ease
Secure Checkout Secure Payment