Easylcd_mobile ile eski telefonlara hayat vermeye devam ediyorum. Sizler bunu nasıl karşılıyorsunuz bilemem ama ben denemelerimde artık bunları kullanmaya başladım.
İlk yazımda ayrıntılı bir şekilde neler yapabileceğimizİ yazmıştım. İlk versiyon sadece karakter LCD ve RTC olarak kullanılıyordu. İkinci versiyonda Arduino ile eski telefonumuzu birleştirerek barcode okuyucu yapmıştım. Şimdi ise ESP modülünü artık kullanmayacağım. Çünkü zaten telefonlarımız wifi özelliğiyle bir çok şeyi yapabiliyor. ( EASYLCD_MOBILE başlangıç konularını okuyarak bu konuya dönerseniz daha rahat anlayabilirsiniz. )
Bu konudaki ilk yazım buradadır. 2. yazım ise buradadır. Bu konu 3. olacak ama son olmayacak.
Bu yazımın konusu, ESP modülü ama öncelikle THINGSPEAK sitesine, Arduinonun sensörlerden topladığı verileri gönderiyoruz ve alıyoruz.
Güzel tarafı bunlar için hiçbir KÜTÜPHANE KULLANMIYORUZ.
Komutlar akılda kalıcı kelimelerden oluşuyor. Bu EASYLCD nin temeliydi. Şimdi ise bir kaç komut ile yapmak istediğimizi yapabiliyoruz.
Şunu NOT olarak söylemeliyim Genel kullanımda Arduino kullanımı açık ara önde olduğundan ARDUINO kelimesini kullanacağım. Fakat kütüphane olmadığı için TÜM MİKRO KONTROL KARTLARI VE ENTEGRELERİYLE AYNI ŞEKİLDE ÇALIŞIR.
Komutlara örnek verelim:
LCDWR 1,1-deneme Bu komutla LCD olarak kullanılan telefon ekranına yazı yazıyoruz. 1. satır 1. sütundan başlayarak yazması sağlanır.
LCDTW : Telefonun, tabletin sistem saatini arduinoya gönderir. RTC modülüne gerek kalmadı.
BARRD : BARCODE oku ve arduinoya bunu gönder.
ESPON : WIFI on durumuna getir. Program içerisinden cihazınızın wifi özelliğini devreye alabilirsiniz. (Bu komut ve ESPOFF ile kapat işlemini yapan komut için kullanılan uzantı maalesef android 10 da çalışmıyor . Bu versiyondan önceki versiyonlarda kullanabilirsiniz.)
ESPOFF : WIFI özelliğini kapat.
ESPTS : Thıngspeak sitesine bilgi gönder. ( thingspeak sitesinin 15sn de bir güncelleme kısıtlaması olmasına rağmen 8 adet sensörün verileri birlikte gönderilebilir. )
Komut şekli ise ESPTS 1,1-15,23,45,56 gibi yazılabilir. Thıngspeak bir kanalda 8 adet field tanımına izin veriyor. Bundan dolayı 15,23 gibi yazdığım sensör değerleri field 1-8 arasındadır. Siz bunların ne kadarını kullanıyorsanız o kadarını verebilirsiniz. Mesela sadece 2 tane gönderecekseniz ESPTS 1,1-15,25 yazarak gönderebilirsiniz. İsterseniz de virgül ile ayırarak 8 adedini gönderebilirsiniz. Fakat thingspeak üzerinde 4 field kullanmışsanız 5. sensör değerini gönderseniz de o bilgi thingspeak tarafından görmezden gelinir. Bunun karşılığında hata bilgisi göndermez.
Bu durum sadece Bilgi okunduğunda belli olur. Bilgi okumak isterseniz “NOT FOUND” der. 5. field yoksa bu cevabı alırsınız. Şayet sensör verisi yoksa, yani o field tanımlı ve ona veri göndermediyseniz, o zaman veri cevabı olarak “NULL” değerini okursunuz.
ESPTR 1,1- komutu okumak için yeterlidir. Bu komut sadece son yazılan veriyi okur. Bu da gönderdiğiniz bilginin gerçekten yazılmış olduğunu teyit eder. ( İsterseniz app inventor programının içerisinde açıklama blokları koydum. O blokları kullanarak istediğiniz field bilgilerini ve birden fazla kayıt edilen bilgileri toplu halde alabilirsiniz. Ben programda sadece son kayıt edilen veriyi ayarladım onu kullanıyorum.
Gelelim komutun açıklamasına :
ESPTR de aynı şekilde kullanılır. ESPTR field numarasına göre bilgi almak için field numarası kullanır. Fakat ESPTS göndermek için field numarasına ihtiyaç duymaz. ( – ) işaretinden sonra 1, 2, 3 field diye sıralanır. Bundan dolayı field1 değerini göndermeyecekseniz bile oraya sıfır yazmanız gerekir. Virgül işareti önemlidir. Bu ayırma taplosu için kullanılır.
Peki ben 12,75 değerini yollayacağım diyorsanız, O şekilde kullanmamanız gerektiğini zaten biliyor olmanız gerek. 12,75 değil 12.75 olarak yazacaksınız. Zaten bir çok yerde desimal nokta olarak geçer bazı programlar excel gibi , işaretini kullanır. Buna dikkat etmelisiniz.
Programın çalışma mantığı, bir önceki BARCODE okuyucu programı gibi 2 sayfalı çalışmadır. Ana program EASYLCD MOBILE karakter LCD bölümü ve haberleşme bölümüdür. Bundan dolayı ana programı ellemeden 2. ekran olarak ESP yi kullanıyoruz. ESP sayfası gönderilecek verileri, sayfa açılırken alır ve gönderilecek yere gönderir. Geri gelen cevap olursa, bunu da kendi sayfasını kapatırken ana sayfaya aktarıyor. Ana sayfa haberleşme kısmı ise bunu Arduino ya gönderir. Bundan sonraki modül kullanımları da aynı mantık ile çalışacaktır.
Bu program sadece THINGSPEAK için ayarlanmış olsa da, PHP sitelerine de uyarlanabilir hatta kendi sitenize veya başka bulut sistemlerine ayarlanabilir.
Ana ekranın görünümü ve açıklaması:
Yukarıdaki resimde en alt bölüm database (veri kayıt) bölümüdür. Buna neden ihtiyaç var derseniz, kanal numaranızı ve key kodunuz gibi bilgileri her defasında yazmamanız içindir. Komut satırında 1 yazıldığında 1. veri kümesi gelir. Bunun içindeki bilgiler ekranda yazmaktadır. Şayet başka bir kanalınız varsa 2. veritabanı kısmına kayıt yaparsanız. Komut satırında bu 2. veri tabanını kullansın demek için 2 rakamını kullanmanız yeterlidir. Komut satırının nasıl yazıldığı yukarıdaki resimlerde var.
Thingspeak kısmında ise aşağıdaki resimdeki gibi grafiksel gösterim vardır. Bunun yanısıra aşağıda bulunan linkleri internet sayfasıyla açıp gelen bilgileri inceleyebilirsiniz. Ben programda LAST denilen son veriyi oku kısmını kullanıyorum. Diğer linkleri kullanarak gelen JSON modundaki cevapları da inceleyebilirsiniz. Her kanal için 8 field tanımlayabilirsiniz. Alt sağdaki field guage kısmı ise field 4 e bağlanmış widgettir. Sadece son durumu gösterir. Bunu internet sayfanızda bu şekilde görebilirsiniz.
Bunun yanı sıra bu linklerle de internet sayfasında denemeler yapıp cevapları inceleyebilirsiniz.
1. link : Bu link birden fazla field için gönderilmesi gereken verilerin nasıl gönderileceğini gösterir. Kendi kanalınızda deneme yapmanız iyi olur. Aynı anda başkası da veri gönderirse çakışabilir ya da geri çağırdığınızda yanlış gelebilir.
https://api.thingspeak.com/update?api_key=Z16ZW7HHA0UD9OOJ&field1=35&field2=23&field3=45
2. link:Bu link son yazılan kayıta ait verileri size gönderir. Veri okuma olduğundan bunu deneme için kullanabilirsiniz. Sonundaki timezone olmazsa Türkiye değil başka bir saat dilimini gösterir. Veri kaydı doğru bile olsa okurken farklı bir zaman kaydı gelebilir. Program bunu kullanıyor.
https://api.thingspeak.com/channels/541863/feeds/last.json?api_key=EUQZ227Q44S9JM3C&timezone=Asia/Istanbul
3. link: Bu link tüm kayıtlar içerisinde field1 olanları çağırır. (/fields/1.json?) kısmında fieldler içinden 1. sini bana ver demektir. Fakat burada bir ayrıntı daha var. Bu da link sonundaki 2 sayısıdır. Bu sayı son 2 tanesini bana ver demektir. Bu sayıyı 0 yazdığınızda sadece açıklama ve kayıt bilgileri gelir ama değerleri göremezsiniz. Buradaki kayıt bilgisi size kaç tane kayıt olduğunu verdiğine göre siz isterseniz tüm kayıtları almak için bu kayıt numarasını verebilirsiniz. Ya da tahmini kayıt sayısından büyük bir sayı vermeniz tüm kayıtlara ulaşmanız için yeterli olacaktır.
https://api.thingspeak.com/channels/541863/fields/1.json?api_key=EUQZ227Q44S9JM3C&results=2
4. link: Bu kanal durumu hakkında bilgi verir. Fakat çok da bir şey yok. Normal çalıştığı için. Belki de hatalı veriler geldiğinde ya da site ve kanal durumu ile ilgili problem varsa bunları bildiriyordur.
https://api.thingspeak.com/channels/541863/status.json?api_key=EUQZ227Q44S9JM3C
5. link: Bu ise sadece 1 field için değil tüm fielderi göstermek içindir. Burada da sondaki 2, son 2 kaydı ver demektir. İsterseniz tüm kayıtlara ulaşabilirsiniz.
https://api.thingspeak.com/channels/541863/feeds.json?api_key=EUQZ227Q44S9JM3C&results=2
Tüm bu linkleri internet sayfasında denemeniz ve geri gelen JSON formatındaki cevapları incelemenizi tavsiye ederim. Bu, nasıl çalıştığını anlamanıza yardımcı olacaktır. Benim kanalım deneme olduğundan Bu linkleri öncelikle olduğu gibi kullanırsınız.
Siz kendi kanalınızı test edecekseniz buradaki kanal numarası (541863) ve API_KEY numaralarını değiştirmeniz gerekir. Kendi API_KEY numaralarınızı ise kanalınızın menüsüne girdiğinizde api key menüsünden öğrenebilirsiniz. Burada bilgi yollamak için Write API Key ve bilgi almak için Read API Key vardır. Buradaki api anahtarlarını okuma ve yazma linklerine göre kullanmalısınız.
1. link yazma işlemidir. Diğer linkler ise okuma linkleridir. API key leri incelerseniz bunu görebilirsiniz.
Örnek JSON cevap aşağıdadır. Bunu elde ettiğim link ise budur.
https://api.thingspeak.com/channels/541863/feeds.json?api_key=EUQZ227Q44S9JM3C&results=2
Eski telefonlardan bunu deneyecekseniz android 6.0 öncesinde THINGSPEAK için HTTPS desteği yeni versiyona göre uyumlu olmadığından HTTP olarak deneme yapabilirsiniz. THINGSPEAK TLS1.2 versiyonuna geçtiğinden bu güvenlik versiyonu eski telefon versiyonlarında yoktur. Bu durum sadece uygulama üzerinden geçerlidir. CHROME üzerinden girip bu link’e giderseniz https sorunu olmayacaktır.
{“channel”:{“id”:541863,”name”:”esp2″,”description”:”espyedek”,”latitude”:”0.0″,”longitude”:”0.0″,”field1″:”Sensor-1″,”field2″:”Sensor-2″,”field3″:”Sensor-3″,”field4″:”sensör-4″,”created_at”:”2018-07-18T14:26:54Z”,”updated_at”:”2021-12-12T09:55:33Z”,”last_entry_id”:70},”feeds”:[{“created_at”:”2021-12-12T12:09:05Z”,”entry_id”:69,”field1″:”55.27″,”field2″:null,”field3″:null,”field4″:null},{“created_at”:”2021-12-12T12:12:04Z”,”entry_id”:70,”field1″:”15.27″,”field2″:”25.75″,”field3″:null,”field4″:null}]}
NOT: Video çektiğim sırada kullandığım android 4.4 ile thingspeak sitesine veri yollayıp alıyordum. Şimdi ise güncelleme gelmiş ve TLS1.2 ye geçmişler. Bundan dolayı Android 6.0 dan eski telefonlar https ile giremiyor. Yukarıdaki linklerdeki HTTPS yerine HTTP kullandığınızda çalışmaya başlıyor. Önceki kullandığım program HTTPS olan, 1101 hatası veriyordu. Ekranda wifi açık değil hatası çıkıyordu.
Son durumda programları http olarak değiştirerek kaynak dosyalara ekleyeceğim. android 6.0 ve yukarısında HTTPS olanı kullanırsınız. Daha eski versiyonlarda HTTP kullanırsınız.
CHROME üzerinden girip bu link’e giderseniz https sorunu olmayacaktır. Sorun app inventorun HTPPS TLS1.2 versiyonuna eski telefonlarda hazır olmamasıyla ilgilidir. Yeni versiyonlarda bu adaptasyon sağlanmış.
NOT: Ana sayfadan ESP sayfasına gidip, kanal bilgilerinizi girebilmeniz için DENEME BUTON‘una UZUN basarsanız ESP ekranına ayar yapmaya yönlendirileceksiniz.
Tüm programlara buradan ulaşabilirsiniz.
Thingspeak sitesine de buradan ulaşabilirsiniz. Buraya gittiğinizde kendi hesabınızı açmanız gerekir. Sonrasında FREE kısımdan kendi kanalınızı açabilirsiniz. PUBLIC VIEW da görebilmek ve herkesle paylaşabilmek için Sharing menüsünden Share channel view with everyone seçeneğini işaretlemelisiniz.
NOT: Arkadaşlar bu programlar açık kaynak kodludur ve ortak geliştirmeye açıktır. Bu işle ben uğraşmaya kalksam o kadar özelliği kendim eklemem uzun sürecektir. Bu projeyi ortak olarak geliştirmeyi amaçlamıştım. Sizler de bu projeyi büyütüp daha faydalı hale getirmek isterseniz ortak çalışabiliriz. Lütfen bu konudaki düşüncelerinizi belirtin.
Buraya kadar detaylı anlatmaya çalıştım. Pratik kullanımını da videoda görebilirsiniz.