2017 - Elektrik Elektronik Projeleri

Post Top Ad

19 Mart 2017 Pazar

Raspberry Pi - GPIO İşlemleri

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.

GPIO pinlerinin GPIO numaraları ve fiziksel sıralaması
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.

Duty cycle değerlerine göre PWM sinyalleri
Ş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ş

Devamı

Post Top Ad