Raspberry Pi Dersleri serimizde kullanacağımız malzemelerin tamamına sizler için hazırladığımız setler ile kolayca sahip olabilirsiniz. Raspberry Pi’ye Uzaktan Bağlantı Yöntemleri (VNC,SSH,TTL) dersimize kadar olan malzemeler için Kombo Kit, Raspberry Pi 3 Röle Kartı İle Alarm Devresi Yapımı dersimize kadar olan malzemeler için Süper Başlangıç Seti, tüm derslerdeki malzemeler için Proje Seti tercih edebilirsiniz.
Merhabalar. Bu dersimizde sizler ile birlikte Raspberry Pi’mizde RFID kart okuma işlemi yapacağız.
Gerekli malzemeler:
RFID Nedir?
RFID, nesnelerin radyo dalgaları kullanılarak tanınması için geliştirilmiş bir teknolojidir. Toplu taşıma araçlarındaki biletler, otoyol gişelerinde kullanılan HGS/OGS gibi ödeme sistemleri, okul/işyerlerimizdeki turnikelerde sıklıkla karşımıza çıkar. Bu dersimizde de Raspberry Pi kullanarak RFID okuma örneği yapacağız.
RFID okuyucu kartların içersinde büyük ihtimalle fiyatı sayesinde en popüler olanı MFRC522 entegresine sahip olan kartlardır.
Set içerisinde NXP firmasının üretmiş olduğu MFRC522 entegresine (datasheet) sahip bir devre kartı ile birlikte bir adet RFID kart ve anahtarlık gelmektedir. MFRC522, SPI arayüzüne sahip olduğundan dolayı, Arduino gibi mikrokontrolcüler veya Raspberry Pi gibi tek kart bilgisayarlar ile kolaylıkla kullanılabilir. Kartımızı, paket içerisinde gelen header’ları lehimledikten sonra aşağıdaki şemaya göre Raspberry Pi’mize bağlıyoruz:
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. Alternatif olarak kodu buradan da kopyalayabilirsiniz.
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 öğreniyoruz:
Burada kartımızın UID’sini görmekteyiz. Yapmamız gereken, burada yer alan UID’yi bir kenara not etmek. Bir sonraki programımızı da rc522.py isimli dosyaya kaydediyoruz (alternatif olarak buradan da erişebilirsiniz):
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ız UID’yi, bu kodda yer alan
if kart_uid == "xxxxxxxxxxxxxxxx":
satırındaki değer ile değiştiriyoruz. 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:
Buradaki LED yakıp söndürme örnek bir uygulamadır. Sizler de örneğin LED’in yerine bir röle kartı bağlayarak istediğiniz UID’ye sahip bir kart okunduğunda 0.5sn kadar bir süre çıkış verdirerek bir RFID kilit açma uygulaması yapabilirsiniz.
Raspberry Pi Hakkında Daha Fazlasını Öğrenmeye Devam Et
Raspberry Pi pek çok yönüyle avantaj sahibi ve geliştiriciler tarafından çok sevilen bir platform. Elektronik projelerinde, bilgisayar bilimlerinde ve robotik çalışmalarında sağladığı destek ve rahatlık ile öğrenmeyi sevdiren Raspberry Pi hergün daha da çok gelişiyor.
Peki siz de daha fazla gelişmek istemez misiniz? Linux bilginizi geliştirmek, elektronik dünyasına atılmak ve eğlenceli projelere imza atmak için sizi Raspberry Pi ile yolculuğa çıkarıyoruz! Sizler için hazırladığımız Raspberry Pi eğitim serisine devam edin :
Raspberry İle Step Motor Kontrolü Nasıl Yapılır?
Step motorlar, hassas hareket gerektiren uygulamalarda kullanılan motorlardır. Fonksiyon olarak DC motorlar ile servo motorların her ikisinin de karakterini gösterir: istenildiğinde belirli bir konuma adım adım ilerleyebilir veya sürekli olarak istenilen yönde döndürülebilir. Normal yazıcılar ve 3B yazıcıların vazgeçilmez parçalarındandırlar.
14. Dersimizde Raspberry İle Step Motor Kontrolü Nasıl Yapılır? Beraber öğreneceğiz.
Sese Duyarlı Alarm Devresi Nasıl Yapılır?
Raspberry ile 16. dersimizde ise çok daha basit yapıya sahip bir mikrofon sensörü ile ses şiddeti algılayıp, bu şiddetin seviyesine göre sesli bir alam tetiklemeyi ve “Sese Duyarlı Alarm Devresi Nasıl Yapılır?” öğreneceğiz.
Bilgiler için çok teşekkürler.
Kolay gelsin dediginiz herşeyi yaptım fakat şöyle bir hata alıyorum. Yardımcı olabilir misiniz
IndentationError: expected an indented block
Kodu sitemizen kopyalayınca malesef bu şekilde bir problem oluyor.
pirc522 modulü yok diyor nerden temin edebilirm
https://github.com/ondryaso/pi-rc522
pirc522 modulü yok diyor nerden temin edebilirm
Merhaba ben yaptim calisti fakat bir kart daha eklemek istiyorum yani iki karttida okutunca yanmasini nasil saglarim.
if kart uid satırıa gelince bir üst satıra
kartlar = [“kart1uid”,”kart2uid”] #kart uidlerini list e attık
if kart_uid in kartlar:
print(“LED Yandi!”)
GPIO.output(ledpin, True)
else:
print(“LED Sondu!”)
GPIO.output(ledpin, False)
#kart_uid okunan kart uid i
rc522.py çalıştırdığımda
print(“\nKart Algilandi!”)
IndentationError: expected an indented block
şeklinde hata veriyor.Çözüm bulamadım.Şimdiden teşekkürler.
Bazen sitemizden kod doğrudan kopyalandığında sorun olabiliyor. Teşekkürler.
merhaba ilk bölümdeki kodlar içinde bir link paylasır mısın ?
1. bölümdeki kodları çalıştırırken.
böyle bi hata alıyorum;
File “rfid-read.py”, line 16
kart_uid = str(uid[0])+” “+str(uid[1])+” “+str(uid[2])+” “+str(uid[3])+” “+str(uid[4])
^
IndentationError: expected an indented block
1.bölüm için kodların linkini atar mısınız ??
1. Bölüm için link istiyorum. Ama siz 2. Bölüm için link atmışsınız?
Afedersiniz karışıklık olmuş kusura bakmayın.
kerem bey, daha hızlı mesajlasabilecegimiz bi yol yokmu, mailimi görebiliyorsunuz diye biliyorum.
Bana yardımcı olur musunuz , hala aynı hatayı alıyorumda.
hata;
File “rfid-read.py”, line 16
kart_uid = str(uid[0])+” “+str(uid[1])+” “+str(uid[2])+” “+str(uid[3])+” “+str(uid[4])
^
IndentationError: expected an indented block
hatayı buldum attığım satırdakiler if in dısında kalmıs tesekkürler
Bende aynı hatayı alıyorum acaba biraz daha açık anlatabilir misin? Demek istediğini anlamadım.
Demek istediği şu ;
Örneğin kodumuz :
a = 5
if a > 4 ;
print(“DEneme”)
Ancak o kodda şöyle olmuş
a = 5
if a > 4 ;
print(“DEneme”)
– Bu sebeple kod hata vermiş , eğer anlamadıysan anlatabilirim
tekrar merhaba, 1. bölümdeki kodu çalıştırdığımda sadece ‘Kart bekleniyor’ yazısı gelmekte.
Ayrıca (rc522 de D1 in kırmızı ışığı yanıyor ve led de çok az da olsa bir ışık var) bilgilerinize.
yardımınızı rica ediyorum.
Sorunu nasıl çözdünüz?
kusura bakmayın halletim hata bendeymiş 😀 çok teşekkürler yardımlarınız için
Rica ederim, bol projeli günler!
nasıl hallettiniz ercan bey
merhaba 1 tane kartı yonetıcı olarak kullanıp kart ekleme silme islemini temassız olarak nasıl sağlarız.
16. satırdaki kodu düzeltince 1. satır için hata verdi ne yapabilirim?
acele cevap
1. satırdan sonra 5. satırda da hata verdi
16.satırdaki 1. ve 5.satırdaki hataların doğru hallerini bilenler yazabilir mi? Lütfen
Hocam merhabalar. rasperyy pi’ye en fazla kaç adet rfid modül bağlayıp hepsini kontrol edebilir miyiz
Merhaba, devreyi birkaç kez kurmama rağmen “Kart bekleniyor…” mesajında bekliyor. ilerlemiyor.
Paketin içinden anahtarlığı ve kartı deniyorum. Başka bir ayar mı yapmam gerkeiyor.
Merhabalar. Output olarak LCD ekran kullanmayı düsünüyorum ama kodları nasıl yapacagımı bilmiyorum acaba yardımcı olabilecek var mı şimdiden teşekkürler 🙂
1. Satırda no modüle named hatası veriyor. Nasıl duzeltebilirim kütüphaneleri doğru yukledigime eminim.
Selamlar,
Bu hata kütüphane ile alakalı bir durum. Eksik, yanlış kurmuş olabilir misiniz?
İyi çalışmalar dileriz 🙂
merhabalar rfid etiket okuma süresini hangi dosyadan editlemeliyiz