ESP32 ile Bluetooth Üzerinden Haberleşen Mobil Uygulama Tasarlama

Merhaba. Bu yazımda sizlere stajım süresince tasarladığım mobil uygulama ve mobil uygulamanın Bluetooth üzerinden haberleşeceği ESP32 için yazdığım yazılımlardan bahsedeceğim. 

NodeMCU-ESP32

´NodeMCU geliştirme kartının üzerinde bulunan ESP32, üzerindeki Wi-Fi ve Bluetooth sayesinde bir çok IOT uygulaması için kullanışlı bir yapıya sahip, 32 bitlik bir mikro denetleyicidir. Bireysel olarak kontrol edilebilen iki CPU çekirdeği vardır. İstenirse aynı anda iki farklı işlem yapabilir. CPU frekansı 80 MHz ile 240MHz arasında ayarlanabilir. UART, SPI , I2C, Can Bus ve I2S Stereo haberleşme protokollerini destekler. Geliştirme kartının üzerinde bulunan CP2102 USB-TTL dönüştürücü sayesinde bilgisayarda yazdığımız kodu yüklememize olanak sağlar. 

Geliştirme kartının özelliklerinden bahsettikten sonra ESP32′ ye yazdığım yazılımdan başlayalım.  Yazılım Cpp’ da yazıldı. Arduino kütüphaneleri yardımıyla kodlandı. IDE olarak Vs Code’ da PlatformIO kullanıldı. PlatformIO profesyonel kod düzenleyicisi ve çok sayıda platform için kaynak kodunu derleyebilmemiz için bir derleyicisi, bir hata ayıklayıcısı ve ayrıca programlama için bir dizi araç ile entegre bir geliştirme ortamı. Seri test monitörü, kod analizörü, kodu otomatik tamamlama gibi özellikleri vardır.

ESP32 Bluetooth Classic  ile istemci-sunucu haberleşmesi yapıldı. Eşleşme sırasında ESP32,  istemciye şifre sorma işlemi yapıyor. Eğer şifre 6 saniye içerisinde doğru girilmez ise ESP eşleşmeyi bitiriyor. Tasarlanan mobil uygulama bu şifre işlemini bağlandıktan sonra otomatik ESP32′ ye gönderiyor. ESP32 ile mobil uygulama arasında gönderilen veriler şifrelenerek gönderiliyor. Alınan verilerde şifresi çözüldükten sonra işleme tabi tutuluyor. ESP32 ile CAN hattında ki veriler okunabiliyor ve CAN hattına veri yazılabiliyor. 

Mobil Uygulama Tasarımı

Mobil uygulama Flutter ile yapıldı. Google tarafından geliştirilen Flutter ücretsiz ve açık kaynaklı, mobil, web, masaüstü uygulamaları geliştirmek için kullanabileceğimiz bir UI frameworktür. Flutter UI as Code yani kodlayarak Arayüz oluşturmamızı sağlar. Dart dili ile kodlanır.

Flutter’ ın Widget ağacından mobil uygulamanın ana ekranı için bir AppBar, SafeArea ve childınada Column Widget’ ları eklendi. Bluetooth’ dan gelen veriler için sırayla “Gelen Veriler” yazısı için ListTile, CAN veri tablosu için aynı şekilde ListTile, verileri yazdırmak için ise ListView.builder Widget’ ları kullanıldı. Bluetooth ile gönderilen veriler için de yine aynı Widget’ lar kullanıldı. Mobil uygulamanın görünümünün daha estetik olması için ise Widget’ ların Properties özelliklerinden faydalanıldı. 

 Mobil uygulamadan gönderilecek veriler şifrelenerek gönderiliyor ve gelen şifreli veriler ise şifresi çözüldükten sonra ekrana yazdırılıyor. Tarama sayfasında çevredeki cihazların sinyal gücünü, sinyal gücünün yanında ise  eşleşmiş cihaz var ise bağlantı ikonu olacak şekilde ekrana çiziyor. Bir cihaz ile bağlantı yoksa sağ üst köşedeki ikonun rengi kırmızı ve üstüne tıklandığında ‘BAĞLANTI YOK’ yazıyor. Cihaza bağlı ise rengi yeşil ve üstüne tıklandığında hangi cihaza bağlı ise onun ismi yazıyor.

                                          

Projede yardımlarını esirgemeyen ve yol gösteren herkese teşekkür ederim.

Abdulkadir ERASLAN

Isparta Uygulamalı Bilimler Üniversitesi

aeraslan80@gmail.com