Smart Mirror (Akıllı Ayna) Projesi Temel Bilgiler

Merhaba arkadaşlar,

2017/2018 Eğitim Öğretim yılında Tübitak 4006 Bilim Fuarı kapsamında bölüm öğrencilerimle birlikte “Smart Mirror” yani “Akıllı Ayna” projesini geliştirdik. Akıllı ayna kavramı internet ortamında yaygın bir şekilde duyulan hatta YouTube’da birçok videosu hazırlanan ve Internet of Things yani Nesnelerin İnterneti kavramından ilham alınarak geliştirilen teknolojik bir cihazdır. Bizim gibi bu işi hobi olarak yapan birçok kişi eldeki imkanlarla bu cihazları geliştirmekle birlikte, birçok teknoloji firması Akıllı Ayna üretimine başladı veya başlamaktadır.

Aynalar, ev veya iş yerlerinde kimi zaman ihtiyaç kimi zaman görsellik için kullanılmaktadır. Gündelik hayatta yoğun bir şekilde kullandığımız aynaların daha işlevsel olması şüphesiz IoT ile doğrudan ilgilidir. Projemize geçmeden önce nesnelerin interneti hakkında bazı temel bilgilere sahip olmakta yarar var.

Internet of Things

Internet of Things veya kısaca IoT, veri alıp gönderebilen ve cihazların uzaktan kontrol edilmesini sağlayan akıllı nesneler ağı olarak tarif edilebilir. Nesnelerin internetinde cihazlar belirli bir işlem için tasarlanmakta ve her cihaz birbiriyle iletişim halinde bulunmaktadır. Bu kavram akıllı telefon, tablet veya bilgisayarların birbirine bağlı olmasının da ötesinde bir kavramdır. IoT, arabaların, ütülerin hatta bisikletlerin ve daha birçok donanımın birbirine bağlı olmasını kapsayan daha geniş bir kavramdır. Bundan dolayı gelecek zamanda hayatımızı en çok etkileyecek teknoloji kesinlikle IoT olacaktır. Uzmanların da görüşü bu yöndedir.

IoT, ilerleyen zamanlarda sanayi, sağlık hizmetleri, taşımacılık, imalat, tarım ve akıllı şehir gibi birçok alanı etkisi altına alacaktır. Tüm bu alanlar IoT’un kendisinden büyük oranda faydalanacaktır. Yine Nesnelerin interneti kavramı oldukça geniş bir kavramdır. İnternete bağlanabilen ve veri alışverişinde bulunan herhangi bir donanım, nesnelerin interneti kavramına girmektedir. Bu gibi nesneler her zaman ve her yerde birbirine bağlıdır ve her zaman veri alışverişinde bulunurlar.

IoT kapsamında geliştirdiğimiz akıllı ayna projemizin mantığında tamamen bu düşünceler yer almaktadır.

Akıllı ayna projesini geliştirmek için internet ortamında birçok kaynak bulabilirsiniz. Özellikle Python dili kullanılarak Raspberry Pi ile geliştirilen akıllı aynalar oldukça yaygındır. Bizde projemizde Raspberry Pi 3 geliştirme kartını kullandık ancak Python yerine tamamen Android yani Java programlama dili ile çalıştık. Sadece web uygulaması için Firebase ile iletişime geçmek ve veri tabanından veri almak veya göndermek için JavaScript dilini kullandık.

Projemizde kullandığımız donanım, yazılım ve teknolojiler genel olarak aşağıdaki gibidir:

  • Android Things
  • Raspberry Pi 3 Model B
  • Firebase
  • Android’li Akıllı Telefon
  • Wear OS’lı Akıllı Saat

Bunların dışında kullandığımız başka donanımlarda var. Onlara daha sonra değinmek üzere burada listelediğimiz teknolojiler hakkında biraz bilgi vermek istiyorum.

Android Things

Android Things, Google firması tarafından IoT projeleri oluşturmak üzere geliştirilen yeni bir işletim sistemidir. Bu sistemde Android’i kullanarak profesyonel uygulamalar geliştirebilirsiniz. Android Things gelecek vaat eden bir işletim sistemdir. Bunun en büyük nedeni Google ve Android desteğinin olmasıdır. Bu sayede Android geliştiriciler kolay bir şekilde nesnelerin internetine geçebilir ve Android ile uyumlu projeler geliştirebilirler. Android things’in yapısını anlamak için aşağıda verilen diyagramı inceleyelim.

Bu diyagramı Android’in resmî web sitesinde bulabilirsiniz. Görseli incelediğimizde Android Things ile gelen en önemli özellik Things Support kütüphanesidir. Bu kütüphaneyi kullanarak uygulamalar geliştirebiliriz. Ayrıca bu sistem Android uygulamalarına nazaran çevre birimlerine ve donanımlara daha yakındır.

Android things, Android temelli olsa da ikisi arasında bazı farklılıklar vardır. Örneğin Android Things ile çalışırken tek bir düzen yani layout ile çalışmak gerekiyor. Android sistemlerde olduğu gibi farklı arayüz tasarımları kullanamayız. Ayrıca Android things için geliştirilen uygulamalar da tema ve stiller desteklenmez. Yine Android ile gelen kütüphanelerden bazılarını Android Things ile kullanamayız. Bunların başında content providers yani içerik sağlayıcılarını örnek olarak verebiliriz.

Android things ile kullanılan ve kullanılmayan kütüphane veya servislerin bazıları aşağıdaki gibidir.

Desteklenen Kütüphaneler Desteklenmeyen Kütüphaneler
Firebase AdMob
Google Fit Android Pay
Location Drive
Maps Play Games
Nearby
Mobile Vission
Cast

Yukarıda genel olarak desteklenen ve desteklenmeyen servislerin listesini sizler sunmaya çalıştım. Bu liste zaman zaman değişmektedir. En güncel listeye aşağıdaki linkten ulaşabilirsiniz.

https://developer.android.com/things/versions/things-1.0-changes

Android things Google hizmetlerine mükemmel şekilde uyum sağlamaktadır. Google tarafından uygulanan hemen hemen bulut servislerinin çoğu Android Things ile kullanılabilir.

Android things ile geliştirdiğiniz bir uygulamada ihtiyacınız olan tüm izinleri manifest dosyasına eklemeniz gerekmektedir. Ayrıca bu sistemde durum çubuğu bulunmadığı için bildirimleri kesinlikle kullanamazsınız. Bundan dolayı  NotificationManager API’sini uygulamanızda kullanmanızı tavsiye etmiyoruz. Zaten bu gibi uygulamalarda bildirimlere ihtiyaç duyulmamaktadır.

Android ve Android Things arasındaki en büyük benzerliklerden bir tanesi, arayüz tasarımı için aynı bilgilerin kullanılmasıdır. Herhangi bir arayüzü tasarlarken kullandığımız yöntemlerin aynısını IoT projeleri için de kullanabiliriz.

Android Studio geliştirme ortamında Android Things proje tipinde bir uygulama geliştirip Raspberry Pi 3 Model B kartımıza yükleyeceğiz. Geliştirdiğimiz bu uygulama akıllı aynamızın yazılımı olup verilerimizi bu uygulama ile aynamızda göstereceğiz.

Raspberry Pi 3

Raspberry, düşük maliyetli kredi kartı büyüklüğünde olan bir bilgisayardır. Herhangi bir bilgisayar monitörü veya TV’ye bağlanabilir ve üzerindeki USB bağlantıları ile fare ve klavye gibi çevre birimlerini kullanabilir. Her yaştan insanın bilgisayar kullanmasını sağlayan küçük ve yetenekli bir cihazdır. Scratch ve Python gibi dilleri kullanarak programlama yapabilirsiniz. Mini bir bilgisayar olmasına rağmen standart bir masaüstü bilgisayarın yapması gereken her türlü işlemi rahatlıkla yapabilir. Örneğin; internette arama yapmak, yüksek çözünürlüklü video izlemek, paket programları kullanmak ve hatta oyun oynamak.

Raspberry Pi üzerinde bulunan genişleme pinleri (GPIO) sayesinde dış dünya ile iletişime geçebilir. Bu özelliğinden dolayı birçok projede kullanılmıştır. Temel geliştirilme amacı dünyanın her yerindeki çocukların bilgisayarların nasıl çalıştığını öğrenmesini sağlamak ve programcılığa ilgilerini çekmektir.

Raspberry Pi 3 Model B+ en son üretilen Raspberry versiyonudur. Raspberry’nin resmi işletim sistemi Raspian olmakla birlikte aşağıda verilen işletim sistemlerini de desteklemektedir.

  • Ubuntu Mate
  • Snappy Ubuntu Core
  • Windows 10 IOT Core
  • OSMC
  • Libreleec
  • Pinet
  • Risc OS

Bunlara ek olarak Google firmasının geliştirdiği Android Things işletim sistemini de verebiliriz. Android tabanlı olan bu işletim sisteminin amacı IoT projeleri geliştirilmesini sağlamaktır. 

Raspberry Pi 3 aşağıdaki gibidir.

Firebase

Firebase, yüksek kaliteli uygulamalar geliştirmek, kullanıcı tabanını büyütmek ve daha fazla para kazanmak için geliştiricilere ihtiyaç duydukları araçları sağlayan bir Google hizmetidir. Kullanıcılara odaklanmayı ve daha iyi bir gelir elde etmeyi hedefleyen Firebase servisi ile farklı uygulamalar arasında veri bütünlüğü sağlayabilirsiniz. Ayrıca backend yani altyapıyı yönetmeye ihtiyaç duymadan hızlı bir şekilde uygulama geliştirebilirsiniz.

Web veya mobil uygulama geliştirdiğiniz zaman backend yani sunucu taraflı programlama yapmamız gerekiyor. Kullanıcıların verilere her yerden erişmesi ve veri bütünlüğü söz konusu olduğunda bu kaçınılmaz olmaktadır. Ancak sunucu taraflı programlama yapmadan sadece uygulamanıza yani frontend kısmına odaklanmak istediğiniz de işte burada Firebase yardımınıza koşmaktadır.

Google Firebase ile genel olarak aşağıdaki işlemleri rahatlıkla yapabiliriz:

  • Real time database,
  • Push notification,
  • Firebase Analytics,
  • Firebase Authentication,
  • Firebase Cloud Messaging,
  • Firebase Storage,
  • Firebase Hosting,
  • Firebase Test Lab For Android,
  • Firebase Crash reporting,
  • Firebase Notification, 
  • Firebase App Indexing,
  • Firebase Dynamic link, 
  • Firebase Invites, 
  • Firebase Adwords.

Burada listelediğimiz hizmetlerden Real time database yani gerçek zamanlı veritabanı işlemlerinde Firebase işimizi kolaylaştırmakta ve geliştireceğimiz uygulamanın merkezinde yer almaktadır.

Android’li Akıllı Telefon

Akıllı ayna ile kullanacağımız diğer bir donanım Android yüklü akıllı bir telefondur. Android Studio ortamında geliştireceğimiz mobil uygulamayı akıllı telefonumuza yükleyip, yapacağımız faaliyetleri Firebase ortamına kayıt etmeyi veya kayıtlı olan faaliyetleri akıllı telefonumuzda listelemeyi sağlayacağız. Ayrıca tamamladığımız bir faaliyeti silmeyi veya zamanı gelen bir faaliyet için akıllı saatimize veri göndermeyi gerçekleştireceğiz.

Wear OS’lı Akıllı Saat

Android Wear olarak bildiğimiz ve Mart 2018’den itibaren Wear OS olarak ismi güncellenen işletim sistemi içinde bir uygulama geliştireceğiz. Wear OS, akıllı saat merkezde olmak üzere giyilebilir cihazlara yönelik olarak Google tarafından geliştirilen bir işletim sistemidir. IoT kavramından söz ettiğimize göre akıllı saatleri buraya dahil etmek oldukça önemli olmaktadır. Çünkü amaç farklı cihazlar arasında veri transferini ve iletişimi sağlamaktır.

Wear OS’lı bir akıllı saati etkin bir şekilde kullanmak için Bluetooth üzerinden akıllı telefona bağlamamız gerekiyor. Geliştireceğimiz uygulamalar içinde Firebase ile doğrudan iletişimde olmayan tek uygulama Wear uygulaması olacaktır. Çünkü bu işlemi akıllı telefonda bulunan uygulama üzerinden sağlayacağız. Tabi Wear uygulamanızı doğrudan Firebase ile bağlayabilirsiniz.

Wear tarafında geliştireceğimiz uygulama, eğer o gün yapılması gereken bir faaliyet varsa kullanıcıyı bilgilendirmeyi sağlayacaktır. Burada Huawei Smartwatch akıllı saatini kullandık. Görseli aşağıdaki gibidir.

Şimdi projemiz hakkında spesifik bilgilere geçebiliriz.

Smart Mirror Malzeme Listesi

Öncelikle akıllı aynamızı inşa etmemiz gerekiyor. Bundan dolayı temin etmemiz gereken malzemeler bulunmaktadır. Bu donanımlar şu şekildedir:

  • LCD Monitör (VGA veya HDMI olabilir) x 1
  • Çift Yönlü Ayna x 1
  • Çerçeve x 1
  • Raspberry Pi 3 Model B x 1

LCD monitör olarak 21’’ , çift yönlü ayna olarak 18’’ x 24’’ ölçülerini tercih ettik. Yalnız çift yönlü aynayı Amazon’dan almanız gerekiyor. Çünkü ülkemizde bulamadık.  Raspberry Pi’nin son modeli B + olmasına rağmen Model B’yi kullandık çünkü şu an için Android Things, Model B+  desteklemiyor.

Smart Mirror Nasıl Çalışıyor?

Smart Mirror projemizin toplamda dört ayağı bulunmaktadır. Bunlar şu şekildedir;

  • Smart Mirror Android Things Uygulaması(Firebase bağlantılı)
  • Web Uygulaması (Firebase bağlantılı)
  • Akıllı Telefon Uygulaması (Firebase bağlantılı)
  • Smart Watch Uygulaması (Akıllı telefon uygulaması ile bağlantılı)

Yukarıda verilen bileşenlerden meydana gelen akıllı aynamızın çalışma yapısı aşağıdaki gibi olacaktır.

Görüleceği üzere akıllı ayna ve diğer tüm cihazlar arasında veri bütünlüğü ve iletişim Firebase ile sağlanmaktadır. Şimdi uygulamalar hakkında ayrıntılı olarak bilgi verelim.

Smart Mirror Android Things Uygulaması

Smart mirror projemizi geliştirirken Android Things işletim sistemini Raspberry Pi 3 geliştirme kartına yükleyip bu sistem için bir uygulama geliştireceğiz. Geliştireceğimiz uygulama aşağıdaki bilgileri kullanıcıya göstermeyi sağlayacaktır;

  • Şehir bilgisi
  • Hava durumu
  • Saat
  • Tarih
  • Gün
  • Günlük mesajlar
  • Varsa o günün faaliyeti
  • Ve son olarak kayıtlı olan tüm faaliyetlerin listesi

Android things uygulamasını Raspberry Pi 3 Model B kartına yükleyip gerekli bağlantıları sağladıktan sonra aşağıdaki ekran bizlere gösterilecektir.

Uygulama kayıtlı olan verileri Firebase üzerinden almaktadır. Hava durumu bilgisi ise OpenWeatherMap ile bizlere sunmaktadır. Diğer tüm bilgileri Android Things ile elde etmekteyiz.

Web Uygulaması 

Web uygulaması ile masaüstü veya dizüstü bilgisayardan akıllı aynamızı kontrol edebiliriz. Böylece akıllı telefona uzak olduğumuz durumlarda faaliyetlerimizi kayıt edebilir veya kayıtlı olan faaliyetleri listeleyebiliriz. Verilerimizi firebase ortamına kayıt ettiğimiz için burada Firebase web bağlantı işlemini yapan JavaScript kodlarını kullandık. Web uygulamasının örnek ekran çıktısı aşağıdaki gibidir.

Web uygulaması ile tamamladığınız bir faaliyeti silebilirsiniz.

Akıllı Telefon Uygulaması 

Android yüklü bir telefon tercih ettiğimiz bu uygulamada amaç Firebase ile bağlantıda kalarak faaliyet kaydını yapmayı ve var olan kayıtların listelenmesini sağlamaktır. Listede bulunan ve tamamlanan bir faaliyeti android uygulamasında ve dolayısıyla Firebase ortamında silebilirsiniz. 

Uygulamanın örnek ekran çıktısı aşağıdaki gibidir.

 

Smart Watch Uygulaması

Wear OS için geliştirdiğimiz bu uygulamanın tek bir amacı var; o gün için bir faaliyet veya faaliyet listesi varsa bunu bir bildirim ile kullanıcıya haber vermektedir. Uygulama Firebase ile bağlantıda olmayıp akıllı telefon uygulaması ile Bluetooth üzerinden haberleşmektedir. Akıllı telefon uygulaması Firebase üzerinden verileri alırken gerekli kontroller sağlanıp varsa o günkü faaliyet akıllı saate iletilmektedir.

Örnek ekran çıktısı aşağıdaki gibidir.

Akıllı aynamız hakkında bilmemiz gereken temel bilgiler bu şekildedir. Son olarak aşağıdaki resmi paylaşmak istiyorum. Burada kullandığımız teknolojileri genel olarak görmekteyiz.

 

 

Sonraki yazılarımda projeyi adım adım geliştirmek için ayrıntılı bilgiler vereceğim. Şimdilik bu kadar.