EASYLCD-MOBiLE programıyla eski android telefonları hayata döndürmek

Bu yazımda eski ANDROID telefonlarımızı nasıl faydalı hale getirip projelerimizde kullanabileceğimizi anlatmaya çalışacağım.
Başlangıçta düşünce, sadece karakter LCD olarak çalıştırmaktı. Proje devam ederken neden sadece LCD olsun dedim. Yapabileceklerimin, Android telefonunumun kapasitesi ve APP INVENTORUN yeteneklerine bağlı olarak HAYAL GÜCÜMLE sınırlı olduğunu fark ettim. Birçok modülün yerini alabiliyor.

Program deneme aşamasındadır. Kullanılabilir durumda fakat programlama hataları çıkabilir. Bu hataları sitedeki yorum kısmına yazarsanız düzeltilebilecektir. Her telefon farklı bir tepki verebilir. Galaxy Y Android 2.4 , Samsung galaxy tab Android 4.4, Asus Android 6.0.1 ve Samsung J6+ Android 10 versiyonlarında denendi. Kendi telefon ve versiyonunuzu yazarak problemli yerleri yazarsanız memnun olurum.

Aşağıdaki fikirler eklenebilecek düşüncelerdir.  

-) 4×20 karakter LCD modül. ( yeni karakter sorunu yok, unicode karakterlerini bile gösterebiliyoruz.

Örnek ünicode karakterler bu siteden alınmıştır.

Bu ve benzeri karakterleri yazabiliyoruz. Gerçek EASYLCD de bu ancak yeni karakter olarak hazırlarsanız olabilir. Yine de karakter tabanlı olduğu için biraz kötü görünebilir.
Normal EASYLCD den bir fark var. Normal LCD lerdeki gibi 8 adet yeni karakterle kısıtladım ama istenirse çok daha fazla yeni karakter kullanılabilir.)
Eprom sorunu yok. İstendiği kadar yeni karakter, hafızaya kayıt edilip çağırılabilir. Bunun için mikrokontrolcünüzün hafızasını kullanmaz.

-) RTC modülüne ihtiyaç yok Çünkü mikrokontrolcü istediği zaman mobil cihazın saatini kullanır. İstenirse saat alarmı oraya gönderilir alarm olduğunda mikrokontrolcü ikaz edilebilir.

-) Bluetooth cihazlarınıza mikrokontrolcünüzden (ARDUINO, PIC,STM,Raspberry pi vs gibi) kontrol imkanı sağlar. Bluetooth modülü almanıza gerek kalmaz. Bu durumda USB OTG programını kullanmanız gerekir.

-) ESP modülüne gerek kalmaz WİFİ özelliğini kullanıp internette thingspeak firebase gibi yerlere bilgi göndermenizi sağlar. İnternetten bilgi çekmenizi sağlar. (BUNUN İÇİN DEVAMLI WİFİ AÇIK KALMAK ZORUNDA DEĞİL. Programınız istediğinde açar istediğinde kapatır. ) Wifi ile çalışan ev otomasyonu devrelerinizi kontrol edebilirsiniz. ( Diyeceksiniz bunu telefonda yapıyor. Doğrudur tüm sistem arduino gibi bir yere bağladığınızda wifi olmayan sistemlerle birlikte ortak çalışmasını sağlarsınız.)

-) SDCARD tan bilgi okuyup yazabilirsiniz. LOG dosyalarınızı mobil cihazınızın dosyaları arasına yerleştirip sonrasında bilgisayara atabilirsiniz. Ya da SDCARD içindeki müzikleri çalabilirsiniz. Arduino ile bunları kontrol edebilirsiniz. Farklı düşünceler oluşturabilirsiniz.

-) Mobil cihazın sensörlerini kullanarak hareket algılama, ışık sensörü, pusula ve gps gibi çevre koşullarını öğrenebiliriz. Mikrokontrolcü bunun için modül kullanmaya gerek duymaz.

-) Alarm devrelerinizde aktif olduğunda e-mail sms gibi uyarılar gönderebiliriz.

-) Arduino ile sesli konuşma programları oluşturabiliriz.

-) Barcode okuyucu olarak kullanıp arduino ile değerlendirebiliriz.

-) EEPROM olarak da kullanabilirsiniz. Bu kapasite ise mobil cihazınızda app inventorun tinydb denilen database kayıt miktarıyla ve mobil cihazın ayırabildiği hafıza ile belli olur. Arduinonunkinin çok üstünde bir eeprom hayal edin.

HATTA DİĞER BİR PROJEDE, OLED YA DA TFT GİBİ GRAFİK EKRAN OLARAK HAZIRLANABİLİR. ( HMI ekranlardan daha kullanışlı olabilir )

Yukarıdakiler ilk akla gelenler. Bütün bunlar nasıl olacak dediğinizi duyar gibiyim.

EASYLCD modülümü açık kaynak olarak paylaşmıştım. (easylcd modül yazısı)

EASYLCD,  KÜTÜPHANE kullanmaz. Kolay hafızada kalan komut sistemini kullanır. Bu komut sistemi daha da geliştirilebilir bir sistemdir.
LCDWR 1,1-deneme Şeklindeki komutun LCD kısmı LCD ye yazma işlemi geldiğini gösterir. WR ise İngilizce WRITE komutunun harfleridir. Diğer komutlarda uygun yerleştirilmiş İngilizce kelimelerin kısaltmasıdır. Mesela cursor sağa kaydırılacaksa CR ( cursor right) komutu konulur.
Bu komut sistemine EASYLCD yazımdan ulaşabilirsiniz.
Bu komut sisteminin Belirteç kısmına ESP derseniz ESP yani wifi ile ilgili komutlar olarak düşünebilirsiniz. Bu belirteç ihtiyacımıza uygun değişebilir.

Programın Açıklaması: Program şu an 1. Versiyonda LCD ekran olarak ve saat bilgisini alma olarak yapıldı. V2 de yukarıdaki örneklere de yer verilecek. Hatta sizlerden gelen geri bildirimlerde dikkate alınabilecektir.  Bunun yanı sıra açık kaynak kodlu olduğundan ortaklaşa geliştirebileceğimiz bir platform oluşturulabilir.

BLUETOOTH PROGRAM
USB OTG PROGRAM içerisinde clear butonu yanında bulunan label alınan karakterleri gösterecekti. Fakat clock1 durmaksızın buraya uğradığından onu durdurmam gerekiyordu. Alınan bilgiler bitince bu label temizlenir. Hızlı olduğundan boş olarak görünür. Çünkü alınan karakterler GELEN textbox içinde zaten görünür. 

 

 

 

 

 

 

 

 

 

App inventor2 ile yapıldı. 1. Versiyon kısıtlı bir durumda. Yukarıdakilerin düşüncelerin çoğu 1. Versiyonda yer almıyor. İlk deneme olduğundan LCD kısmı çalıştırıldı. Bluetooth ve USB OTG üzerinden çalışmasına göre 2 ayrı program olsa da çalışma mantığı birbiriyle aynıdır. Sadece haberleşme bölümü farklıdır.
Piyasadaki HD44780 LCD leri incelediğimizde içlerinde bir karakter seti var. Bizler Latin harflerinin bulunduğu 255 karakterlik ASCII setini kullanıyoruz. Fakat yazabileceğimiz karakterler sınırlı. Klavyeden yazılabilen karakterler 0-127 arasındadır. 128-255 arası ise genişletilmiş karakter setidir. Bilgisayarlarda Ş harfi bu genişletilmiş kısımda yer alır. Bundan dolayı yazamadığımız karakterleri, bize ayrılan 8 karakterlik yere yeni karakter olarak kodlarız. Ayrıca bunlar 0-7 sayılarına sahiptir. Bu klavyeden bastığımız karakter dediğimiz 0-127 arasındaki ascii karakterlerin 0-31 arasındakiler özel işlevler için ayrılmıştır. Gerçek LCD lerde bundan dolayı 0-7 arası karakterler için bize yeni karakter yeri ayrılmış durumdaydı.

Bu programda 0-7 arası da kullanılabilir, fakat app inventor kendi başına bir ascii karakter setine sahip olmadığından program içerisine ascii karakter setini yerleştirmemiz gerekiyordu. Bu şekilde programda kullanılabilecekti. PC lerde Ş karakteri 128-255 arasında bulunuyor dedik. Ben de sıfır karakterinin başka sorunlara yol açmaması için( kontrol karakteri gibi) Bu ascii bloğu içinde 180-187 arasındaki karakterlerinin fazla kullanılmamasından dolayı yeni karakter alanı olarak kullandım. İstersem bu sayıyı 180-200 olarak yapıp 20 yeni karakter yeri ayırabilirdim. Fakat buna gerek kalmıyor. Çünkü istediğim kadar yeni karakteri mobil cihazda saklıyorum. Kısıtlama yok.(Kısıt sadece mobil cihazın hafıza kapasitesi ve App inventor tinydb veritabanının izin verdiği büyüklükle sınırlı.)
Bu şekilde LCD ekrana gönderirken 180 karakter kodunu gönderdiğimde karakter farklı bir karakter olsa da benim ascii bloğumdaki yeni karakterle yer değiştiriyor.

STRING olarak bizim yazdığımız.
DEC byte olarak programın aldığı karakter kodları. alt satırda 180 karakter kodu programın ASCİİ kodlarından bizim istediğimiz yeni karaktere çevrilecektir.

 

 

 

 

Bunu sağlamak için  Seri port üzerinden gelen karakterlerin byte olarak alınması gerekliliği doğdu. Çünkü 180 kodlu karakter string olarak yazıldığında her kullanılan font’a göre farklı karakter olarak yazılır. Bunu Windows karakter eşlem programında görebilirsiniz. Her telefon ya da Her pc farklı true type font kullanacağından 180 dediğimiz kod string olarak ( ´³┤À򶒦) gibi karakterler gösterebiliyor. Aynı kod olmasına rağmen farklı karakter geldiğinden string olarak karşılaştırma yapılamıyor. Sizler STRING olarak yazsanız da program alırken BYTE olarak alıp 180-187 gibi bir karakter var mı diye bakar. Bu kısım, converthextoasc prosedüründe kontrol edilir. Varsa bu karakteri, program içerisinde bulunan ASCII bloğundaki karakterlerden aynı kodlu olana göre değiştirir. Sonrasında ise bu gelen karakterleri STRING biçimine çevirerek ekrana yazılması sağlanıyor.

ASCII karakterlerinin bloklarıdır.

 

 

 

Bluetooth programının bloklarıdır.

 

 

 

 

 

 

 

 

 

 

 

 

Bu işlem ise 3 bölümde yapılıyor. String haline çevrilen kod önce parçalarına ayrılıyor.
LCDWR 1,1-deneme satırında LCD kısmı kontrol edilir. LCD gelmediyse Geriye yanlış bilgi diye LCD P kodunu gönderir. Bu şekilde geri bildirim EASYLCD komut sistemi gereğidir. Yanlışsa bir daha gönder anlamındadır.
Şayet LCD doğru geldiyse ORTAK prosedürü bu satırı parçalara ayırır. LCD WR 1 1 deneme şeklinde. Bunları ekranda görünmeyen TEXTBOX içine koyar ve CONTROL prosedürü bu bilgileri kullanarak LCDWR olarak komut geldi mi bakar. Ekrana yazacak ise hangi satırda yazılacaksa SAT1-4 arası değişkeni ayarlar. Daha sonra AKTAR prosedürü ile ekrana yazılabilecek hale gelir burada fazla boşluklar atılarak gelen mesajın uzunluğu belirlenir ve cursor konumu hesaplanır.
Daha sonra ise CURSOR TIME bloğuyla her 500ms de bir cursor yanıp sönecek şekilde ayarlanır.
Not: Sat1-4 değişkenleri 20 karakter boşluk olarak programa başlar. Her yazılması gereken karakter geldiğinde satırın hangi karakterine geliyorsa o karakter SAT1-4 değişkenlerinin o sütununa yerleştirilir. Şayet LCDWR 1,3- yazılmışsa yazılacak karakter 3. sütundan itibaren yazılmaya başlar. Yazmak için SAT1-4 değişkeni yenilenmez. O karakterin yazılacağı yerdeki boşluk ile karakter yer değiştirilir. Bu şekilde yazılacak karakter 20 karakteri geçemez. Program her satıra 20 karakterden fazla yazıldıysa sizi uyarır işlem yapmaz. ( LCDER 1,15-123456 21 karakter demektir. 15. karakterden başlayıp 6 karakter yaz dersek 21 karakter olur ve hata yapar. Program hata verir.)
Bu işlemler bu şekilde yapılırken diğer bloklarla da yeni karakter kayıt yapılır, kayıtlı ascii karakterler görülür, backlight dediğimiz aydınlatma ayarı yapılır. Bunun yanı sıra kayıt edilen yeni karakterleri görebilmeniz için buton kullanılmıştır.
Ekranda 2 adet slider vardır. Bunlardan biri font ayarıdır. Bir çok telefon farklı piksellerde ve farklı boyutlarda ekranlara sahip olduğundan sabit font konulduğunda ekrana 20 karakter sığmayabiliyor. Bundan dolayı mobil ekrana sığmadığında ya da küçük kaldığında slider kaydırılarak bu font ayarlanır ve en iyi görüş imkanı sağlanır. Bu ayarı yapabilmek için TEST/START butonuna kısa bastığınızda ekrana 4×20 karakter yazılır. En uygun şekilde slider ile ayarlarsınız. Bu ayarı yaptığınızda ise TEST/START butonuna uzun basarak ekranı temizleyip hazır duruma getirebilirsiniz. Ekranı 90 derece döndürdüğünüzde yatay olarak font ayarı yapabilirsiniz. 

Diğer slider ise backlight dediğimiz ekran karartmadır. Bunu zaten mobil cihaz kendisi yapsa da uğraşılmasın, ekrandan hemen ayarlansın diye ekledim. Eklememin sebebi ise bazen güneş ışığından dolayı parlaklık gerekir. Bazen de düşük ışık gerekir ya da batarya tasarrufu yapılır diye düşündüm. Bu bir uyku durumu değildir bundan dolayı ışık sıfır olmaz.

Tüm bu anlattıklarım yeni karakter kodunun 0 yada 180 olması hariç, gerçek EASYLCD modülünde kullandığım metottur. Yani mikrokontrol programınızı, mobil cihazdan çıkarıp gerçek EASYLCD bağlasanız çalışır.
Burada bazı özellikleri de gerekmediği için iptal ettiğimi söylemeliyim. Mesela Gerçek EASYLCD modülde bulunan ekran kaydırma burada yok. HD44780 LCD ler 80 karakter tanımlıdır. 2×16 olan LCD lerde 1 satır 40 karakter alır ve 16 karakteri gösterir. Bundan dolayı sağa sola kaydırarak diğer karakterlerin görünmesi sağlanır. Mobil de ise 4×20=80 karakter görünür alandadır. Bundan dolayı ekran kaydırmaya gerek yoktur. Ayrıca Backlight open close yoktur. Bu da tablet ekranını kapatmamamız içindir. Bunun yerine sadece ekran aydınlığı ayarlanabiliyor. LCDBL komutu kullanılıyor. Bir de LCDCB cursor box kullanılmıyor. İstenirse kullanılabilir fakat alt çizgi gayet şık duruyor. LCDER LCDEW çalışmıyor çünkü zaten ekranda yeni karakter kayıtları buton ile okunuyor ve kayıt yapılıyor. LCDDC LCDDO display kapat ve aç kullanılmıyor. Bunun yerine belki uyku moduna geç denilebilir. Tabii ki Diğer versiyonlarda.
LCDLS kullanılmıyor. Çünkü bu komut 4×16 ve 4×20 LCD ler arasındaki farktan dolayı kondu. Burada 4×20 ekran var.  Bu kullanılmayanlar GERÇEK EASYLCD modülde kullanılabilir durumdadır. Zaten kullandığınız LCD modülüne göre karar vermeniz gereken komutlardır.

Bunun yanı sıra UNICODE değerler de Mobil cihazın versiyonuna bağlı olarak ekranda görünür. Eski cihazlar, 4.4 ten önceki cihazlar, Unicode karakterleri algılamadı. 4.4 versiyonlu tablet, bazı Unicode karakterlerde sorun çıkarmazken bazılarında sorun yarattı. 6.0 ve yukarısında hiç sorun çıkmadı.

NOT: Vereceğim program dosyalarının yanında Unicode çevirici web sitesi veriyorum. İstediğiniz karakteri oradan bulup kopyalayarak yeni karakter kutusuna yapıştırarak yeni karakteri kayıt edebilirsiniz.
Yeni karakter kayıt edilirken şuna dikkat etmeniz gerekir. İlk açılışta kayıt kutusundaki rakam son kaydedileni gösterir. Buradan son kaydedilen rakamı 1 arttırarak kayıt edebilirsiniz. Ya da kutuya sıfır numarasını girip LCD EPR READ butonuna 1 kez basarak istediğiniz karakteri görürsünüz bundan sonra ise UP COUNTER kısmını kullanarak diğer karakterleri görebilirsiniz. Karakter yoksa “missing” ifadesini görürsünüz o numarada yeni karakter girebilirsiniz.

Not: Bluetooth programında bluetooth üzerinden SEND CHAR butonuyla bilgi göndermek isterseniz, bilgiyi GELEN kutusuna yazmanız ve butona basmanız yeterli.

Denemeler yapılsın diye ekranda fazla buton ve kutular bulunmaktadır.
2. Versiyonda bunlar temizlenecektir. Çünkü şu an için hatalar ya da denemeler olabilir.

Not: Mikrokontrolcü programınızı yazarken, isterseniz komutları GELEN kutusuna yazarak DENEME butonuna basarak deneyebilirsiniz. Bazen doğru komut aklınıza gelmezse burada deneyerek bulabilirsiniz.

Yardım ekranı şimdilik konuldu. Belki ilk yardımı gösterebilir, belki de kaldırılabilir. Ekran dizaynı belli olsun diye konuldu. Belki de Tüm komutlar burada yer alır program yapması kolay olsun diye. SİZ NE DERSİNİZ. 

Bütün bunların ötesinde, ekran tasarımı ve geliştirme için şurası da şöyle olsun dediğiniz her ne varsa, duymak isterim. Çünkü, şu anda sadece çalışsın diye yapıldı. 2. Versiyonda birçok düzeltme de gelebilecektir. SİZLERİNDE KATKILARINIZI BEKLİYORUM.

Programda sadece backlight ve serial otg extension (uzantısı) kullanılıyor. Bunlar program içerisinde olmakla birlikte, kaynak sitelerini de programların yanında bulabilirsiniz.

Animasyon için kullanılan arduino dosyası programlar arasındadır. Seri port üzerinden gönderilen bilgi ile kullanılır. USBOTG ile kontrol edilmek üzere hazırlandı. Arduinoya bluetooth modül bağlarsanız bluetooth kontrollü olanı da kullanabilirsiniz. Ben EASYLCD için yaptığım, VB6 ile çalışan animasyon programını animasyon için kullandım. VB6 programını exe olarak çevirdiğimde virüs programı virüs var diyor. Bundan dolayı EXE yapmadan veriyorum.
Sizler isterseniz VB6 programını kurup bunu yapabilirsiniz. İsterseniz REALTERM gibi bir terminal programı ile PC nin bluetooth seri com portunu kullanarak denemelerinizi yapabilirsiniz.  Ben bluetooth programının videosunda PC bluetooth com portu ile eşleştirdim.

2 GND yi birleştiren bu DİYOT’un KATOD kısmı bu şekilde olacak. Çünkü Arduino tarafından gelebilecek yanlış gerilimler MOBİL CİHAZINIZA zarar verebilir. İsterseniz dikkatli bir şekilde diyotsuz bağlayın. Bu durumda cihazın birini açınca diğerinin de power lambasının yandığını görebileceksiniz. Bu da etkileşimi gösterir. Fakat en önemli kriter Arduinodan Mobil cihaza doğru yanlış bir gerilimin gelmemesi.


 

 

 

 

TÜM programları burada bulabilirsiniz.

Her iki APP INVENTOR birbirinin aynı çalışmaya sahiptir. Fakat Bazı mobil cihazlarda OTG olmadığından haberleşme sistemleri farklıdır. OTG olmayan cihazlarda Bluetooth üzerinden bilgi alışverişi yapılır. OTG olan cihazlarda ise OTG kablosuyla USB seri çevirici kullanılır. Sadece haberleşme sistemleri farklıdır. 

Birinci video, Android 2.4 Samsung Galaxy Y ile Bluetooth bağlantılı programın çalışma videosudur. İlk video olduğundan detaylı anlatım bu videodadır. Öncelikle bu videoyu seyretmenizi tavsiye ederim. 



 

 

 

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir