Donanım TasarımıESP32
Cihazımızı Esp32s mikro denetleyicisi ile yönettik. Üzerine ivme, barometre ve nabız sensörleri yerleştirerek gerekli verileri topladık. Aynı zamanda li-po bataryayla cihaza güç verdik. Bluetooth ve Wifi bağlantıları için kullandığımız denetleyici üzerindeki wifi ve bluetooth modüllerini kullandık. Bu sayede yerden ve güç tüketiminden tasarruf etmiş olduk.
Donanım yazılımımızı takılı sensörlerden gelen verileri wifi ve bluetooth aracılığıyla server ve android uygulamasına göndermek üzerine tasarladık. Bu veriler herhangi bir telefon bağlı olmadığı zaman servera, aksi takdirde telefona gönderilip cihaz dışarısında anlamlandırılmaktadır. Bu sayede cihaza çok iş bırakmamış olup batarya tüketimini azaltmayı hedefledik.
Tasarladığımız cihaz 4x5x10 boyutlarında olup nabız sensörü kutu dışarısında bulunmaktadır. Kullanıcı istediği zaman parmağını götürüp bir süre bekledikten sonra sonuçları alabilir.
Server Tasarımı ve GuiC++
Micro-Service’lerin genel amacı her bir modülün birbirinden bağımsız olması ve tekil bir işlem gerçekleştirmesidir. Projemizde multi-thread özelliği sağlayan bir server oluşturmak için C++ Rest SDK kütüphanesini temel alan bir micro-service kullanıldı.
Controllerda, servisin HTTP Request’leri dinlemenin etkinleştirilmesi için http_listener sınıfı kullanıldı. http_listener sınıfı isteğin doğrulamasını yapar ve işlemlere devam etmek üzere controller’a aktarır, bu sayede bu istek için ayrı bir yerde işlemler devam ederken server başka bir isteği kabul etmek için hazır bulunur.
Haberleşme için gerekli olan get ve post endpointleri oluşturuldu. Server’ın yönettiği database’e kaydetme ve database’den okuma işlemlerinin tümü için bu endpointler kullanıldı.
Server arayüzünde serverden servisler aracılığıyla alınan son 7 günlük aktivite özeti grafik ile gösterilir. Her gün için aktivitelerin yüzdesi hesaplanıp birbirlerine oranları yüzde ile sütun grafiğinde gözükür.Geçmişe yönelik veri gösteriminde kullanıcının nabız bilgisinin ve vücut sıcaklığının günlük ortalaması listelenir.Yine o güne ait adım sayısı da gösterilir. Bunun yanı sıra anlık olarak aktivite bilgisi, sıcaklık, nabız ve adım sayısı da gösterilir.
Android Uygulama TasarımıAndroid 5 ve üzeri
Android uygulamamızda Bluetooth kullanarak cihazla, Wifi kullanarak ise serverla iletişimde kalındı. Cihazın bağlı olduğu her saniye uygulamamızda verilerimizi işleyip aktivitemizi belirledik ve bu sonuçları server a gönderdik. Böylelikle cihazın server a gönderemediği durumlarda cihaz bu verileri ham olarak değil de işlenmiş olarak server a göndermektedir.
Uygulama içerisinde 4 ana menü ve ara sayfalar tasarlanmıştır. Burdaki ana menüler; Aktivite Sayfası, Sensörlerin saf verileri, Bluetooth bağlantı sayfası ve bir özete sayfasından oluşmaktadır. Ara sayfalarda ise adım, basamak sayıları gibi işlenmiş veriler gösterilmektedir.
Ham Veri AnlamlandırmaServer ve Android Üzerinde
Karttan gelen ham dataları (x, y, z yönünde ivme, barometre değer ve sıcaklık) parse edip ivme ve barometre değerleri ile aktivite tahmin edilmeye çalışıldı. Bu verileri en başta toplanıp etiketleyip incelendi. Çizgi grafiği ile nasıl ayırt edilebileceğine bakıldı ve en çok etki eden parametreler ile formülize edip aktiviteler formüle edildi. İlk aktivite belirlendiğinde bunu ekrana göstermeyip ikinci gelen aktivite de aynı ise o zaman ekranda gösterilmektedir. Yürüme durumunda veya merdiven inme çıkma da ise adım sayma işlemi başarılı bir şekilde yapılmaktadır.