26 Haziran 2019 Çarşamba

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 giriş çıkış pinlerini konuştuk. Bu yazımızda Python dilini kullanarak Orange pi ile bir cihaz arasında nasıl haberleşme kuracağımız konusuna giriş yapacağız.

Uart(Evrensel Asenkron Alıcı-Verici); verici tarafta paralelden seriye dönüştürme işlemi yapan, alıcı tarafta ise seriden paralele dönüştürme işlemi yapan bir IC(entegre devre) çipidir. Yani Uart, işlemci ve seri iletişim portu arasında köprü görevi gören bir donanımdır.

Eski bilgisayarlarda Uart kullanılarak fare, yazıcı ile iletişim kurulurdu. Günümüzde ise GPS alıcıları, Bluetooth modülleri, GSM ve GPRS modemlerinde UART kullanılmaktadır.

Uart bir asenkron seri iletişim şeklidir ve asenkron seri iletişim demek verilerin harici bir saat sinyalinden destek almadan aktarılması anlamına gelir. Bu yüzden Uart haberleşmede; "Baud hızı", "Veri bitleri yığını(asıl verinin taşındığı kısım)" ve "Senkronizasyon bitleri" önemlidir. 

Uart ve veri iletimi ile ilgili daha fazla bilgi için diğer blog sayfamızda bulunan aşağıdaki yazıları inceleyebilirsiniz.



Orange Pi ve Uart

Orange pi kartında da diğer bilgisayar ve elektronik kartlar gibi Uart entegre devresi bulunuyor. Orange pi modellerinin herbirinde aynı sayıda giriş/çıkış pini bulunmuyor. Zero modelinde 26 + 3 pin var. 3 pin diğer 26 pinden ayrı bir şekilde ve Uart haberleşme için kullanılır. Bunun dışında 26 pin içinde de 2 çift Uart pini bulunuyor. Bununla birlikte Zero'da toplam 3 çift Uart haberleşme pini mevcut.


Çoğu Orange pi modelinde ise 40 + 3 pin bulunur. 3 pin ayrı bir şekilde Uart için ayrılmıştır. 40 pini içinde de 3 çift Uart pini bulunuyor. Bununla birlikte toplam 4 çift Uart haberleşme pini bulunuyor.


Yüklemeler ve Ayarlamalar

Yükleme işlemleri için komut satırını kullanacağız.

İlk önce güncellemeleri yükleyelim.

sudo apt-get update && apt-get upgrade -y

Daha sonra Python ile seri haberleşme için gerekli olan "pyserial" kütüphanesini indirelim.

sudo python -m pip install pyserial


Daha sonra "armbianEnv.txt" dosyasını açarak Uart pinlerini aktif ediyoruz. Biz burada 38. ve 40. pin olan Uart1 pinlerini aktif etmek istiyoruz. Bunun için "overlays=uart1" satırını ekliyoruz ve daha sonra cihazı reboot ediyoruz.

Cihaz tekrar açıldıktan sonra Uart1 yani ttyS1'in aktif olup olmadığına bakıyoruz.

dmesg | grep tty



Komut satırına "python" yazarak serial kütüphanesini kullanıyoruz ve test ediyoruz.



Tüm bu işlemlerden sonra seri haberleşme için gerekli bağlantıyı yapıyoruz. Biz burada Orange pi ile bilgisayarı haberleştirmeye çalıştıracağız. Bu yüzden bilgisayara bağlanmak için bir "usb to ttl" modülü kullanıyoruz. "usb to ttl" modülün ttl kısmındaki pinleri Orange pi'ye aşağıdaki gibi bağlıyoruz.



Bilgisayar-aygıt yönetici-bağlantı noktasından bağlandığımız portu öğreniyoruz. Bu port Orange pi'den gönderdiğimiz verileri görmek için ihtiyaç duyduğumuz seri haberleşme arayüzünü kullanırken işimize yarayacak.


Python ve Uart

Python ile seri haberleşme uygulaması yapmak için pyserial kütüphanesini indirmiştik. Bu kütüphanenin bize sağladığı kod yapılarını görmek için pyserialdokümanını incelemek gerekiyor. Birkaç kod yapısını inceleyelim.

Gpio metotları

  • serial.Serial() : Seri haberleşme parametrelerini tanımlarız. Örneklerimizde sadece Uart portu ve Baud hızını tanımlayacağız fakat burada diğer haberleşme parametreleri de tanımlanabilir. Bunlar için yazının başında verdiğim linkleri veya pyserial dokümanını inceleyebilirsiniz. Ayrıca bu fonksiyonu genelde bir isme atayarak, daha sonra bu fonksiyonu kullanacağımız yerlerde kolaylık sağlıyoruz.

  • flushInput() : Her okuma ve yazma öncesi input tamponunu temizler.

  • write() : Seri bağlantı ile karşı tarafa veri göndermemizi sağlar. Buraya girilecek verinin byte olması gerekir. Bu yüzden veri yapıları arası dönüştürme fonksiyonları kullanırız.

  • read() : Seri bağlantı ile karşı taraftan veri okumamızı sağlar. Buradan okunacak veri byte formatındadır. Bu yüzden veri yapıları arası dönüştürme fonksiyonları kullanırız.


Uart Haberleşme Örnekler

İlk örneğimizde temel bir veri okuma ve yazma işlemi yapalım. Bilgisayardan aldığımız bir karakteri Orange pi tarafında bizim belirlediğimiz karakter ile karşılaştıralım ve bilgisayara durum mesajı yollayalım.



Yukarıdaki örnekte görebileceğiniz gibi bilgisayardan aldığımız karakterleri Orange pi tarafında "y" ve "n" karakteri ile karşılaştırarak bir sonuca vardık ve bunu bilgisayara bildirdik. Seri haberleşmede yazma ve okuma komutlarının byte veri döndürmesi dolayısıyla veri tipleri arasında dönüştürme işlemi yaptık.

Burada bir soruya daha cevap vermek istiyoruz. Biz bu programı Orange pi üzerinde çalıştırdığımızda, bilgisayar tarafında bu verileri nasıl göreceğiz ve nasıl veri girişi yapacağız? Bu durumlar için bilgisayarınıza indirebileceğiniz seri haberleşme arayüzü programları var. Putty programı da bu programlardan biri. Fakat biz genelde Hercules programını kullanıyoruz. Orange pi tarafında port kısmına nasıl "/dev/ttyS1" yazıyorsak, bilgisayarda Hercules port kısmına da aygıt yöneticisinde gördüğümüz portu yazıyoruz. Diğer seri haberleşme arayüz programları için aşağıdaki yazıya göz atabilirsiniz. Aşağıdaki yazıda buna daha geniş bir kapsamda değinmiştik.

Örnek kodlara dönecek olursak yukarıdaki örnegi, veri tipi dönüştürmelerini aşağıdaki şekilde ayarlayıp da yapabilirdik.


Bir diger örneğimizde ise hem seri haberleştirmeyi kullanalım hem de gpio pin işlemlerini kullanalım.



Yukarıdaki örnekte, bilgisayardan aldığımız veriye göre Orange pi üzerindeki pinlere bağlı ledi kontrol ediyoruz.



Bir diğer örneğimizde ise bir kontrol otomasyon örneği yapalım. Orange pi'ye bağlı olan bir lamba ve klimayı kontrol eden bir sistem kuralım.




Yukarıdaki örnekte "lambayak", "klimaac" ve "tumsondur" gibi komutları kullanarak, bilgisayardan girdiğimiz komuta göre Orange pi üzerindeki sistemi kontol ediyoruz.

Buradaki örnek kodlara github üzerinden erişebilirsiniz.

Python Uart haberleşme ile ilgili işlemleri sizlere sade ve anlaşılır bir biçimde anlatmaya çalıştık. Gerek gördükçe görsellerle bunu destekledik. Yazıda anlaşılmayan veya yanlış olduğunu düşündüğünüz kısımları iletişim adreslerinden bizlere bildirebilir ve öğretici yazıların daha kaliteli olması için destek verebilirsiniz. Python ile alakalı sonraki yazılarda Python ile i2c-spi portlarından ve sensörlerin kullanımından bahsedeceğiz. Herkese iyi çalışmalar.

20 Haziran 2019 Perşembe

ORANGE PI PYTHON GPIO

ORANGE PI PYTHON GPIO


Python kurulum yazısında Orange pi'de Python konusuna giriş yapmıştık. Bu yazımızda Python dili ile Orange pi'deki giriş çıkış pinlerini(gpio) nasıl programlayacağımızı inceleyeceğiz.


Yüklemeler

Yükleme işlemleri için komut satırını kullanacağız.

İlk önce güncellemeleri yükleyelim.

sudo apt-get update && apt-get upgrade -y

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

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

Elimizdeki modele göre Python gpio kütüphanesi yükledikten sonra kurulum işlemine yapıyoruz.

cd orangepi_PC_gpio_pyH3

sudo python setup.py install



Yükleme işlemi bitti fakat Python gpio kodlarını, yapılarını anlamak için indirdiğimiz dizine giderek örnekleri inceleyelim.


Python Kütüphanesi İnceleme


"orangepi_PC_gpio_pyH3/examples" dizinine giderek, "blink_led.py" kodunu açıp çalıştıralım. Başlangıçta elinizde elektronik malzemeler olmasa bile, bizim gibi koda birkaç satır ekleyerek durumu terminal üzerinden görebilirsiniz. Buradaki asıl amaç yüklemelerin tam olduğunu ve kodun hata vermediğini test etmek.




Eğer program yukarıdaki gibi çalışıyorsa, artık kendi programımızı yazmak için gerekli kodları, pin diyagramını vs. öğrenebiliriz.

İlk çalıştırdığımız koda bir göz attığımızda init(), setcfg() gibi kodlar olduğunu görüyoruz. Lede bir değer atmak için gpio.output() kodunu görüyoruz. Şimdi indirdiğimiz kütüphane ile hangi yapıları ve kodları kullanabildiğimize bakalım.

Gpio metotları

  • init() : Modülün başlatılmasını sağlar. Program dosyasında her zaman ilk çağrılır.

  • getcfg() : Gpio'nun mevcut konfigürasyonunu okur.

  • setcfg() : Gpio durumunu(giriş/çıkış) ayarlar.

  • input() : Gpio'nun mevcut konumunu(0/1) okur.

  • output() : Gpio'nun konumunu ayarlar.

  • pullup() : Pull-up/pull-down durumunu ayarlar.

Yukarıdaki metotların kullanabileceği değerler :

  • LOW / HIGH : 0 /1

  • INPUT / OUTPUT : 0 / 1

  • PULLUP / PULLDOWN : 1 / 2

Python gpio kütüphanesi kullanırken gpio pinlerini tanımlarken iki farklı isimlendirme kullanabiliyoruz. Bu isimlendirmeleri "port" ve "connector" modülleri ile birlikte kullanabiliyoruz.

Port isimlendirmesi bizim daha aşina olduğumuz isimlendirme biçimi. Terminalden Python Shell'e girerek bu adlandırmanın nasıl olduğunu görebiliriz.

python

>>>from pyA20.gpio import port

>>>dir(port)


Port adı ile adlandırmada aşağıdaki pin diyagramını kullanabiliriz.


Yukarıdaki pin diyagramına bakarak istediğimiz pini programlayabiliriz. Örneğin;

from pyA20.gpio import port

gpio.setcfg(port.PA6, OUTPUT)

Yukarıdaki kod "PA6" pinini, yani 7.pini çıkış olarak ayarlar.

Connector isimlendirmesi için de Python Shell'e girerek bu adlandırmanın nasıl olduğunu görebiliriz.

>>>from pyA20.gpio import connector

>>>dir(connector)


Kullandığımız Python gpio kütüphanesi ilk olarak A-20 OlinuXino-Mino kartının yapısı düşünülerek yazılmıştır. Aşağıdaki resme bakabilirsiniz. Bu yüzden bağlayıcı(connector)(Pin grubu) adı ile adlandırma, o kartın yapısı düşünüldüğünde kolaylık sağlayabilir. Fakat Orange pi'de pinler tek grupta olduğu için bu adlandırmanın bizim açımızdan bir avantajı yok.



Port adı ile adlandırmada aşağıdaki pin diyagramını kullanabiliriz.



Orange pi'de tek grup gpio grubu olduğu için, eğer bu isimledirmeyi kullanmak istiyorsan bağlayıcı grup ismini sürekli "gpio1" olarak kullanmak gerekecek. Örneğin;

from pyA20.gpio import connector

gpio.setcfg(connector.gpio1p7, OUTPUT)
Yukarıda "gpio1" pin grubunu, "p7" ise 7.pin olduğunu ifade eder. Yukarıdaki kod 7. pini çıkış olarak ayarlar.


Python Gpio Programlama

Python'da gpio pinlerin kontrol etmemize olanak sağlayan metotları yukarıda açıkladık. Şimdi bunları örnek programlarla açıklayalım.

from time import sleep
from pyA20.gpio import gpio
from pyA20.gpio import port

#gpio islevlerini baslat.
gpio.init()

#gpio atamasi yap.
led = port.PA6
gpio.setcfg(led, gpio.OUTPUT)

#ledlerin durumunu ayarla(high/low)
while True:
        gpio.output(led, gpio.HIGH)
        sleep(1)
        gpio.output(led,gpio.LOW)
        sleep(1)

Yukarıda temel bir led programı var. Port numarası ile isimlendirme kullanılmış. Yukarıdaki programda, PA6 portuna bağlı led 1'er saniye aralıkla açık ve kapalı konumda oluyor.

Bağlantı şekli ise aşağıdaki gibidir.


from pyA20.gpio import gpio
from pyA20.gpio import port

gpio.init()


gpio.setcfg(port.PC4, gpio.OUTPUT)
gpio.setcfg(port.PC7, gpio.INPUT)

gpio.pullup(port.PC7, 0) #Pullup'ları temizler.
gpio.pullup(port.PC7, gpio.PULLDOWN) #PC7 pini için Pulldown'u aktif eder.

while True:
        if gpio.input(port.PC7) == 1:
         gpio.output(port.PC4, gpio.HIGH)
        else:
         gpio.output(port.PC4,gpio.LOW)

Yukarıda program ise buton kontrollü bir led programı. Butona bastığımızda led yanıyor. Burada "Pulldown" ve "input" metotlarını kullandık. Pin adlandırılmasında da yine port kütüphanesini kullandık.

Bağlantı şekli ise aşağıdaki gibidir. Neden pull-down drenci kullandığımızı burada açıklamıştık.



Python gpio ile ilgili işlemleri sizlere sade ve anlaşılır bir biçimde anlatmaya çalıştık. Gerek gördükçe görsellerle bunu destekledik. Yazıda anlaşılmayan veya yanlış olduğunu düşündüğünüz kısımları iletişim adreslerinden bizlere bildirebilir ve öğretici yazıların daha kaliteli olması için destek verebilirsiniz. Python ile alakalı sonraki yazılarda Python ile haberleşme portlarının ve sensörlerin kullanımından bahsedeceğiz. Herkese iyi çalışmalar.

19 Haziran 2019 Çarşamba

ORANGE PI PYTHON KURULUM

Orange Pi Python Kurulum


Python; genel amaçlı, nesneye yönelik, kolay okunabilir ve anlaşılabilen bir programlama dilidir. Orange pi 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. Orange pi ile bir sensör kullanırken Python ve C'ye sık sık başvuracağız. Bu yazımızda "Python nasıl yüklenir?"e bakacağız.


Yüklemeler 



Yükleme işlemleri için komut satırını kullanacağız.

İlk önce güncellemeleri yükleyelim.

sudo apt-get update && apt-get upgrade -y

Şu an Python'ın iki versiyonu mevcut; Python2 ve Python3. Python2 desteği, 01.01.2020 tarihinde sona ereceği için biz adımlarımızı Python3'e göre yapacağız ve sizlere de Python3 kullanmayı tavsiye ederiz.

Biz bu yazıyı yazarken Armbian Bionic son sürümü kullanıyoruz ve bu işletim sistemi Python3 yüklü bir şekilde geliyor. Python3 yüklü olanlar için de bu yazıda yararlı birkaç bilgi vereceğiz.

Orange pi'de normalde Python2'yi çağırmak istediğimizde "Python" komutunu, Python3'ü çağırmak istediğimizde ise "Python3" komutunu kullanırız. Genelde diğer platformlarda da bu şekilde adlandırılır. İndirilen son sürüm işletim sistemlerinde Python2 yüklü olmadığı için komut satırına "Python" yazdığımızda hata verir. Bu yüzden biz genel olarak Python3 ile çalışacağımızdan Python3'ü çağırmak için "Python" komutunu kullanabiliriz.



Yüklemelere başlayalım. Python3, Python3-pip ve Git yüklüyoruz.

sudo apt-get install -y python3 git python3-pip





Yukarıda gördüğünüz gibi Python3'ün yanında Pip ve Git yükledik. Bunların ne anlama geldiğine bakalım.

PyPI Nedir?

PyPI, Python topluluğu tarafından geliştirilen ve paylaşılan bir yazılım deposudur.

Pip Nedir?

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

Git Nedir?

Git bir versiyon kontrol sistemidir. Git; yazdığınız kodları, projeleri internet üzerinde tutmanızı ve yönetmenizi sağlayan bir kontrol sistemidir. Bu sayede başka biri tarafından Git üzerinde tutulan bir kütüphaneye, projeye ulaşabiliyoruz.


Kurulum tamamlandıktan sonra Python3 çalıştırmak için "Python" komutunu kullanmak için gerekli komutu girelim. Siz burada "3.6.8" yerine sizde bulunan Python sürümünü girin.

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6.8





Son olarak Pip gibi bir paket ve kütüphane yüklemek için bize lazım olabilecek Setuptools güncellemesini yapıyoruz.

sudo pip3 install --upgrade setuptools



Python'ı kurduktan sonra bir kaç temel program yazalım. Girilen sayının asal olup olmadığını söyleyen bir program yazalım.



Python kurulumu ile ilgili işlemleri sizlere sade ve anlaşılır bir biçimde anlatmaya çalıştık. Gerek gördükçe görsellerle bunu destekledik. Yazıda anlaşılmayan veya yanlış olduğunu düşündüğünüz kısımları iletişim adreslerinden bizlere bildirebilir ve öğretici yazıların daha kaliteli olması için destek verebilirsiniz. Python ile alakalı sonraki yazılarda Python ile haberleşme ve gpio portlarını kullanımından bahsedeceğiz. Herkese iyi çalışmalar.

17 Haziran 2019 Pazartesi

ORANGE PI CODE::BLOCKS

Orange Pi Code::Blocks

Bildiğiniz gibi Orange pi'nin temel tanımı tek kart bilgisayardır. Kullanıcılar Orange pi üzerinden hem yazılım hem de donanım işlerini halledebilirler. Bugün Orange pi kullanıcıları tarafından talep edilen bir konuyu inceleyeceğiz. Orange pi kullanıcıları C/C++ kodu geliştirirken bir ide ortamına ihtiyaç duyabiliyor. Bu konuya çözüm olarak bugün Orange pi'ye Code::Blocks kurulumundan ve kod yazarken veya çalıştırırken hata verebilecek birkaç durumdan bahsedeceğiz. Bu işlemler için Orange pi'de işletim sistemi olarak Armbian Bionic son sürümü kullandım. Bu sürüm şu an için masaüstü ortamı kurulu bir şekilde indirilmiyor fakat sizler isterseniz masaüstü kurulumunu yapabiyorsunuz. Bu konu ile ilgili yazımıza buradan bakabilirsiniz.


Yüklemeler 


Yükleme işlemleri için komut satırını kullanacağız.

İlk önce güncellemeleri yükleyelim.

sudo apt-get update && apt-get upgrade -y

Daha sonra Code::Blocks için gerekli yüklemeyi yapalım.


sudo apt-get install codeblocks

Kurulum tamamlandıktan sonra eğer masaüstü ortamı kullanıyorsanız Code::Blocks simgesi "Aplication -> Devolopment" altına gelmiş olacaktır. Buradan Code::Blocks'u çalıştırabilirsiniz.


Code::Blocks'u açtığımızda karşımıza aşağıda gördüğünüz gibi bir ekran çıkacaktır.


Bu ekrandan yeni bir C dosyası oluşturmak için, "new project -> files -> C++(Empty File)" adımlarını izleyebiliriz.


C++(Empty File)'a tıkladıktan sonra karşımıza çıkan ekrandan dosyamızın olmasını istediğimiz dizini seçiyoruz ve dosyaya bir isim vererek işlemi bitiriyoruz. Burada isim verirken dosya tipini belirtmeye özen gösterin.(örnek: deneme.c)


Bu işlemlerden sonra artık kod yazmaya başlayabiliriz.


Code::Blocks üzerinden başka bir örnek kodun çalıştırılmasını da aşağıdaki resimde görebilirsiniz.


Dikkat Edilmesi Gereken Yerler 



Yukarıdaki gibi tüm işlemleri doğru yaptıktan sonra eğer kodu çalıştırırken, Code::Blocks kaynaklı bir hata alıyorsanız aşağıdaki komutla "xterm"i yüklemeyi deneyebilirsiniz.

sudo aptitude install xterm

Yukarıda bahsettiğim gibi oluşturacağımız dosyaya isim verirken dosya tipini de(.c = C dosyası) belirtmemiz lazım. Eğer dosyayı oluştururken "ornek2" diye dosya tipi belirtmeden oluşturursak, kodu çalıştırmaya kalktığımızda hata verir. Daha sonrasında Code::Blocks'u kapatıp "ornek2" dosyasını açmaya çalıştığımızda ise dosyayı açmaz.



Code:Blocks kurulumu ile ilgili işlemleri sizlere sade ve anlaşılır bir biçimde anlatmaya çalıştık. Gerek gördükçe görsellerle bunu destekledik. Yazıda anlaşılmayan veya yanlış olduğunu düşündüğünüz kısımları iletişim adreslerinden bizlere bildirebilir ve öğretici yazıların daha kaliteli olması için destek verebilirsiniz. Herkese iyi çalışmalar.

12 Haziran 2019 Çarşamba

ORANGE PI 2x16 LCD

ORANGE PI ile 2x16 LCD KULLANMA

Bu yazımızda Orange pi ile 2x16 Lcd'yi çalıştıracağız. Pin Bağlantılarını ve kullanabileceğimiz kütüphaneleri inceleyeceğiz.


2x16 Lcd(Liquid Crystal Display)


Bugün çalıştıracağımız Lcd ekran 2 satır ve bu satırların her biri en fazla 16 karakter gösterebilir. Normalde 2x16 Lcd ekranın 16 pini vardır fakat "lcm1602" modülü ile kullandığınızda 16 pin yerine 4 pin kullanarak Lcd ekranı kullanabiliyorsunuz. Biz bugün "lcm1602" modülü olan bir Lcd ekranı kullanacağız.



Bu 2x16 Lcd ekran üzerinde 4 adet çıkış pini vardır:Vcc-Gnd-Sda-Scl pinleri. Pin bağlantıları aşağıdaki gibidir.

VCC ▬  Pin 1
GND 
▬ Pin 6
SDA 
▬ Pin 3
SCL 
▬ Pin 5

Yüklemeler 



Şu an son sürüm olan Ubuntu Bionic(18.04) kullanıyoruz. Yeni sürümle birlikte I2C ile yeni bir modülü kullanırken yapmamız gerekenler değişti. Modern sürümlerle birlikte bu tarz bir modül kullanırken yapalandırma için "Device Tree Overlay"e göz atmak gerekiyor. Burada sırasıyla hem I2C portlarını etkinleştirmeliyiz hem de bu porttan iletişim kuran cihazı tanıtmalıyız. Bütün bu işlemleri "root" kullanıcısında yapmanız gerekiyor.


İlk önce güncellemeleri yükleyelim.

apt-get update && apt-get upgrade -y


Daha sonra I2C portlarını görmek için gerekli olan yüklemeyi yapalım.

apt-get install i2c-tools


Bizim kullanacağımız I2C pinleri etkinleştirilmediği için "
armbianEnv.text" dosyasına gerekli "overlays=i2c0" satırını ekleyelim. Burada biz SDA,SCL pinleri olarak 3. ve 5. pinleri kullandığımız ve bu pinler "i2c0" diye geçtiği için "i2c0"ı etkinleştiriyoruz.




Cihazı tekrar başlatıyoruz.

reboot

"i2cdetect" komutu ile bağladığımız Lcd modülünün '27' numaralı hattına bağlı olup olmadığını görüyoruz.

i2cdetect -y 0





Daha sonra kullanacağımız Lcd ekran için kullanacağımız kütüphaneyi "git" ile indiriyoruz.

sudo git clone https://github.com/wargio/liblcm1602.git


Sonrasında indirdiğimiz dosya içine girip "make" komutu ile dosyayı derliyoruz.

cd liblcm1602

sudo make

ls




Burada 4 tane örnek var. Bunları inceleyip, isteğiniz doğrultusunda düzetmeler yapabilirsiniz. Örneğin "example" adlı dosyayı çalıştıralım. Ayrıca kodda bir değişiklik yaptığınızda "make" komutu ile derleyip daha sonra kodu çalıştırmanız gerekiyor.

./example




2x16 Lcd ile Tarihi-Saati ve Yerel IP'yi Gösterme 

"liblcm1602" kütaphanesini indirdiğimizde, "example2" örneğini çalıştıracak olursak, kullanımının aşağıdaki gibi olduğu görülür.

./example2 ilksatir ikincisatir





Bu örneği kullanarak birinci satıra tarih ve saati, ikinci satıra da yerel IP adresini yazdırabiliriz.

nano lcdtime.sh ile "lcdtime" adlı bir script dosyası açıyoruz.

Daha sonra içine aşağıdaki kodları atıyoruz.


#!/usr/local/bin/bash

t='/bin/date +%Y"."%m"."%d"-"%H":"%M'

ip='/sbin/ifconfig|/bin/grep inet|/usr/bin/head -1|/bin/sed 's/\:/ /'|/usr/bin/awk '{print $2}''

/root/liblcm1602/example2 ${t} ${ip}

chmod +x lcdtime.sh komutu ile gerekli izni veriyoruz.

crontab -e komutunu yazdığımızda karşımıza bir dosya çıkar. Bu dosya belli bir kurala göre yazdığımız betikleri, belirttiğimiz zamanlarda çalıştırır.




*/1 * * * * /bin/sh /root/lcdtime.sh script dosyamızın dakikada bir çalışması için bu komutu "crontab" klasörüne yazıyoruz.

Son olarak Lcd ekranındaki görüntü aşağıdaki gibi oluyor.



Lcd kullanımı ile ilgili işlemleri sizlere sade ve anlaşılır bir biçimde anlatmaya çalışıyoruz. Gerek gördükçe görsellerle bunu destekledik. Yazıda anlaşılmayan veya yanlış olduğunu düşündüğünüz kısımları iletişim adreslerinden bizlere bildirebilir ve öğretici yazıların daha kaliteli olması için destek verebilirsiniz. Herkese iyi çalışmalar.

Ö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...