OrangePi C ve Python ile LED Yakmak

Elektronik projelerinde sıkça kullanılan LED’ler, basit ama etkili bir şekilde öğrenmeyi kolaylaştırır. Bu yazıda, python ile led yakmak konusuna odaklanacağız ve Orange Pi kullanarak bir LED’in nasıl kontrol edileceğini hem python hem de C ile adım adım öğreneceğiz. Hem Python programlama hem de GPIO pinlerinin kullanımı hakkında bilgi sahibi olmanızı sağlayacak bu rehberle, projelerinize sağlam bir temel oluşturabilirsiniz.

Tek kart bilgisayarların iyice yaygınlaşması ve kullanım açısından oldukça verimli oldukları için tercih edilen geliştirme kartlarından biri olan OrangePi ile ilk adımlarından biri olan GPIO ile LED yakıyoruz.

Karta doğrudan erişim sağlıyorsanız direk kodlama ve kütüphane kısmına geçebilirsiniz fakat karta fiziksel bir ekrandan erişim sağlayamıyorsanız, “OrangePi’ a Bağlanma” başlığını dikkatle okumanızı tavsiye ediyoruz. Bunun yanında Python ve C dilinin çalışması için kurulum ve ayarlamaları yapıyoruz. Fakat en başında ise kartımıza bağlantı işlemlerine göz atacağız. Ayrıca, sayfanın en alt kısmına doğru, terimler ve bazı işlevlerin açıklaması eklenmiştir.

OrangePi Hazır Hale Getirme

Kartı yeni aldığınızı farz ederek rehberimize başlıyoruz. Kartı kullanmak için öncelikle bir adet güç kablosu, bir adet işletim sistemi kurulmuş SD-Kart ve bir adet internet ya da veri bağlantısını sağlayacak kabloya ihtiyacımız var örnek olarak; ethernet kablosu, wi-fi adaptörü, USB-TO-TTL kablosu kullanıblabilir.

Modeme olan uzaklıktan dolayı bağlantıları Wi-Fi adaptörü ile sağladık, siz durumunuz ve istediğize göre hareket edebilirsiniz. Bunun yanında bu yöntemler dışında doğrudan kartınızı bir ekrana, klavyeye ve fareye bağlayabilirsiniz.

Kartımızda işletim sistemi olarak “Armbian” kullandık, uyumluluk ve kullanış açısından sizlere de ayrıca öneriyoruz. Bunun yanında alternatif olarak OrangePi için hazırlanmış Raspian OS‘ da kullanabilirsiniz.

Kullandığımız Kartın Fiziksel Hali

OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

OrangePi ‘a Bağlanma

Yukarıda belirtiğimiz gibi, biz wi-fi adaptörü aracılığı ile karta bağlantıları sağladık. Bağlantı için kartın modem yada sanal modem tarafından hangi IP adresini aldığını tespit etmemiz gerekiyor, bunun için;

Atanan IP Adresini Karttan Kontrol Etmek

Kartımız üzerinden kontrol etmek için, terminale erişmemiz gerekiyor. Terminali açmak için “CTRL+ALT+T” kombinasyonunu kullanabilirsiniz, yada doğrudan açabilirsiniz. Terminal ekranı karşımıza gelince, eğer wi-fi üzerinden bağlantı kurmuşsak “iwconfig” eğer ethernet üzerinden kablolu bağlantı kurmuşsak “ifconfig” komutunu yazıp gelen ekranda modem tarafından(DHCP) atanan IP adresimizi öğreniyoruz.

OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

Atanan IP Adresini Modem Arayüzü Aracılığı ile Kontrol Etmek

Bir çok modemin arayüz adresi “192.168.1.1” olarak ayarlanmıştır, fakat sizin modeminizin modeline göre bu giriş adresi değişiklik gösterebilir. Doğru adresi bulmak için modeminizin arka tarafında bulunan etiketi okuyabilirsiniz ya da bağlantı kurduğunuz cihazın bağlantı ayarlarında “Varsayılan Ağ Geçidi” kısmından da ulaşabilirsiniz.

Bunun yanında giriş yapmak için arayüz kullanıcı adı ve şifresi gerekecektir, bu iki bilgi genelde “admin” “admin” olarak hazır gelmektedir fakat bunu da kontrol etmekte fayda olacaktır. Bazı modemlerin arayüze girememe problemini çözmek için, modemi tekrardan başlatabilirsiniz yada doğrudan fabrika ayalarına dönebilirsiniz, fakat unutmayın bunun sonucunda tekrara servis sağlayıcısı tarafından size verilen bilgileri girmeniz gerekecektir.

OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

Atanan IP Adresini Farklı Bir Cihazdan IP Taraması Yaparak Bulmak

Modem arayüzü ya da doğrudan kartımızdan görüntü alma şansınız yoksa, bu yöntemi kullanabilirsiniz. Herhangi bir ağ tarama programı işiniz görecektir. Biz bu esnada “net-scan” isimli yazılımı kullanarak kartımızın aldığı IP adresini bulduk.

OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

PuTTY ile SSH Bağlantısı

OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

PuTTY, SSH/Telnet yapısı kullanarak uzaktaki ya da aynı ağdaki suncunuza/makinenize bağlanmak için kullanılan açık kaynak kodlu, basit arayüze sahip bir yazılımdır. Kartımızın almış olduğu IP adresini tespit ettikten sonra, PuTTY aracılığı ile ilk bağlantımızı sağlayacağız. IP adresini doğru yazdığınıza ve varsayılan olarak gelen 22 portunu kullandığınza emin olun, aksi taktirde bağlantı kuramazsınız.

Bağlantılarınız ve giriş bilgileriniz doğru ise “Open” butonundan sonra sizi karşılayacak olan ekran bu şekilde bir hata mesajıdır. Güvenlik önlemi olarak çıkan bu mesaja “Evet” diyerek sorunsuz bir şekilde devam edebilirsiniz. İlerleyen yazılarımızda bu hata mesajını almamak için, “parmak izi”  önbellekleme yapacağız, bunun yanında “puttygen” ile doğrudan bağlantılar kuracağız.

OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

PuTTY aracılığı ile karşımıza gelen terminalde kartımızın giriş bilgilerini girmemiz gerekecek. Gösterim için root hesabını kullanıyoruz bu sebeple “root” olarak giriş yapıyoruz ve şifreyide önceden belirlediğimiz için şifreyle giriyorumz.

Normal şartlarda temel kullanım amaçlarken kesinlikle root yetkileri olan hesap kullanmamak gerekir, bu gibi durumlar kartta ve ağınızda istemeyeceğiniz sonuçlar yaratabilir.

Şifrenizi yazarken boşluk olarak gözüksede, merak etmeyin yazıyorsunuz! Türkçe klavye ve Türkçe harfler içieren şifrenizi girerken doğru yazdığınızdan emin olun. Sizler belirlediğiniz kullanıcı hesabı ile giriş yapabilirsiniz, eğer herhangi bir kullanıcı oluşturmadıysanız, sizde “root” hesabını kullanabilirsiniz.

Dağıtımdan dağıtıma gösterse de, genel olarak ilk root şifreleri; “root” , “toor” , “1234” olarak gelmektedir. Bunun yanında eğer ne yaptığınızın farkında değilseniz root hesabına giriş yaptıksan sonra, yeni bir kullanıcı oluşturmakta fayda olacaktır. Root hesabının yüksek erişim kapasitesi ile kartınızda bilmediğiniz, problemlere ve sorunlara yol açabilirsiniz.

OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

Şifreyi girdikten sonra;

PuTTY ile başarılı bir şekilde bağlantımızı kurduk.

PuTTY ile başarılı bir şekilde bağlantımızı kurduk.

Windows CMD (Komut İstemi) İle

Windows ile birlikte gelen yerleşik SSH özelliği ile doğrudan SSH bağlantısı kurabilirsiniz. “SSH” komutu ile kullanabileceğiz parametreler ve bilgiler karşınıza çıkacaktır. Bağlantı için kullanmanız gereken kod ise; “ssh kart_kullanici_adi@kartin_ip_adresi” gerekli yerleri kendi kartımıza göre doldurduğumuzda

ssh [email protected] ortaya çıkmış oldu. 
OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

Enter ile gönderdiğimiz komutumuzun sonucunda bizleri giriş ekranı karşılamış olucaktır. Kullanıcı adını önceden belirttiğimiz için sadece şifre girmemizi isteyecek, önceden belirlediğimiz şifre ile girişimizi başarılı ile gerçekleştirmiş olduk.

Bazı kart ve linux dağıtımlarında doğrudan bir kullanıcı hesabı ve şifresi oluşturmayabiliyor fakat ilk SSH bağlantısında sizlere bu kullanıcıyı oluşturmaya şans tanıyor.

OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

Kütüphane Yüklemeleri ve Güncellemeler

Neredeyse her yerde karşımıza çıkan kütüphaneler yani kod grupları bu projede GPIO işlemleri için gerekli. Python ve C için ayrı kütüphanelerin olduğunu belirtmek isteriz, siz hangisini arzu ederseniz kullanabilirsiniz. Önerimiz her iki kütüphaneye de sahip ve hakim olmanızdır. Python’un olmadığı yeri C ile C’nin olmadığı yeri Python ile kapatacağınızı unutmayın.

sudo apt-get update && sudo apt-get

Bu satırımız ile kartımızı güncelliyoruz.

sudo apt-get install git git-core

Bu satırımızda ise sıkça kullanacağımız “git” betiğini ediniyoruzi çoğu sistemde kurulu olarak geliyor. Kısacası GitHub’tan veri çekmek için kullanacağız.

C Kütüphanesi

OrangePi Mini Modeli için:

git clone https://github.com/orangepi-xunlong/WiringOP -b orangepimini

Diğer OrangePi Modelleri için:

git clone https://github.com/orangepi-xunlong/WiringOP -b orangepi

C kütüphanesini indirdikten sonra kurulum işlemlerine geçiyoruz.
İnen dizinin içine gelen dosyayı yolunu açıyoruz:

cd WiringOP

Kur betiğine yetki veriyoruz:

chmod +x ./build

Kurulum betiğini çalıştırıyoruz:

sudo ./build

Buraya kadar bir hata almadıysak , pinleri kontrol ediyoruz. Herhangi bir hata ile karşılaşmanız durumunda lütfen forum kısmından başlık açmaya çekinmeyin;

gpio readall
OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

C Kodu

Kodumuzu herhangi yazı modülünde yazabiliriz yada hazır olarak kullanabiliriz biz bu kod için nano kullandık.

nano blink.c

Bu betik ile “nano.c” isminde bir dosya oluşturduk. Karşımıza gelen komut ekranına kodumuzu yazıyoruz.

#include
int main (void)
{
wiringPiSetup () ;
pinMode (0, OUTPUT) ;
for (;;)
{
digitalWrite (0, HIGH) ; delay (500);
digitalWrite (9, LOW) ; delay (500);
digitalWrite (0, HIGH) ; delay (500);
digitalWrite (9, LOW) ; delay (500);
}
return 0 ;
}

Yazdığımız pencereyi “CTRL+X” devamında “y” İle Kaydediyoruz.
Kodumuzu compile etmek için;

gcc -Wall -o blink blinkk.c -lwiringPi -lpthread

Test etmek için;

sudo ./blink
OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c

Başarılı bir şekilde ilk kodumuzu compile ettik ve çalıştırdık.

Python Kütüphanesi

Python; genel amaçlı, nesneye yönelik, kolay okunabilir ve anlaşılabilen bir programlama dilidir. OrangePi ile birlikte kullanım alanı çok geniştir. Python’ı kullanarak ister görevler oluşturun ister Orange pi pinlerini kontrol edin ister algoritmalar oluşturup işlemler yapın. C diline ne kadar hakim olursanız olun Ptyhon’u OrangePi kullanırken es geçemezsiniz.

Zero modelleri için;

sudo git clone https://github.com/nvl1109/orangepi_zero_gpio.git

Diğer modeller için;

sudo git clone https://github.com/duxingkei33/orangepi_PC_gpio_pyH3.git

Dosya yolumuzu açıyoruz;

cd orangepi_PC_gpio_pyH3

Kurulumu yapıyoruz;

sudo python setup.py install

Bu betiğin çalışmaması durumunda CHMOD ile izin vermeyi deneyin, yüksek ihtimalle sorun çözülecektir. Bunun yanında bu kodda Python3 kullanılmıştır.

Python ile LED Yakmak için Gereken Kod

from time import sleep
from pyA20.gpio import gpio
from pyA20.gpio import port
gpio.init()
#gpio atamasi yap.
led = port.PA6
gpio.setcfg(led, gpio.OUTPUT)
while True:
gpio.output(led, gpio.HIGH)
sleep(1)
gpio.output(led,gpio.LOW)
sleep(1)

Devre Şeması ve GPIO Pinleri

Kullandığınız kart modeline göre GPIO Pinleri farklılık gösterebilir bu yüzden, kartınızın dökümantasyonu mutlaka inceleyin, aşağıda OrangePi PC için şema ve pin dağılımını paylaştık.

OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c
OrangePi C ve Python ile LED Yakmak python ile led yakmak,orange pi c


Potansiyel Hatalar

zero@orangepizero:~/WiringOP/examples$ gcc -o blink blink.c -lwiringPi
//usr/local/lib/libwiringPi.so: undefined reference to `pthread_join'
//usr/local/lib/libwiringPi.so: undefined reference to `pthread_create'
//usr/local/lib/libwiringPi.so: undefined reference to `pthread_cancel'
collect2: error: ld returned 1 exit status

Gibi bir hata alırsanız “gcc” yani compile etme kodunuza “-lpthread” betiğini eklemeyi deneyin yada doğru yazdığınızdan emin olun.

Python ile ilgili problemler genelde yanlış versiyon kurmaktan kaynaklanır ayrıca aynı anda iki farklı versiyonun olması karışıklık ve çakışmalara neden olacaktır. Bu yüzden tek bir versiyonda kalmanızda fayda var.

Terimler ve Sayfa Sözlüğü

GCC: Gnu C Compiler tarafından üretilmiş açık kaynak kodlu, ücretsiz bir compile etme betiğidir, C ve C++ ile yazılmış bir çok programın temelinde vardır.

GPIO: Genel amaçlı giriş ve çıkış pinleridir. 

Sanal Modem: Fiziksel bir modeminiz yoksa, ethernet kablosu aracılığı ile doğrudan kartınızı bilgisayara bağlayabilirsiniz. Ya da sanal wi-fi ağı kurarak bağlanabilirsiniz, iki koşulda da işlemleri sorunsuz şekilde halledebilirsiniz. İnternet bağlantısı yoksa sadece güncellemeleri ve gerekli kütüphaneleri indiremezsiniz.

Net-Scan: Herhangi bir ağ tarama programı kullanabilirsiniz. Ücretsiz ve güvenilir bir kaynaktan indirdiğinize emin olun.

Telnet: TCP/IP protokollerinden biridir. Türkçeye iletişim ağı olarak çevirebiliriz. Şifreleme olmadan text bazında iletişim kurduğu için genelde uzak mesafeler için pek tercih edilmez. Günümüzde sadece aynı ağ üzerinde sunucu çiftliklerinde kullanılır. Varsayılan port olarak 23’ü kullanır.

Root: Bir çok yerde karşımıza çıkan “root” kelimesi aslında kök dizine erişebilen anlamına gelmektedir. Yani bütün yetkilere sahip kullanıcı hesabı. 

SSH Bağlantısı: SSH Telnet gibi hazırlanmış şifreli bağlatı için kullanılan protokoldür. Varsayılan olarak 22. port’u kullanır. İletişimin şifreli olarak ilerlemesinden dolayı oldukça tercih edilir ve günümüzde en çok kullanılan iletişim prokollerinden biri olmuştur. İlk başlarda Telnet’in alternatifi olarak çıksada. Şuan oldukça kullanılan bir iletişim protokülüdür.

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.