Raspberry Pi 3 ile MQTT protokolünün kullanımını ve/veya MFRC522 RFID okuyucu modülünün kullanımını anlatmak için mini bir proje hazırladım. Bu projeyi yapıp çalıştırdığınızda RFID okuyucunuz kartı okuyup doğrulama yaparak kapının açılıp kapanmasını kontrol edecek, aynı anda MQTT protokolü vasıtasıyla herhangi bir yerden kapının açılıp açılmadığını, açıldıysa kim açtı gibi bilgileri okuyabilmenize imkan sağlayacak. İlk olarak malzeme listemiz ile başlayalım.

Malzeme Listesi:

  • 1x Raspberry Pi 3 Model B / B+
  • 1x MFRC522 13.56 MHz RFID Modül + 13.56 MHz RFID Tag / Kart
  • 1x Lojik Gerilim Seviye Yükseltici
  • 1x 5v Optoizolatörlü Röle Modül
  • Yeterli sayıda Jumper Kablo

Devre Şeması:

Devre şeması

RFID Modülünün Raspberry Pi’a bağlanması

MFRC522 RFID Modül Raspberry Pi 3
3v3 3v3
RST GPIO 25
GND GND
IRQ GPIO 24
MISO GPIO 9
MOSI GPIO 10
SCK GPIO 11
SDA GPIO 8

Röle Modülünün ve Lojik Gerilim Seviye Yükselticinin Raspberry Pi’a bağlanması

Lojik Gerilim Seviye Yükseltici Raspberry Pi 3 Röle Modülü
LV 3v3
HV 5v (+) Pin
GND GND (-) Pin
LV1 GPIO 4 HV1

Devre kurulduktan sonra yazılım kısmına geçilir. Bundan sonraki anlatım Raspberry Pi üzerinde Raspbian Linux koşturulduğu varsayılarak devam edecektir.

İlk olarak terminal ekranı açılır ve sırasıyla şu komutlar gerçekleştirilir:

  1. sudo apt-get update
  2. sudo apt-get upgrade
  3. sudo apt-get dist-upgrade
  4. sudo apt-get install mosquitto mosquitto-clients
  5. sudo systemctl enable mosquitto
  6. sudo pip install pi-rc522 paho-mqtt

Raspberry Pi’yi yeniden başlattıktan sonra bir metin editörü ile (bkz. nano) kodu yazabilirsiniz. Programı yazarken kullandığımız dil Python’un 2.7 versiyonu. Kodu Raspberry Pi içinde gelen Python IDE’si ile yazmamamızın sebebi ise o IDE’nin Python 3’ü esas almasından kaynaklıdır. 

Kodu Raspberry Pi’nize kolayca indirmek için şu komutu terminal ekranına yazın:

wget https://raw.githubusercontent.com/prdsmehmetstc/Marmara-University/master/marun-rfid.py

wget komutu ile kodu Raspberry Pi’a indirme

Kodu yukarıda verilen linkten indirdikten sonra terminal ekranına geçip kodu kaydettiğiniz dizine girin ve “python marun-rfid.py” komutunu girin. Devre kurulu ise ve Raspberry Pi’ınız internete bağlı ise program sorunsuz çalışmaya başlayacaktır.

Kodun çalışması sonucu oluşan terminal çıktısı

Artık yalnızca tek bir şey kaldı, o da kartımızı sisteme tanıtmak. Programı çalıştırdığınızda kartı okutun. Doğal olarak kabul etmeyecektir, çünkü kartınız sistemde tanımlı değil. Ancak terminal ekranına kartınızın UID değerini, yani bir nevi “kimlik numarasını” yazdıracaktır.

Bu değeri kopyalayıp koddaki “if kart_uid == "112 253 138 166 161":” satırının tırnak içindeki kısmına yapıştırmanız gerekiyor. Bu işlemi de yaptıktan sonra kodu kaydedip sistemi çalıştırmaya tamamen hazırız. Ayrıca isteğe bağlı olarak bu değiştirdiğimiz satırın hemen altındaki iki satırda da değişiklik yapabilirsiniz. Ben varsayılan olarak “Hos Geldiniz, Kart Sahibi.” ve “Kart Sahibi kapiyi acti!” yazdım. Dilerseniz buraya kendi isminizi veya istediğiniz bir metni yazabilirsiniz.

Şimdi ise bu çıktıları bir MQTT client üstünden okuyalım. Android cihazlardan MyMQTT uygulaması vasıtasıyla, internetten MQTTLens vasıtasıyla veya mosquitto kurulu Linux makinelerde terminal aracılığıyla çıktıları aynı ağa bağlı olma zorunluluğu olmadan anlık olarak okuyabilirsiniz. Linux makineler için terminale girilecek komut:
mosquitto_sub -h iot.eclipse.org -t "/marun/rfid"

Terminal çıktıları


Mehmet SÜTCÜ

Pisi Linux Tasarım Ekip Lideri ve Çırak Dergi'de Yazar. Özgür Yazılımcı, Tasarımcı ve Elektronikçi. Eğitmen. Linux kullanıcısı. @prdsmehmetstc kullanıcı adı ile bilinir.