mehmetakbas
3/19/2017
6
Raspberry Pi’ı yalnızca bir
mini bilgisayar olarak değil, elektronik devrelerde kontrol kartı olarak da
kullanabilmekteyiz. Bunu Raspberry Pi üzerinde bulunan GPIO pinlerini
programlayarak sağlamaktayız.
Raspberry Pi 2 Model B kartı
üzerinde 40 tane GPIO pini bulunmaktadır. Bunlardan 2 tanesi 5V, 2 tanesi 3.3V,
8 tanesi GND ve 2 tanesi EEPROM için ayrılmış pinlerdir. Geriye kalan 26 pin
Input/Output pinidir. Bu Input/Output pinlerinden 5 tanesi SPI haberleşmesini, 2
tanesi I2C haberleşmesini ve 2 tanesi de UART haberleşmesini desteklemektedir.
Raspberry Pi üzerinde bulunan
GPIO pinlerini programlamada Raspbian işletim sistemiyle birlikte gelen Python
derleyicisini kullanmaktayız.
1. GPIO Kütüphanesinin Eklenmesi
Programlamada GPIO komutlarını
kullanabilmek için öncelikle GPIO kütüphanesinin eklenmesi gerekmektedir.
Raspberry Pi’da GPIO kütüphanesinin ismi Rpi.GPIO olarak geçmektedir. Python’da
kütüphane eklemek için import komutunu kullanmaktayız.
import RPi.GPIO
RPi.GPIO kütüphanesini programda
kısaca GPIO ismiyle çağırmak için aşağıdaki kod kullanılır:
import RPi.GPIO as GPIO
2. GPIO Pin Diziliminin Ayarlanması
Raspberyr Pi’ın GPIO pinlerini
isimlendirirken iki farklı dizilimle karşılaşırız. Bunlar BCM dizilimi ve BOARD
dizilimidir. BCM dizilimi pinlere verilen GPIO numaralarından oluşmaktadır.
Bunlar sıralı numaralar değildir. BOARD dizilimi ise pinlerin fiziksel
numaralandırılmasıdır. 1’den başlayıp 40’a kadar devam eden sıralı sayılardan
oluşur. Her iki pin dizilimi de Şekil 44’te görülmektedir.
GPIO pinlerini programlarken
öncelikle GPIO pin dizilimini ayarlamalıyız. Bunun için aşağıdaki kod
kullanılır:
GPIO.setmode(GPIO.BCM)
veya
GPIO.setmode(GPIO.BOARD)
3. Bir Pinin Giriş veya Çıkış Olarak Ayarlanması
Dijital giriş/çıkış
işlemlerinde öncelikle pinin giriş mi çıkış mı olacağını tanımlamalıyız. Bu
tanımlama işlemini GPIO kütüphanesi içerisinde yer alan setup fonksiyonu ile
gerçekleştirmekteyiz.
Bir pini giriş olarak ayarlamak
için aşağıdaki kod kullanılır:
GPIO.setup(pin_numarasi,GPIO.IN)
Bir pini
çıkış olarak ayarlamak için aşağıdaki kod kullanılır:
GPIO.setup(pin_numarasi,GPIO.OUT)
4. Bir Pinin Lojik-1 veya Lojik-0 Yapılması
Pinleri lojik-1 veya lojik-0
yapmak için GPIO.output() komutu kullanılmaktadır. Bu komutun
kullanımı aşağıdaki gibidir:
GPIO.output(pin_numarasi,True)
veya
GPIO.output(pin_numarasi,False)
5. Programa Gecikme Verilmesi
Raspberry
Pi programlarken zaman komutlarını kullanabilmek için öncelikle time
kütüphanesini eklemeliyiz. Kütüphaneyi ekledikten sonra time.sleep() fonksiyonu ile programa gecikme verebiliriz.
import time
time.sleep(saniye)
6. PWM Sinyallerinin Oluşturulması
PWM (Pulse
Width Modulation), sinyal genişlik modülasyonu olarak ifade edilmektedir. Bu
yöntemle güç kontrolü yapmak mümkündür. PWM tekniği ile üretilen pulseların yalnızca
genişlikleri ayarlanarak istenilen analog değer üretilir. PWM tekniğinde
sinyallerin frekans ve periyotları değişmez.
Şekilde
görüldüğü gibi PWM tekniğinde sinyallerin Duty Cycle değerleri değiştirilerek
0V-5V ve arasındaki gerilim değerleri üretilir.
Raspberry
Pi’da PWM sinyalleri aşağıdaki gibi oluşturulur:
import RPi.GPIO as GPIO #
GPIO kütüphanesi import edilir.
GPIO.setmode(GPIO.BCM) # Pin Şeması BCM olarak ayarlanır.
GPIO.setup(25, GPIO.OUT) # 25 numaralı pin çıkış olarak ayarlanır.
pwm_sinyal = GPIO.PWM(25, 100) # PWM
sinyali 100 Hertz olarak ayarlanır.
pwm_sinyal.start(50) # PWM %50 duty cycle ile başatılır.
Duty Cycle değeri değiştirilmek istenirse şu kod kullanılır:
pwm_sinyal.ChangeDutyCycle(70) # duty cycle değeri %70 yapılır.
PWM sinyali durdurulmak istenirse şu kod kullanılır:
pwm_sinyal.stop() # PWM
sinyali durur.
Kaynak: Gerçek Zamanlı Nesne Takip Eden
Robot – Mehmet Akbaş