Raspberry Pi ile RFID Uygulaması

Herkese merhaba. Bu uygulamada, belirlediğimiz ID’ye sahip kartı okuttuğumuzda led yanarken farklı bir kart okuttuğumuzda led sönecek. Projenin kaynak kodları için Github hesabımı takip edebilirsiniz:

Detay için tıkla

Kullanılan Teknolojiler
Raspberry Pi

Projeye başlamadan önce Raspberry Pi kurulumunu, detaylıca anlattığım buradaki linkten yararlanarak yapabilirsiniz. İlk olarak proje için gerekli olan ayarlamaları yaptım. Bunun için Raspberry Pi’nin ayarlarında SSH, SPI ve kenbi bilgisayarımda kullanabilmek için VNC’yi enable etmem gerekti.

Daha sonra gerekli devre elemanlarını ayarladım:

Daha sonra fritzing ile devre çizimimi yaptım.


Ardından çok dikkatli şekilde devremi hazırladım.


Devre bağlantımızı tamamladıktan sonra, Python kodumuzun çalışabilmesi için öncelikle gerekli kütüphaneyi yüklememiz gerekli:

sudo pip install pi-rc522

Aşağıdaki Python kodunu rfid-read.py isimli bir dosyaya kaydediyoruz.

from pirc522 import RFID
import signal
import time

rdr = RFID()
util = rdr.util()
util.debug = True
print("Kart bekleniyor...")
rdr.wait_for_tag()
(error, data) = rdr.request()

if not error:
 print("Kart Algilandi!")
 (error, uid) = rdr.anticoll()
 if not error:
 kart_uid = str(uid[0])+" "+str(uid[1])+" "+str(uid[2])+" "+str(uid[3])+" "+str(uid[4])
 print(kart_uid)

Kodu kaydettikten sonra;

python rfid-read.py

komutu ile çalıştırıyor ve kartımızı okutuyoruz. Böylelikle okuttuğumuz kartın UID’sini öğrenebiliriz.


Bana böyle bir id verdi. Bu id’yi bir kenara not ettim. Daha sonra aşağıdaki kodu rc522.py isimli dosyaya kaydettim.

from pirc522 import RFID
import signal
import time
import RPi.GPIO as GPIO 

ledpin = 7
GPIO.setmode(GPIO.BOARD)
GPIO.setup(ledpin, GPIO.OUT)
rdr = RFID()
util = rdr.util()
util.debug = True

while True:
 rdr.wait_for_tag()
 (error, data) = rdr.request()
 if not error:
 print("\nKart Algilandi!")
 (error, uid) = rdr.anticoll()
 if not error:
 # Print UID
 kart_uid = str(uid[0])+" "+str(uid[1])+" "+str(uid[2])+" "+str(uid[3])+" "+str(uid[4])
 print(kart_uid)
 if kart_uid == "xxxxxxxxxxxxxxxx":
 print("LED Yandi!")
 GPIO.output(ledpin, True) 
 else: 
 print("LED Sondu!")
 GPIO.output(ledpin, False)

Daha önce kopyaladığım UID’yi, bu kodda yer alan

if kart_uid == "xxxxxxxxxxxxxxxx":

satırındaki değer ile değiştirdim. Böylece program bizim okutmuş olduğumuz RFID kartını algıladığı zaman bağlamış olduğumuz LED’i yakacak. Farklı bir kart okuttuğumuzda ise LED sönecek: