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!
Raspberry Pi Dersleri serimizde kullanacağımız malzemelerin tamamına sizler için hazırladığımız setler ile kolayca sahip olabilirsiniz. Raspberry Pi’ye Uzaktan Bağlantı Yöntemleri (VNC,SSH,TTL) dersimize kadar olan malzemeler için Kombo Kit, Raspberry Pi 3 Röle Kartı İle Alarm Devresi Yapımı dersimize kadar olan malzemeler için Süper Başlangıç Seti, tüm derslerdeki malzemeler için Proje Seti tercih edebilirsiniz.
Merhaba arkadaşlar. Bu yazımızda Raspbery Pi’mizin GPIO pinlerini kullanmayı öğreneceğiz.
Gereken Donanımlar
Projedeki Malzemeler Bu Sette. Şimdi İncele >
GPIO Pinleri
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’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 updatesudo 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 GPIOimport time# blinking functiondef 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 numbersGPIO.setmode(GPIO.BOARD)# set up GPIO output channelGPIO.setup(11, GPIO.OUT)# blink GPIO17 50 timesfor i in range(0,50): blink(11)GPIO.cleanup()
Kodların satır satır detaylı açıklaması için aşağıdaki videoyu izleyebilirsiniz:
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.
Raspberry Pi Hakkında Daha Fazlasını Öğrenmeye Devam Et
Raspberry Pi pek çok yönüyle avantaj sahibi ve geliştiriciler tarafından çok sevilen bir platform. Elektronik projelerinde, bilgisayar bilimlerinde ve robotik çalışmalarında sağladığı destek ve rahatlık ile öğrenmeyi sevdiren Raspberry Pi hergün daha da çok gelişiyor.
Peki siz de daha fazla gelişmek istemez misiniz? Linux bilginizi geliştirmek, elektronik dünyasına atılmak ve eğlenceli projelere imza atmak için sizi Raspberry Pi ile yolculuğa çıkarıyoruz! Sizler için hazırladığımız Raspberry Pi eğitim serisine devam edin :
RPi Uzaktan Erişim Yöntemleri
Raspberry’nizi kullanmak için sürekli olarak ekrana, klavyeye, fareye bağlamanız gerekmiyor. Raspberry aslında birkaç basit yöntemle uzaktan veya kablolu olarak dilediğiniz her cihazdan kontrol edilebilmekte.
4. Dersimiz olan RPi Uzaktan Erişim Yöntemleri yazımızda sizlere SSH, VNC bağlantılarının ne olduğunu ve nasıl yapıldığını anlattık.
Raspberry Pi Buzzer Kullanımı
6. dersimizin konusu ise buzzerlar. Raspberry ile ses çıkışı alabileceğinizi biliyor muydunuz?
Yalnızca basit bir pasif buzzer kullanarak kendi melodilerimizi oluşturacağımız Raspberry Pi Buzzer Kullanımı yazımızda buzzer kullanımının detaylarını anlattık.
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.
Can Bey biz teşekkür ederiz. Röle tetikleme uygulaması için burada bir yazımız var, ondan faydalanabilirsiniz.
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?
Merhaba,
RGB Led kontrölü yapmak istiyorum bana önerebileceğiniz bir döküman var mı ?
Merhaba https://maker.robotistan.com/arduino-dersleri-6-buton-kontrollu-rgb-led/ bu ders işinizi görmez mi?
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.
GPIO 14 nolu pin projemde kullanmak istiyorum. Bunun için yapmam gereken ayrı bir ayar vb. var mıdır?
Kod da 17 yazan yere 14 yazmalisin.
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
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
Merhablar.Ben Rasbery Pi ye yeni Başladım.GPIO giriş çıkışlar analog input veya output veriyor mu acaba? Teşekkür Ederim
Merhaba. Raspberry Pi’nin GPIO pinlerinden PWM olarak analog sinyal alabilirsiniz fakat malesef analog giriş için harici entegrelere veya shield’lara ihtiyacınız vardır. (Örnek: http://www.robotistan.com/mcp3008-8-kanal-10-bit-adc ve http://www.robotistan.com/raspberry-pi-b-ad-da-genisletme-karti)
bir fsr den gelen değeri adc(analog to digital converter) ile nasıl değerini alabilirim?
LDR ile ışık algılama dersimizde fotodirenç ile kurduğumuz devrenin bir benzerini kurabilirsiniz.
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.
İyi günler GPIO’yu analog input olarak kullanabilir mıyız?
Malesef hayır. Raspberry Pi’nin en büyük handikapı GPIO pinlerininde ADC yer almaması. Çözüm olarak I2C haberleşmeye sahip ADC kartlarından kullanabilirsiniz:
http://www.robotistan.com/mcp3008-8-kanal-10-bit-adc
http://www.robotistan.com/mcp4725-12-bit-tek-kanal-adc
http://www.robotistan.com/ads1115-16-bit-4-kanal-adc
http://www.robotistan.com/ads1015-12-bit-4-kanal-adc
Bir de eğitimin sonunda
sudo python blink.py
yazilacagini da belirtseydiniz bari
Unutmuşuz kusura bakmayın 🙂
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.
Ö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.
Yani bu bahsettiğiniz I2C , SPI ve UART yazan pinler Digital I/O olarak kullanılamaz. Doğru mudur?
Ö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.
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.
Merhabalar.GPIO pinlerine bağlayacağımız bir butonun klavyedeki enter tuşu işlevini görmesi mümkün müdür?
Mümkündür. Örnek kullanım: http://blog.gegg.us/2017/01/setting-up-a-gpio-button-keyboard-on-a-raspberry-pi/
iyi çalışmalar. bir kaç sorum olacak. raspbery gpıo pinleri ile yapmak istediğim bir konu var. yardım edermisiniz. bir manina anakartından gelen 24 volt enerjiyi 5 volta düşürerek pinlerden birine girmek ve bu sinyali raspberry aldığı zaman ekrana bir görüntü gelmesini, enerji kesildiği an ise bir ses çalıp sesin bitiminde stabil konuma gelmesini istiyorum. bir kaç ayrı makina var, ve hangi makinadan voltaj gelir ise voltaj kesilene kadar makinanın resmini. voltaj kesildiği anda makinanın ismini sesli söyleyip durmasını, herhangi bir makinadan voltaj gelene kadar başka bir işlem yapmasına gerek yok.
Öncelikle 24V sinyali Raspberry Pi için uygun hale getirmek için 3.3V’a düşürmeniz gereklidir. Bu işlem için bir opto-izolatör kartı kullanabilirsiniz. Geriye kalan kısmı ise oldukça kolay, basit bir Python programı ile işletim sisteminden istediğiniz komutun gerçekleşmesini sağlayabilirsiniz. Örnek olarak buradaki dersimizdeki koddan başlayabilirsiniz: Raspberry Pi 3 PIR Sensör ile Hareket Algılama #9
teşekkür ederim ilginiz için
Rica ederim, bol projeli günler 🙂
Merhaba,
Verdiğiniz bilgiler için teşekkür edim.
Rappberry ile daha önce yazdığımız bir programı 60 dk araklıklarla çalıştırmak istiyorum. Bunun için ne yapmam gerekiyor?
Merhabalar. Linux işletim sistemlerinde
watch -n sure programadi
komutu ile istediğiniz sürede (saniye cinsinden) programlarınızı tekrar çalıştırmanız mümkündür.
Iyi geceler. Raspberry ye merak sardım öncelikle şunu öğrenmek isterim. Yazılımı harici bir ekran yardımı ile yazdık ve yükledik. Sonra devreyi çalıştırmak için ekrandan komut vermeden çalışmaz mi bu devre. Yani sadece raspberry ve led olacak enerjiyi verince led yakıp söndürecek .
Merhaba bir sorum var,
Rp 3 için fan almıştım. Çok sesli çalıştığı için arasıra çıkarıp takıyorumdum. Dün akşam es kaza 1 -3 nuramaları gpio pinlerine takarken kısa devre yaptı. Şimdi ise çalışmıyor. Bu sorunu çözebilir miyim? Yoksa rp 3 çöpe mi atmalayım. ;( Rp yeniyim.
Emeğinize sağlık. Gayet güzel ve sade anlatmışsınız. Tek bir eleştirim olacak Python kodunu notepad’e kopyaladığımızda, tüm kod tek bir satır halinde yazılmış olarak geliyor. Bu gördüğüm kadarıyla diğer örnek derslerde de böyle. Çok mu önemli derseniz değil ama okunabilirliği azaltıyor sanki. Bilginize.
İyi çalışmalar,
Kolay gelsin.