Bu oturumda Raspberry Pi ile bir Joystick Arayüzü yapacağız. Joystick, öncelikle çeşitli oyunları oynamak için kullanılır. USB tipi joysticklerin bağlanması kolay olsa da bugün Joystick'i Raspberry Pi GPIO pinleri üzerinden bağlayacağız, bu birçok durumda kullanışlı olacaktır.
Raspberry Pi ve Joystick Modülü:
Joystickler farklı şekil ve boyutlarda mevcuttur. Aşağıdaki şekilde tipik bir Joystick modülü gösterilmektedir. Bu Joystick modülü tipik olarak Analog Çıkışlar sağlar ve bu modül tarafından sağlanan çıkış voltajları, onu hareket ettirdiğimiz yöne göre değişmeye devam eder. Ve bir mikrodenetleyici kullanarak bu voltaj değişikliklerini yorumlayarak hareketin yönünü elde edebiliriz. Daha önce AVR Microcontroller'ı Joystick ile kullandık.
Bu joystick modülünün gördüğünüz gibi iki ekseni vardır. X ekseni ve Y eksenidir. JOY STICK'in her ekseni bir potansiyometreye veya tencereye monte edilmiştir. Bu potların orta noktaları Rx ve Ry olarak çıkarılır. Dolayısıyla, Rx ve Ry bu potların değişken noktalarıdır. Joystick bekleme modundayken, Rx ve Ry voltaj bölücü görevi görür.
Joystick yatay eksen boyunca hareket ettirildiğinde, Rx pinindeki voltaj değişir. Benzer şekilde, dikey eksen boyunca hareket ettirildiğinde, Ry pinindeki voltaj değişir. Yani iki ADC çıkışında dört yön Joystick'imiz var. Çubuk hareket ettirildiğinde, her pimdeki voltaj yöne bağlı olarak yüksek veya düşük olur.
Raspberry Pi'nin dahili bir ADC (Analogdan Dijitale Dönüştürücü) mekanizmasına sahip olmadığını bildiğimiz gibi. Yani bu modül doğrudan Pi'ye bağlanamaz. Voltaj çıkışlarını kontrol etmek için Op-amp tabanlı karşılaştırıcılar kullanacağız. Bu OP-Amp'ler, Raspberry Pi'ye sinyaller sağlar ve Pi, sinyallere bağlı olarak LED'leri değiştirir. Burada, Joystick'in dört yönde hareketini göstermek için dört LED kullandık. Sonunda tanıtım videosunu kontrol edin.
17 GPIO pininin her biri + 3.3V'den daha yüksek voltaj alamaz, bu nedenle Op-amp çıkışları 3.3V'den yüksek olamaz. Bu nedenle op-amp LM324'ü seçtik, bu IC, 3V'de çalışabilen dörtlü işlemsel amplifikatöre sahiptir. Bu IC ile Raspberry pi GPIO Pinlerimiz için uygun çıkışlara sahibiz. Raspberry Pi'nin GPIO Pinleri hakkında daha fazla bilgiyi buradan edinebilirsiniz. Raspberry Pi Eğitim Serimize ve bazı iyi IoT Projelerine de göz atın.
Gerekli Bileşenler:
Burada Raspbian Jessie OS ile Raspberry Pi 2 Model B kullanıyoruz. Tüm temel Donanım ve Yazılım gereksinimleri daha önce tartışılmıştır, ihtiyaç duyduğumuz dışında, Raspberry Pi Tanıtımı ve Raspberry PI LED Yanıp Sönüyor bölümlerine bakabilirsiniz:
- 1000µF kapasitör
- Joystick Modülü
- LM324 Op-amp IC
- 1KΩ direnç (12 adet)
- LED (4 adet)
- 2.2KΩ direnç (4 adet)
Devre şeması:
Joystick'in dört yönünü algılamak için LM324 IC içinde dört OP-AMP karşılaştırıcısı vardır. LM324 IC'nin veri sayfasından diyagramı aşağıdadır.
Raspberry Pi ile Arayüz Joystick modülü için yapılan bağlantılar aşağıdaki devre şemasında gösterilmiştir. U1: A, U1: B, U1: C, U1: D, LM324 içindeki dört karşılaştırıcıyı gösterir. Devre şemasındaki her bir karşılaştırıcıyı karşılık gelen Pin no. LM324 IC.
Çalışma Açıklaması:
Joystick'in Y ekseni boyunca hareketini tespit etmek için OP-AMP1 veya U1: A ve OP-AMP2 veya U1: B'ye sahibiz ve Joystick'in X ekseni boyunca hareketini tespit etmek için OP-AMP3 veya U1'e sahibiz.: C ve OP-AMP4 veya U1: D.
OP-AMP1, joystick'in Y ekseni boyunca aşağı yönlü hareketini algılar:
Karşılaştırıcı U1'in negatif terminali: A, 2.3V ile sağlanır (1K ve 2.2K ile voltaj bölücü devresi kullanılarak) ve Pozitif terminal Ry'ye bağlanır. Joystick'i Y ekseni boyunca aşağı doğru hareket ettirirken Ry voltajı artar. Bu voltaj 2.3V'un üzerine çıktığında, OP-AMP çıkış Pininde + 3.3V çıkış sağlar. OP-AMP'nin bu YÜKSEK mantık çıkışı Raspberry Pi tarafından algılanır ve Pi bir LED'i değiştirerek yanıt verir.
OP-AMP2, joystick'in Y ekseni boyunca yukarı yönlü hareketini algılar:
Karşılaştırıcı U1: B'nin negatif terminali 1.0V ile sağlanır (2.2K ve 1K ile voltaj bölücü devresi kullanılarak) ve Pozitif terminal Ry'ye bağlanır. Joystick'i Y ekseni boyunca yukarı hareket ettirirken Ry voltajı düşer. Bu voltaj 1.0V'nin altına düştüğünde OP-AMP çıkışı Düşük olur. OP-AMP'nin bu DÜŞÜK mantık çıkışı Raspberry Pi tarafından algılanır ve Pi, bir LED'i değiştirerek yanıt verir.
OP-AMP3, X ekseni boyunca joystick'in sol taraftaki hareketini algılar:
Karşılaştırıcı U1: C'nin negatif terminali 2.3V ile sağlanır (1K ve 2.2K ile voltaj bölücü devre kullanılarak) ve Pozitif terminal Rx'e bağlanır. Joystick x ekseni boyunca sola hareket ettirildiğinde, Rx voltajı artar. Bu voltaj 2.3V'un üzerine çıktığında, OP-AMP çıkış Pininde + 3.3V çıkış sağlar. OP-AMP'nin bu YÜKSEK mantık çıkışı Raspberry Pi tarafından algılanır ve Pi bir LED'i değiştirerek yanıt verir.
OP-AMP4, X ekseni boyunca joystick'in sağ taraftaki hareketini algılar:
Karşılaştırıcı U1: 4'ün negatif terminali 1.0V ile sağlanır (2.2K ve 1K ile voltaj bölücü devre kullanılarak) ve Pozitif terminal Rx'e bağlanır. Joystick tam x ekseni boyunca hareket ettirildiğinde, Rx voltajı düşer. Bu voltaj 1.0V'nin altına düştüğünde OP-AMP çıkışı Düşük olur. OP-AMP'nin bu DÜŞÜK mantık çıkışı Raspberry Pi tarafından algılanır ve Pi, bir LED'i değiştirerek yanıt verir.
Bu şekilde Joystick'in dört yönünü belirleyen dört mantığın tümü Raspberry Pi'ye bağlanır. Raspberry Pi, bu karşılaştırıcıların çıktılarını girdi olarak alır ve buna göre LED'leri değiştirerek yanıt verir. Raspberry Pi'nin terminalinde gösterilen sonuçlar, Python Kodumuzu kullanarak terminaldeki Joystick'in yönünü de yazdırdık.
Python kodu ve video aşağıda verilmiştir. Kod kolaydır ve kodda verilen yorumlardan anlaşılabilir.