13 Temmuz 2018 Cuma

ORANGE PI ANDROİD ÖNYÜKLEME

Orange Pi'yi Android ile Çalıştırma

Bugün Orange pi'yi Android görüntüsü ile nasıl çalıştırabileceğimizi inceleyeceğiz. Bir sd karta nasıl Android görüntüsü(Android image) yükleriz ve Orange pi'de Android yüklü bir sd karttan önyükleme(boot) yaparken nelerle karşılaşacağız bunlara bakacağız.

İlk aşamada sd kartı hazırlamamız gerekiyor. Burada sd kartın class10 veya üzeri bir sd kart olması önerilir. Sd kartı formatlamak ve daha sonra indirilen Android görüntüsünü sd karta yazmak için birkaç programa ihtiyacımız var. Lazım olan temel programlardan bu yazıda bahsedilmiştik. Buradan ihtiyacımız olan programların indirme linkine ulaşılabilir.

Eğer Ubuntu, Debian gibi bir görüntüyü(image) sd karta yazdırmamız gerekiyorsa burada Win32diskImager programını kullanabiliriz. Fakat Android görüntülerini sd karta yazdırmak için PhonenixCard programını kullanmamız gerekiyor.

- İlk önce http://www.orangepi.org/downloadresources/ sitesine girerek kullandığımız model için yayınlanan bir Android görüntüsünü indirelim.

- PhoenixCard programını açalım ve "DiskCheck" kısmında seçili hedefin sd kartımız olup olmadığını kontrol edelim.(1)

- "Format to Normal" kısmına tıklayarak sd kartı formatlıyoruz.(2) Sd kart başarılı bir şekilde formatlandıktan sonra "tamam" diyerek çıkan uyarıyı kapatıyoruz.(3)

- Eğer Android görüntüsünü emmc'ye yükleyip oradan önyükleme yapmak istiyorsanız bu aşamada sd karta yazdırma modunu "Product" seçin ve "Burn" diyerek yazdırma işlemini başlatın. Eğer kullandığınız cihazda emmc yoksa veya cihazınızı sd karttan çalıştırmak istiyorsanız bu kısımda "Startup" kısmını seçin ve "Burn" diyerek yazdırma işlemini başlatın.(4)





















































İşlem bittikten sonra "exit" kısmına tıklayarak sd kartımızı çıkarıp Orange pi'ye takıyoruz ve karta güç veriyoruz. Eğer direk sd karttan önyüklemek yapmak istiyorsanız başlangıç ekranını açılması yaklaşık 2 dakika sürüyor ve daha sonra ana ekranımız açılıyor.























Eğer sd karttan önyükleme yaparak Android görüntüsünü emmc'ye atmak istiyorsak yine aynı şekilde sd kartı Orange pi'ye takıyoruz. Orange pi'ye sd kartı taktıktan sonra sd kartın içindeki Android işletim sisteminin emmc'ye yüklenmeye başladığını 2 yolla anlayabiliriz. Birinci yol, Orange pi'nin üstündeki "kırmızı led" yanıp sönmeye başlıyor. İkinci yol ise ekranda bir yükleme çubuğu çıkıyor ve bu yüklenme çubuğu yüklenmenin ne kadar kaldığı hakkında bir fikir sahibi olmanızı istiyor.













Yükleme bittiğinde ise yanıp sönen led ışık sürekli yanmaya başlıyor ve ekranda çıkan yükleme çubuğunda "CARD OK" yazıyor. Daha sonra Orange Pi'den gücü çekip sd kartı çıkardıktan sonra tekrar güç verip sd kartsız bir şekilde kullanabilirsiniz. Burada başlıca bilmeniz gereken şeyler, başlangıç ekranı yaklaşık 1-2 dakika içinde açılıyor. Orange Pi' yi ilk açtığımızda çok kasıyor fakat cihazı tekrar başlattığımızda düzeliyor.















Orange pi Android Dil Ayarları 

Orange pi sitesinden indirdiğimiz Android görüntüleri Çince bir arayüz ile geliyor. Burada dili değiştirmek için hangi adımları izleyeceğimiz göstereceğim. Dil ayarları Android 4.4 ve Android 7.0'da farklı yerde bulunduğu için her ikisi içinde ayrı ayrı göstereceğim.

1) Android 4.4 Dil Ayarları

  • Öncelikle bu kısma tıklıyoruz.


  • Daha sonra karşımıza ayarlar menüsü çıkacak. bu menüden "A" simgesine sahip ikona tıklıyoruz. Sonrasındaki adımlarda aşağıdaki fotoğrafları takip ederek dili değiştirebilirsiniz.






1) Android 7 Dil Ayarları

  • Ayarlar menüsüne giriyoruz.





  • Buradan dil ayarları bölümüne geliyoruz.





  • Buradan sırasıyla aşağıda gösterilen seçeneklere tıklıyoruz.




  • Buradan Türkçe seçeneğine tıklıyoruz ve dil artık Türkçe olmuş durumda. Yalnız bazı çeviriler tam olmadığı için bazı menü isimleri hala İngilizce.


























Okuduğunuz için teşekkür ederim. Aklınıza takılan bir soru veya karşılaştığınız bir sorun olduğunda yorumlarda belirtebilirsiniz. Burada eksik olarak anlattığımı düşündüğünüz veya sizlerin gerekli olarak gördüğünüz bilgileri yine yorumlarda yazarsanız, bundan herkesin faydalanmasını sağlamış olursunuz. Herkese iyi çalışmalar.

Kaynakça:

9 Temmuz 2018 Pazartesi

ORANGE PI PYTHON İLE BUTON KONTROLÜ VE UYGULAMASI

Orange Pi Python ile Buton Kontrolü ve Uygulaması 

Bir önceki yazımızda Orange pi üzerinde Python' ı nasıl kullanacağımızdan ve giriş çıkış pinlerini(gpio) Python ile nasıl kontrol edebileceğimizden bahsetmiştim. O yazıda led örneği ile pini çıkış konumuna getirip ve pine değer yazmayı gördük. Bu yazımızda ise bir pini buton bağlayıp bu pini giriş yapacağız. Daha sonra bu pinden bir değer okuyup (1/0) ledi kontrol edeceğiz. Bu yaptığımız uygulamalar genel olarak basit birer  gpio programlama uygulamalarıdır.

Gpio pinlerini kontrol etmek için indirdiğimiz kütüphane içinde buton ile ilgili bir örnek kod var. "/orangepi_PC_gpio_pyH3/examples " dizinine bakarsak eğer "read_button.py" adlı bir dosyamız var. 

Burada pinlerin isimlendirildiği satıra bakıyoruz.

led  = connector.gpio0p0

button=connector.gpio3p40 

Burada farklı bir pin isimlendirmesi ile karşılaşıyoruz. Varsayalım ki  bu isimlendirmenin ne anlama geldiğini  bilmiyoruz. Burada bize kod yapısı ile ilgili bilgiler veren /orangepi_PC_gpio_pyH3 dizinindeki "README.txt"dosyasına bakıyoruz.


Bu dosyada nelerden bahsettiğine bir bakalım. İkinci satırda yazana göre bu paket A-20 OlinuXino-MICRO kartı için yazılmış fakat diğer kartlarla da kullanılabilir. Fakat burada diğer kartlarla kullanıldığında paketin düzgün çalıştığının garantisini vermiyorlar.


Bahsedilen kart ve pin haritası bu şekilde. Burada karta baktığımızda birden fazla pin yuvası olduğunu ve bunlardan giriş çıkış pinlerinin sayısı fazla olduğundan gpio1, gpio2 diye isimlendirildiğini görüyoruz. 

Yazının devamında belli fonksiyonların anlamından bahsediyor ve ardından gpio, i2c ve spi ile ilgili örnekler yapıyor. Biz gpio ile olan örneğe kadar olan kısma bakalım. Önümüzdeki yazılarda i2c ve spi örneklerine de bakacağız.

  • init() = Modülü başlatır. Her zaman ilk önce çağrılmalı.
  • getcfg() = Gpio' nun o anki durumunu(yapılandırmasını-giriş/çıkış) okur.
  • setcfg() = Gpio' yu yapılandırır(giriş/çıkış)
  • input() = Gpio' nun güncel değerini döndürür.
  • output() = Gpio' a bir değer ayarlar.
  • pullup() = Pull up/down ayarlamasını yapar.
Bu fonksiyonlarda ;
  • HIGH->1
  • LOW ->0
  • OUTPUT ->1
  • INPUT  ->0
  • PULL-UP ->1
  • PULL-DOWN ->2
yerine bu rakamlar kullanılabilir. Örneğin;

gpio.setcfg(port.PA6, 1)  ve gpio.setcf(port.PA6 , gpio.OUTPUT)  kodlarının ikiside PA6 pinini çıkış yapar.

Bu kütüphaneyi kullandığımızda iki şekilde pin ataması yapabiliriz.

1)Port adı ile 

Burada pinlerin üzerindeki isimlendirmeyi(PA6, PC2, PG3) kullanarak istediğimiz pini giriş/ çıkış olarak ayarlayabiliriz. Bunun için port kütüphanesini import etmeliyiz. Bir örnekler görecek olursak;

from pyA20.gpio import port
gpio.setcfg(port.PA6, 1) diyerek PA6 isimli 7.pini çıkış olarak ayarlayabiliriz.

2) Bağlayıcı(pin grubu) ve pin adı ile


Böyle bir isimlendirme ile atama yukarıda bahsettiğimiz gibi A-20 OlinuXino-MICRO kartının yapısını düşündüğümüzde aslında bir kolaylık sağlar.  Fakat Orange pi kartında da pin ataması yaparken bu yolu kullanmak bize kolaylık sağlayabilir. Tabi Orange pi' de farklı bağlayıcılar olmadığı ve tek bir grup olduğu için bu grup gpio1 diye geçer.


Burada C' de kullandığımız pin sıralamasına bakarsak pinlerin bir kısmı giriş çıkış bir kısmı i2c, bir kısmı spi gibi farklı işlevlerde kullanılıyor. Burada bunları düşünmeksizin tüm pinleri gpio1 başlığı altında düşüneceğiz.

Kullanımı ise şu şekilde;

from pyA20.gpio import connector

gpio.setcfg(connector.gpio1p7, 1) diyerek  7.pini çıkış olarak ayarlayabiliriz. Burada gpio1 pin grubunu ve p7 ise 7. pin olduğunu ifade eder.

Diyelim ki i2c pin grubunu kullanarak bir atama  yapalım. Böyle bir özelliğin bu modülde olmadığını belirten bir hata verir.




Diyelim ki Orange pi' de birden fazla gpio bağlayıcısı yok  bu yüzden gpio1' e ne gerek var diye düşünüp gpio pin grubunu kullanarak pinleri kullanalım. Tekrardan aynı hatayı verir ve böyle bir özelliğin bu modülde olmadığını  söyler. Benzer şekilde gpio0p18 dediğimizde de aynı hatayı verir.



Doğru kullanım aşağıdaki şekildedir ve burada  bir pin kullanırken bu pinin başka bir çevre tarafından kullanılmadığından emin olmak gerekir. Bu pini scl/sda, spi pini olmamasına dikkat etmek gerekir.




"README.txt" yazısında belirtilen bir başka konu ise eğer siz bir pine isim verir ve bu ismi yazdırırsanız ekranda çıkacak olan sayı BCM numarası olur.



Aynı kod içinde eğer hem "port" hem de "connector" kütüphanesini kullanırsak bu iki isimlendirmeyi de aynı kod içinde kullanabiliriz.


Şimdi geçelim button ile led uygulamamıza. 

Burada bir giriş pini belirleyip buradan buton ile bir bilgi alacağız. Aynı zamanda bir de çıkış pini belirleyip bu pine de led bağlayıp butondan gelen bilgiyi şartlandırıp lede 1 veya 0 göndereceğiz.  Ayrıca C' de olmayıp Python' da karşımıza çıkan  gpio.pullup(gpio.PULLDOWN) diyoruz. Hangi durumdan pull up/pull down dirençlerini kullanacağımızdan bu yazıda bahsetmiştik. Eğer butona bastığımızda  karta 1 gitsin istiyorsak pull down direnci kullanacağız.

Devre şeklimiz bu şekilde. Buton ve lede neden ve ne kadar direnç bağladığımıza önceki yazılarımızdan ulaşabilirsiniz.


Koda genel olarak bakacak olursak pinler için "port" veya "connector" isimlendirmesini kullanmak için bu kütüphaneleri koda dahil ediyoruz. Daha sonra Python ile gpio pinlerini kullanmak için gpio kütüphanesini de dahil ediyoruz. Sonrasında "gpio.init()"  diyerek modülü başlatıyoruz. Sonrasında "gpio.setfcg()" ile PC4 pinin led ile kullanmak için çıkış, PC7 pinin buton ile kullanmak için giriş olarak ayarlıyoruz. Sonrasında  "gpio.pullup(PC7,0)" ile pullupları temizleyip bu pin için pulldown olacağını belirtiyoruz. Sonrasında da "if" yapısını kullanarak butona basıldığında led pinine 1, basılmadığında ise led pinine 0 gitmesi için gpio.output() kod yapısını kullanıyoruz.

Sudo python buttondeneme2.py ile kodu çalıştırdığımızda programımız başlar. Daha sonra programı durdurmak için CTRL-C tuş birleşimini kullanabiliriz. Fakat kodu durdurduğumuzda hata değil fakat bir uyarı mesajı karşımıza çıkar.


En son işlenen kodu söylüyor. Eğer böyle bir uyarı almak istemezsek, örnek kodlarda da kullanılan "try" yapısını kullanabiliriz.




Devrenin çalışır halinin aşağıdaki videoda görebilirsiniz.


                                      

Okuduğunuz için teşekkür ederim. Aklınıza takılan bir soru veya karşılaştığınız bir sorun olduğunda yorumlarda belirtebilirsiniz. Burada eksik olarak anlattığımı düşündüğünüz veya sizlerin gerekli olarak gördüğünüz bilgileri yine yorumlarda yazarsanız, bundan herkesin faydalanmasını sağlamış olursunuz. Herkese iyi çalışmalar.

Kaynakça:

  • https://www.olimex.com/wiki/Main_Page
  • https://github.com/duxingkei33/orangepi_PC_gpio_pyH3/blob/master/README.txt

5 Temmuz 2018 Perşembe

ORANGE PI PYTHON İLE GPIO KONTROLÜ

Orange Pi Python ve Python ile GPIO Kontrolü

Blogda  şuana kadar Orange pi kullanımı üzerine yazılar paylaştım. Bazı yazılar orange pi' den ayrı bir linux öğretisi gibi dursa da amacımı Orange pi' yi elimize aldığımızda az çok yapısını bilelim ve bir şeyler geliştirmeye başlayalım.

Orange pi hem bir  bilgisayar hem de elektronik bir karttır. Biz bu blogda her iki taraf ile alakalı da uygulamalar yapacağız.Hem  Nas, Openhab2 ile ev otomasyonu, Media center gibi uygulamalarla  bir sunucu, depolama aygıtı, bir bilgisayar gibi kullanacağız  hem de gpio pinlerini kullanarak bir trafik lambası , klima ile ev sıcaklığını kontrol etme gibi uygulamalar yapacağız. Şuan daha çok elektronik tarafa ağırlık veriyorum. Fakat ilerleyen zamanlarda bu blogdan birçok uygulamaya ulaşacaksınız.

Daha önceki yazılarımızda C kütüphanesi ile gpio pinlerini kullanmıştık. Şimdi Python kütüphanesi ile gpio pinlerini kullanacağız.Öncesinden bilmemiz gerekenler şu şekildedir:
  • Python
  • Pip
  • Git

PyPI nedir?

PyPI, Python topluluğu tarafından geliştirilen ve paylaşılan bir yazılım deposudur. Python paketleri yazan kişiler yazılımlarını dağıtmak için PyPI sitesini  kullanıyorlar.

Pip nedir?

Pip, Python' daki paketleri indirmemizi ve kaldırmamızı sağlayan bir paket yöneticisidir. PyPI' daki paketleri rahatça pip komutu ile indirebilir ve kurabiliriz.

Git nedir?

Git bir versiyon kontrol sistemidir. Git, yazdığımız kodları, projeleri internet üzerinde tutmamızı ve yönetmemizi sağlayan bir kontrol sistemidir. İstersek internet üzerinden projelerimizi başkalarıyla paylaşabilir veya başkasının projelerine katkıda bulunabiliriz.

Python-dev nedir?

Python-dev, Oython uzantılı dosya oluşturmak için gerekli olan tüm başlık dosyalarını içeren bir pakettir.

Güncellemeleri kontrol edelim:

sudo apt-get update&&upgrade

Şimdi sırasıyla Python' ı ve gpio pinlerini kullanmak için gerekli olan kütüphaneyi indirip kuralım.

sudo apt-get install python

sudo apt-get install python-dev

sudo apt-get install python-pip

sudo apt-get install git




Daha sonra gpio pinlerini Python ile kontrol etmek için gerekli olan kütüphaneyi indirelim.


Zero modelleri için :

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

Diğer modeller için :

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

Elinizdeki modele göre bu kütüphaneleri indirdikten sonra yükleme işlemine geçiyoruz.

cd orangepi_PC_gpio_pyH3

sudo python setup.py install





Şimdi ilk uygulamamızı yapalım. Burada pin atamalarını yaparken bilmemiz gereken gpio pinlerinin adlandırmasının farklı olaması.Pin isimleri şu şekildedir.



İlk uygulama için orangepi_PC_gpio_pyH3/examples dizinindeki örnekleri kullanalım. Örneğin orangepi_PC_gpio_pyH3/examples dizinindeki " blink.led.py" dosyasına bakalım.



Koda baktığımızda kütüphane tanıtımlarından kısaca bahsedelim. "time" ve " pyA20.gpio" kütüphaneleri kullanılmış. Daha sonra PA12 portuna led ismini atamış. Biz burada bir değişiklik yapalım. PA12 portu Orange pi' de SDA pinine denk geldiği için biz 7.gpio pini olan PA6 portuna led ataması yapalım. Daha sonra led portu çıkış olarak belirlenmiş. Sonra olarak da ledin bir süre yanık bir süre sönük kalmasını sağlamak için  porta değer atama ve bekleme işlemleri kullanılmış.

Bu örnekte basit olarak kod yapısını görmüş olsak da ilerleyen yazılarımızda detaylı olarak bir proje dosyasına yazılan her bir satırı açıklamasını öğreneceğiz. Farklı farklı sensörlerle uygulamalar yapacağız. Şimdi 7.gpio portuna bağlı olacak şekilde bir blink led devresi kuralım. Bu devrede niye direnç kullandığımızı bu yazımızdan öğrenebilirsiniz.



Kodumuzu her zaman root(kök) kullanıcı olarak çalıştırmak zorundayız.

sudo python blink_led.py

Kod çalışmasını durdurmak için ise CTRL-C tuş kombinasyonunu kullanabiliriz.





Okuduğunuz için teşekkür ederim. Aklınıza takılan bir soru veya karşılaştığınız bir sorun olduğunda yorumlarda belirtebilirsiniz. Burada eksik olarak anlattığımı düşündüğünüz veya sizlerin gerekli olarak gördüğünüz bilgileri yine yorumlarda yazarsanız, bundan herkesin faydalanmasını sağlamış olursunuz. Herkese iyi çalışmalar.

Kaynakça:


2 Temmuz 2018 Pazartesi

ORANGE PI PC2 İÇİN WIRINGOP KÜTÜPHANESİ

Orange Pi PC2 ve Diğer Modeller için WiringOP kütüphanesi nasıl yüklenir?

Daha önce WiringPi' nin Orange pi için olan versiyonu WiringOP' nin nasıl yükleneceğinden bu yazımızda bahsetmiştik. Fakat bu H3 işlemcili modeller için geçerli bir kütüphaneydi ve o dosyaları çektiğimiz depo" https://github.com/zhaolei/WiringOP" idi. Bu kütüphane referans alınarak H5 işlemcili modeller için de WiringOP kütüphanesi oluşturuldu. Bu kütüphane dosyalarına da "https://github.com/tumugin/WiringOP" ' h5 dalından (branch) ulaşabilirsiniz. Fakat bu kütüphane eski Linux çekirdeklerinde çalışıyor. Bu yazımızda bu konudan bahsedeceğiz ve alternatif kütüphanelere bakacağız.

Şuan Orange pi PC2 için indirebileceğiniz Ubuntu  işletim sistemi için Linux çekirdeği 4.14' tür. 2018'in başları ve 2017' nin sonlarında ise indirdiğimiz işletim sisteminde  Linux 4.13 çekirdeği mevcuttu. İşte bu son iki işletim sistemi için yukarıda verilen kütüphanelerden hiçbiri çalışmıyor. Bunun sebebi ise, bu son çıkan iki sürümde işlemci(cpu) bilgilerinde hardware(donanım) ve processor(işlemci) bilgilerinin mevcut olmaması veya burada döndürülmemesidir. 

uname -a komutu ile işlemci bilgilerinize ulaşabilirsiniz.

Aşağıda 4.11 Linux çekirdeği için cpu bilgilerine bakalım.


Fakat şuanda,4.14 Linux çekirdeği mevcut, cat  /proc/cpuinfo komutunu döndürdüğümüzde cpu bilgileri aşağıdaki şekilde gözükmektedir.


Şimdi güncel olan 4.14 çekirdeği için WiringOP kütüphanesi yüklemeye çalışalım.


  • " https://github.com/zhaolei/WiringOP" kütüphanesinden yüklemeye çalıştığımızda bir hata ile karşılaşıyoruz. Kütüphane yüklenmiş gözüküyor fakat gpio readall dediğimizde şu hata mesajını alıyoruz.

piBoardRev: Unable to determine board revision from / proc / cpuinfo
-> No "Hardware" line
-> You may want to check:
-> http://www.lemaker.org/

Burada elimizdeki kartın algılanmadığını ve donanım bilgisinin yazmadığını söylüyor. Yani bu kütüphaneyi mevcut durumda kullanamıyoruz.







  • "https://github.com/tumugin/WiringOP" kütüphanesini kurmak istediğimizde ise yine aynı hata ile karşılaştık. Donanım bilgisi okunmuyor ve board bilgisi tanımlanmamış.



git clone https://github.com/FREEWING-JP/WiringOP.git -b h5

cd WiringOP

chmod +x ./build

sudo ./build


Dediğimizde kütüphane yükleniyor. Daha sonrası için gpio readall komutu ile pinleri kontrol ederek bir led yakıyoruz ve test ediyoruz.












Okuduğunuz için teşekkür ederim. Aklınıza takılan bir soru veya karşılaştığınız bir sorun olduğunda yorumlarda belirtebilirsiniz. Burada eksik olarak anlattığımı düşündüğünüz veya sizlerin gerekli olarak gördüğünüz bilgileri yine yorumlarda yazarsanız, bundan herkesin faydalanmasını sağlamış olursunuz. Herkese iyi çalışmalar.

Kaynakça:


Öne Çıkan Yayın

ORANGE PI PYTHON UART

ORANGE PI PYTHON UART Python kurulum  yazısında Orange pi'de Python konusuna giriş yapmıştık. Daha sonra  Python Gpio  yazısında gir...