Bu içerik 11 Ocak 2017 Tarihinde Raspberry Pi 3 Uyumlu Olacak Şekilde Güncellenmiştir. Güncellenen kısımları daha kolay şekilde görebilmeniz için farklı renkte (lacivert) yazdık. Güncelliğini yitiren kısımların ise üzerini çizdik. Keyifle oku, bol bol üret!

Merhaba arkadaşlar. Bu yazımızda Raspbery Pi’mizin GPIO pinlerini kullanmayı öğreneceğiz.

Gereken malzemeler:

Raspberry Pi’deki GPIO konektöründe farklı işlevlere sahip pinler bulunmaktadır:

  • Genel amaçlı giriş/çıkış için kullanabileceğimiz GPIO pinleri
  • I2C haberleşme portu (GPIO02 ve GPIO03 pinleri)
  • SPI haberleşme portu (GPIO10, GIPO09 ve GPIO11 pinleri)
  • UART seri haberleşme portu (GPIO14 ve GPIO15 pinleri)

Bu pinlerin yerlerini görebilmemiz için şu şekilde bir diyagram mevcuttur:

Raspberry Pi GPIO Header
Raspberry Pi GPIO Header

Raspberry Pi’mizin tüm haberleşme yeteneklerini kullanabilmemiz için raspi-config programını kullanarak I2C, SPI ve Device Tree özelliklerini aktifleştirmemiz gereklidir. Bu özellikleri açmak için 1 numaralı dersimize bakabilirsiniz.

GPIO pinlerini kullanabilmemiz için python-dev ve python-rpi.gpio isimli paketlerin sistemde kurulu olması gereklidir. Raspbian’ın güncel sürümlerinde gerekli tüm paketler yüklü gelmektedir.

sudo apt-get update
sudo apt-get install python-dev  python-rpi.gpio

Komutları ile paketleri sisteme yüklüyoruz. Yükleme işlemi bitince boş bir dosya açıp, aşağıdaki kodu kaydettikten sonra dosyayı blink.py ismiyle kaydediyoruz.

import RPi.GPIO as GPIO
import time
# blinking function
def blink(pin):
        GPIO.output(pin,GPIO.HIGH)
        time.sleep(1)
        GPIO.output(pin,GPIO.LOW)
        time.sleep(1)
        return
# to use Raspberry Pi board pin numbers
GPIO.setmode(GPIO.BOARD)
# set up GPIO output channel
GPIO.setup(11, GPIO.OUT)
# blink GPIO17 50 times
for i in range(0,50):
        blink(11)
GPIO.cleanup()

Kaydettiğimiz kodu

sudo python blink.py

Komutuyla çalıştırıyoruz. Raspbian’ın güncel sürümünde Python komutlarından önce sudo yazmamıza gerek yoktur.

Devre şemamız:

 

Burada dikkat etmemiz gereken nokta, GPIO17 isimli pinin, 11 numaralı pinde olmasıdır. 17 numaralı pin ile (3.3V) karıştırmamamız gerekir.

30 Yorumlar

  1. Merhabalar,
    Hocam harikasınız, tebrik ederim! Yabancı bloglarda okumama rağmen bir sorumun net yanıtını bulamadım, acemiliğime verin. Ben uzaktan (220V) röle tetiklemek istiyorum. Bunun için hangi portları kullanabilirim? Hangi portları nerede kullanabileceğimi tam anlayamadım. Örnein: bu iş için I2C, SPI, UART bunların tamamını kullanabilir miyim?

    Yanıtınızı bekler,
    Teşekkür ederim.

    • GPIO17 nimarali pini rolenin + verilen kisima vericeksin her ihtimale karsi dikkatli olmalisin ama 220 v bahsediyoruz ilk olarak 12v ile denemeni tavsiye ediyorum.

    • Hocam verdiğiniz bilgiler çok faydalı ve bizlere ufuk saçıyor. Ben rdm6300 125KHz rfid kart okuyucu montajını yapıp kart hareketlerini izlemek istiyorum. Fakat rdm 6300 bağlantısını Raspberry Pi 3 ile nasıl yapacağımı tam bilemiyorum. Yardımcı olabilir misiniz?

  2. Merhabalar,

    Öncelikle devre şemasındaki ledin ters bağlandığını belirtmek isterim. Python diline az biraz aşina biri olarak programlama dili ile ilgili değil ama diğer özellikler bakımından biraz daha ayrıntıya girerseniz çok güzel olur. Dersler bir çok meraklı insan için çok faydalı. Çalışmalarınızın devamını dört gözle bekliyoruz. İyi çalışmalar.

  3. import RPi.GPIO as GPIO
    import time
    # blinking function
    def blink(pin):
    GPIO.output(pin,GPIO.HIGH)
    time.sleep(1)
    GPIO.output(pin,GPIO.LOW)
    time.sleep(1)
    return
    # to use Raspberry Pi board pin numbers
    GPIO.setmode(GPIO.BOARD)
    # set up GPIO output channel
    GPIO.setup(8, GPIO.OUT)
    # blink GPIO14 50 times
    for i in range(0,50):
    blink(11)
    GPIO.cleanup()

    yaz. uart kapat çalışmazsa

  4. Merhabalar yeni başlayan biri olarak pi 3 Model B ye gpio ile klavye bağlamak istiyorum. daha önce böyle bir uygulama yaptınız mı? çalıştırmak mümkün mü? hangi pinleri ve komutları kullanmalıyım

    • Arkadasim o kadar urasacagina usb li bi klavye alsan daha iyi olur. Gpio pinlerini kullanima acil yapacagimizda sase durumunda makinemizi yakabiliriz kas cikarken goz cikartma derim

  5. Merhablar.Ben Rasbery Pi ye yeni Başladım.GPIO giriş çıkışlar analog input veya output veriyor mu acaba? Teşekkür Ederim

  6. Merhaba,
    Baska bir cihaz var. Bunun bir tusunun kablosunu uzattim. Gpoi ile bu tusa basmak istiyorum. Ayni mantikta m yapmaliyim

    • Anladığım kadarıyla yapmak istediğiniz işlem başka bir cihazın butonunu Raspberry Pi’nin GPIO pinleri ile kontrol etmek. Bu işlem için Raspberry Pi’nin GPIO pinlerine bir röle veya transistör devresi bağlayabilir ve butonunu kontrol edeceğiniz cihazın bağlantısını bu devre üzerinden yapabilirsiniz.

  7. merhaba.raspi3 üm var.gpio kontrolu yapmak istiyorum.terminal üzerinden python kodlari ile pini aciyorum fakat voltaj gelmiyor.elimde multimetre olmadigi icin bende webgpio yukledim.python kodunu yazip enterladiktandan donra durum degisiyor webgpioda yani kod calisiyor sorun yok algiliyor sistem onu fakat voltaj gelmiyor.pin durumu açikken kucuk motorun bir icini + pine digerini topraga deydirdigim an lojik 1 den, lojik 0 oluyor webgpioda.surekli gelen +3 ve +5 volt pinlerinde sikinti yok denemek icin direk bagladim calisiyor yabanci forumlara gruplara heryere sordum cozum bulamadim sizcr tekniki bir arizami?nasil cozebilirim?

    • Eğer fiziksel bir arıza olsaydı webgpio ile de çalışmazdı. Sizin yaşadığınız sorun yazılımsal kaynaklı görünüyor. Yazdığınız kod ile ilgili bir sorun olabilir veya kullanıcı yetkilerinizden kaynaklı olabilir. Ayrıca ne kadar küçük boyutlu olursa olsun, herhangi bir motoru doğrudan GPIO pinlerine bağlamak kartınıza hasar verebilir.

  8. Öncelikle emeğiniz ve çalışmalarınız için teşekkür ederim elinize sağlık.Sorum şu ; Raspberry pi 3 de tam 26 tane GPIO pini bulunmakta , bunların tamamı digital I/O olarak kullanılabilir mi? Cevabınız için şimdiden teşekkürler

    • Merhabalar. Raspberry Pi’de yer alan GPIO pinleri, bahsettiğiniz gibi I/O olarak kullanılabilmektedir. Fakat I2C, SPI ve UART gibi haberleşmeye ayrılmış özel pinler bulunmaktadır. Bu haberleşme pinlerinin yerleri malesef değiştirilemez.

        • Örnekle anlatmak gerekirse, bir röleyi GPIO14 (UART TX) pinine de bağlayabilir, GPIO23 pinine de bağlayabilirsiniz. Fakat UART TX pininin yeri değiştirilemez.

  9. boş bir dosya açılır deniyor. bu işlem raspberry pi 3 ve python 3 de nasıl yapılıyor. ayrıntıya girmemişsiniz.

CEVAP VER