Raspberry Pi Uygulamaları

Raspberry Pi ile Elektroniğe Giriş

YAZAR: ARDA · YAYIMLANMIŞ 9 EYLÜL 2013 · GÜNCELLENDİ 31 MAYIS 2014

Merhaba Arkadaşlar,

Bugünkü yazımızı takipçilerimizden Doğukan Korkmaztürk hazırladı, kendisine teşekkürlerimiz sunuyoruz.

Bu yazımızda Raspberry Pi ile Elektroniğe temel giriş yapıp GPIO ile led yakıp söndürme gibi temel işlemleri konu alacağız.

Bugün ne yapsam diye düşünürken gözüme yakın zamanda aldığım birkaç LED ve direnç ilişti. Ben de bunların beni bir süre oyalamaya yeteceğini düşünerek uzun zamandır adım atmak istediğim elektronik dünyasına adım atmaya karar verdim en sonunda. İnternet üzerinde biraz araştırma yapıp birkaç örnek inceledikten sonra bu işin bayağı zevkli olacağını fark ettim ve anladığım kadarıyla elektronikçilerin “Hello World” uygulaması sayılan LED yakıp söndürme işine giriştim. Şimdi de edindiğim bilgileri ve yaptıklarımı paylaşacağım.

Öncelikle kullandığım malzemeleri sıralayayım;

  • Raspberry Pi Model B Rev 2.
  • 1 adet yeşil ve 1 adet kırmızı LED
  • 1 adet 330Ω (Yeşil LED için) ve 1 adet 300Ω (Kırmızı LED için) direnç
  • Breadboard (Olmazsa olmaz değil ama işimizi çok kolaylaştırdığı bir gerçek)
  • Bağlantıları sağlamak için çeşitli kablolar

Tabii ki malzeme listesi isteklerinize göre değişiklik gösterebilir. Ben elimin altındakilerden faydalandım. Şimdi elimizdekilerden bahsedeyim.

GPIO Pinleri

Raspberry Pi nedir ne değildir konusuna girmeyeceğim çünkü Google üzerinden kısa bir araştırma ile bu konuda fazlaca bilgi edinebilirsiniz fakat GPIO pinleri üzerinde biraz durmak istiyorum. GPIO (General-purpose input/output, Türkçesi ile Genel amaçlı giriş/çıkış), Raspberry Pi üzerinde 26 tane bulunur ve 17 tanesi ile giriş ve çıkış işlemi yapılabilir. “Bana bu kadarı yetmez” diyenler ise GPIO sayısını arttırabilirler. Bunun için şurada güzel bir anlatım mevcut. Aşağıdaki resimde de Raspberry Pi Model B Rev 2 üzerindeki GPIO pinlerinin fiziksel numaralarını ve görevlerini görebilirsiniz. Birazdan işimize de yarayacak bu bölüm.

Raspberry-Pi-GPIO-Layout-Revision-2

Yazılım Tarafı

LED kontrolü için tabii ki ufak bir yazılıma ihtiyacımız olacak. Bunun için pek çok alternatifimiz olsa da ben C++ ile WiringPi kütüphanesini kullanmayı tercih ediyorum ve bu anlatımı da bu ikiliyi kullanarak hazırladım. WiringPi kütüphanesini kullanmamın sebebi ise kullanımının Arduino ile benzemesi ve böylece Arduino için hazırlanmış derslerden de daha rahat bir şekilde faydalanmak. Fakat biraz daha araştırarak başka yöntemler de bulmanız mümkün. Eğer benim gibi WiringPi ile devam etmeye karar verdiyseniz hemen kurulumuna geçelim. Kurulum işlemi de son derece basit. Komut satırına aşağıdaki komutları sırayla vermek WiringPİ kütüphanesinin indirilip, derlendikten sonra kurulmasına yetecektir.

123git clone git://git.drogon.net/wiringPicd wiringPi./build

Kurulumun sorunsuz bir şekilde tamamlanmış olması gerek. Kontrol etmek için;

12gpio -vgpio readall

komutlarını komut satırında çalıştırmayı deneyebilirsiniz. WiringPi kütüphanesini kurduğumuza göre sıra geldi devrenin oluşturulmasına.

Devremizi Oluşturalım

😀

Oluşturduğum devrenin şemasını aşağıda paylaşıyorum. Üstünde düzeltmeler yapılabilecek olsa da bizim işimizi görecektir   Kullandığım parçaların listesini yukarıda sıralamıştım. Ben breadboard kullandığım için şemayı da breadboard için hazırladım. Aklınızda breadboard nedir, nasıl kullanılır gibi sorular varsa sizi böyle alalım. Yeşil LED‘i kontrol etmek için fiziksel numarası olan GPIO pinini, kırmızı LED‘i kontrol etmek için fiziksel numarası 11 olan GPIO pinini kullanacağım. Fiziksel numarası 6 olan pini ise topraklama için kullanacağız. Verdiğim numaraları özellikle “fiziksel numara” olarak belirtmemin sebebi ise WiringPi kütüphanesinin pinlere kendi numaralarını atamasıdır. Örneğin fiziksel numarası 11 olan pinin WiringPi numarası 0‘dır. Pinlerin fiziksel numarasını yukarıdaki resimden, WiringPi numaralarını ise komut satırına “gpio readall” yazarak öğrenebilirsiniz.

led

Uygulamanın Hazırlanması

😀

İşte burası benim bölümüm  Sıra geldi hazırladığımız devreyi çalıştırmak için yazacağımız uygulamaya. Biraz daha yukarıda bahsettiğim gibi ben bu iş için C++ kullanacağım. Kaynak kod üzerinde yaptığım yorumlar ile mümkün olduğu kadar da açıklayıcı olmaya çalışacağım.

Öncelikle Raspberry Pi üzerinde “ledtest.cpp” isimli bir dosya oluşturup aşağıdaki gibi düzenledim. Siz bu uygulamayı kendiniz yazabileceğiniz gibi aşağıdan kopyala/yapıştır da yapabilirsiniz. ( // ile başlayan bölümler yorumlar içindir. Bunlar uygulamaya dahil edilmez ve uygulamayı etkilemezler.)

12345678910111213#include <wiringPi.h> int main() {wiringPiSetup ();pinMode(7, OUTPUT);     // 7 numaralı pini çıkıs olarak ayarladıkfor (short i = 1; i <= 5; i++) { // Bu kod blogunun 5 kere tekrarlanmasını saglıyoruzdigitalWrite(7, HIGH);  // 7 numaralı pine baglı LED'i açıyoruzdelay(1000);        // 1 saniye (1000 milisaniye) bekliyoruzdigitalWrite(7, LOW);   // 7 numaralı pine baglı LED'i kapatıyoruzdelay(1000);        // 1 saniye (1000 milisaniye) bekliyoruz}return 0;}

Uygulamamızı yukarıdaki gibi oluşturduktan sonra

1g++ ledtest.cpp -o ledtest -lwiringPi

komutuyla derliyoruz (Derlemenin ne olduğu konusunda fikri olmayanlar şu taraftan devam edebilir). Vee uygulamamız hazır. Uygulamamızı çalıştırmak için

1sudo ./ledtest
😀

komutunu verdikten sonra arkamıza yaslanıp bize göz kırpan yeşil LED‘imizi izliyoruz