RFID kartlar ve etiketler her yerde! Bunları erişim kontrolü için binalarda kullanıyoruz. Yazıcılar ve fotokoparcılar bunları personeli tanımlamak için kullanabilirler. Hayvancılık etiketleme ve PET tanımlama etiketlerinin tümü bir RFID formu kullanır. Bir RFID cihazı okumak için teknoloji ucuzdur, yaklaşık 5 $ karşılığında okuyucuyu alabilirsiniz ve 4 $ için bir Raspberry Pi Pico, kartlardan / etiketlerden kimlikleri okuyabilir.
Bu nasıl yapılır, bir MFRC522 okuyucu ve bir Raspberry Pi Pico kullanarak RFID etiketlerinin ve kartların nasıl okunacağını öğreneceğiz, amaç, kullanıcıların bir binaya girmesine izin verecek kurgusal bir RFID erişim kontrol sistemi oluşturmak veya bunları kaldırmaları için uyarmak olacaktır. Bunu yapmadan önce, kartlarımızın / etiketlerimizin kimliğini tanımlamamız gerekir. Bunun nasıl yapılacağı bunun ilk bölümü ve daha sonra kilitleme mekanizmasını simüle etmek için iki LED’yi kontrol etmek için bir kod ekleyeceğiz.
Bunun için nasıl ihtiyacın olacaksın
- Raspberry Pi Pico Microphthon çalışan
- MFRC522 RFID okuyucu
- Büyük ekmek tahtası
- 11 x erkek ila erkek jumper telleri
- Yeşil LED
- Kırmızı LED
- 2 x 100 ohm dirençler (kahverengi – siyah – kahverengi – altın)
Donanımı oluşturmak

Donanım derlemesi iki bölüme ayrılmıştır. Birincisi, MFRC522 RFID okuyucusu için kablolama. Okuyucu, Raspberry Pi Pico ile iletişim kurmak için SPI kullanır ve bunu yapmak için yedi pim gerektirir. İkisi güç (3.3V ve GND) içindir ve geri kalanı SPI içindir.
MFRC522 | Ahududu pi pico | Tel rengi |
|---|---|---|
SDA | GP1 | Mavi |
Sck | GP2 | Turuncu |
Mosi | GP3 | Mor |
Miso | GP4 | Mavi |
Gnd | Herhangi bir GND | Siyah |
İlk | GP0 | Beyaz |
3.3 | 3v3 çıkış (fiziksel pim 36) | Kırmızı |

İkincisi çıktılarımız. Doğru kartın sunulup sunulmadığını görmek için iki LED eklememiz gerekir. Yanlış bir RFID kart için kırmızı, doğru kart için yeşil. LED’ler, LED’i açma/kapama açmak için kontrol ettiğimiz bir GPIO pimine ve 100 ohm’luk bir direnç aracılığıyla mevcut herhangi bir GND pimine bağlanır. 220 veya 330 ohm direnç kullanabilirsiniz, masamda 100 ohm direnç var. Doğru direncin çalışması mı gerekiyor? Biz Bir Rehber var senin için!
| Başlık Hücresi – Sütun 0 | Ahududu pi pico | Tel rengi |
|---|---|---|
Kırmızı LED anot (+) | GP14 | Kırmızı |
Kırmızı LED Katot (-) | Herhangi bir GND | Siyah |
Yeşil LED anot (+) | GP15 | Yeşil |
Yeşil LED Katot (-) | Herhangi bir GND | Siyah |

Devam etmeden önce kablolamanızın doğru olup olmadığını kontrol edin.
RFID okuyucu yazılımını yükleme
MFRC522 basit bir RFID okuyucusudur ve daha da basit hale getirmek için okuyucuyu kullanma konusunda kısa bir çalışma yapacak bir mikrophhon modülü kullanıyoruz. Modül, çirkin Tom’un Donanımı’nın Dostu Kevin McLeer ve çalışmalarına dayanıyor Danjperron.
1. Raspberry Pi Pico’nuzu bilgisayarınıza bağlayın ve Thonny’yi açın. Raspberry Pi Pico’nuzu nasıl kuracağınızı zaten bildiğinizi varsayıyoruz. Değilse, Bu kullanışlı rehberimiz var.
2. Yeni bir boş dosya oluşturun ve içeriği kopyalayın Bu bağlantının boş dosyaya. Ardından MFRC522.py olarak Raspberry Pi Pico’ya kaydedin. Bu, kodumuzun RFID okuyucu ile konuşmasını sağlayacak Python modülü / kütüphanesidir.
Proje Kodunu Yazmak
Tüm kurulum tamamlandıkça, şimdi projeyi kodlamaya başlıyoruz. Bunun için tekrar Thonny’yi kullanacağız ve okuyucuya sunulan herhangi bir RFID kartının kimliğini kontrol etmek için kod yazacağız. Bu ilk bölüm için, kimliğin bir not almamız gerekecek, çünkü daha sonra kimliğin sert kodlanmış bir değerle eşleşip eşleşmediğini kontrol eden koşullu bir testle kullanacağız, o zaman girişe izin verecektir. Değilse, erişim reddedilen bir mesaj alacağız.
1. Thonny’de yeni bir boş dosya oluşturun.
2. MFRC522 RFID okuyucusunu kullanmak, kodun hızını kontrol etmek ve GPIO’yu kullanmak için üç modülü (kütüphaneler) içe aktarın.
from mfrc522 import MFRC522
import utime
from machine import Pin3. Kodu RFID okuyucunun nereye bağlı olduğunu söylemek için bir nesne, okuyucu oluşturun.
reader = MFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=1,rst=0)4. Kırmızı ve yeşil LED’ler için iki nesne oluşturunLED’lerin nereye bağlı olduğunu ve bunların akım göndermek istediğimiz çıktı aygıtları olduğunu söylemek.
red = Pin(14, Pin.OUT)
green = Pin(15, Pin.OUT)5. Kullanıcıya kısa bir mesaj yazın, kartı okuyucuya sunmalarını söyler. “\ N”, baskı () işlevinin sonuna yeni bir çizgi tanıtmak için Python’un sözdizimidir.
print("Present the card to the reader\n")6. “ÖncekiCard” adlı bir liste oluşturun ve içinde sıfır değerini saklayın. Geçerli kart kimliğini saklamak için bu listeyi daha sonra kullanacağız.
PreviousCard = [0]7. Kodu sürekli olarak çalıştırmak için bir süre gerçek döngü oluşturun.
while True:8. Okuyucuyu kullanıma hazır olacak şekilde başlatın.
reader.init()9. Okuyucu durumunu ve RFID etiket türünü saklamak için bir tuple oluşturun.
(stat, tag_type) = reader.request(reader.REQIDL)10. Bir IF koşullu, okuyucu hazırsa kartın içeriğini okuyacaktır. Ardından STAT ve UID nesnelerini kartın ayrıntılarıyla güncelleyecektir.
if stat == reader.OK:
(stat, uid) = reader.SelectTagSN()11. Kartın UID’si önceki kart nesnesinde depolanan değerle aynıysa, kod devam edecektir. Bu, aynı kart okuyucuya tekrar tekrar gösterildiğinde olur.
if uid == PreviousCard:
continue12. Kart okuduğunu kontrol etmek için IF şartlı bir ifade oluşturun.
if stat == reader.OK:13. Kullanıcıya bir mesaj yazdırın ve ardından kartın UID’sini “Kart” adlı bir nesneye saklayın. Ardından kart detaylarını Python kabuğuna yazdırın.
print("The card details are as follows")
card = reader.tohexstring(uid)
print(card)
14. Önceki kart nesnesini sunulan kartın UID ile güncelleyin.
PreviousCard = uid15. Kart sunulmadığında çalışacak başka bir durum oluşturun. Önceki kart nesnesinin güncellenmesi. Ardından, ana döngü tekrarlamadan önce koda 50 ms duraklama ekleyin.
else:
PreviousCard=[0]
utime.sleep_ms(50)16. Kodu Raspberry Pi Pico’ya Reader.py olarak kaydedin ve ardından Run >> Geçerli komut dosyasını çalıştırın (veya Yeşil Oynat düğmesine basın). Talimatları izleyin ve RFID kartını / etiketini okuyucuya sunun.
17. Tüm kart ayrıntılarını kopyalayın, bu RFID kartının UID’sidir ve bunun bir sonraki kısmı için buna ihtiyacımız olacak. UID böyle bir şey gibi görünüyor, seninki farklı olacak.
[0x04, 0xBC, 0xA0, 0x9A, 0xB3, 0x43, 0x80]Tam Kod Listesi
from mfrc522 import MFRC522
import utime
from machine import Pin
reader = MFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=1,rst=0)
red = Pin(14, Pin.OUT)
green = Pin(15, Pin.OUT)
print("Present the card to the reader\n")
PreviousCard = [0]
while True:
reader.init()
(stat, tag_type) = reader.request(reader.REQIDL)
if stat == reader.OK:
(stat, uid) = reader.SelectTagSN()
if uid == PreviousCard:
continue
if stat == reader.OK:
print("The card details are as follows")
card = reader.tohexstring(uid)
print(card)
PreviousCard = uid
else:
PreviousCard=[0]
utime.sleep_ms(50)
Kodu aldık, şimdi proje koduna bize erişim sağlamak ve yeşil LED’i aydınlatmak için bu kodu kullanmak istediğimizi söylememiz gerekiyor. Okuyucuya başka bir kart / etiket sunulursa, kırmızı LED yanar.
1. Bu iki satır arasında yeni kod satırları oluşturun.
print(card)
NEWCODE GOES HERE
PreviousCard = uid2. Kartınızın UID’sini kontrol eden bir IF koşul oluşturun. Bir python listesine benzediğini unutmayın, ancak gerçekte bir dize olarak saklanır, bu yüzden değeri “” ile sarmamız gerekir. Unutma [ ] braketler.
if card == "[0x04, 0xBC, 0xA0, 0x9A, 0xB3, 0x43, 0x80]":3. Kart nesnesinde depolanan değer sert kodlanmış değerle eşleşiyorsa, Python kabuğuna “verilen erişim” yazdırın.
print("ACCESS GRANTED")4. Yeşil LED’i on kez geçiş yapmak için bir döngü oluşturun. Yeşil LED’i for döngüsünün sonunda kapatın.
for i in range(10):
green.toggle()
utime.sleep(0.1)
green.off()5. Okuyucuya tanınmayan bir kart / etiket sunulduğunda başka bir koşul kullanın. Bu, kırmızı LED’i yeşil LED gibi açıp kapatacaktır.
else:
print("ACCESS DENIED")
for i in range(10):
red.toggle()
utime.sleep(0.1)
red.off()6.Raspberry Pi Pico’ya Reader.py olarak kodu kaydedin. RUN’a tıklayın >> Geçerli komut dosyasını çalıştırın (veya Yeşil Oynat düğmesine basın). Talimatları izleyin ve RFID kartını / etiketini okuyucuya sunun. Kart doğruysa, yeşil LED yanıp sönecek ve Python kabuğu “erişim” yazdıracaktır. Başka bir RFID kartı / etiketi deneyin, bu kırmızı LED’i aydınlatmalı ve Python Shell “Erişim reddedildi” yazdıracak
Tam Kod Listesi
from mfrc522 import MFRC522
import utime
from machine import Pin
reader = MFRC522(spi_id=0,sck=2,miso=4,mosi=3,cs=1,rst=0)
red = Pin(14, Pin.OUT)
green = Pin(15, Pin.OUT)
print("Present the card to the reader\n")
PreviousCard = [0]
while True:
reader.init()
(stat, tag_type) = reader.request(reader.REQIDL)
if stat == reader.OK:
(stat, uid) = reader.SelectTagSN()
if uid == PreviousCard:
continue
if stat == reader.OK:
print("The card details are as follows")
card = reader.tohexstring(uid)
print(card)
if card == "[0x04, 0xBC, 0xA0, 0x9A, 0xB3, 0x43, 0x80]":
print("ACCESS GRANTED")
for i in range(10):
green.toggle()
utime.sleep(0.1)
green.off()
else:
print("ACCESS DENIED")
for i in range(10):
red.toggle()
utime.sleep(0.1)
red.off()
PreviousCard = uid
else:
PreviousCard=[0]
utime.sleep_ms(50)

