İçindekiler:

Giyilebilir Hareket İzleyici Oluşturun (Arduino'dan Özel Android Studio Uygulamasına BLE): 4 Adım
Giyilebilir Hareket İzleyici Oluşturun (Arduino'dan Özel Android Studio Uygulamasına BLE): 4 Adım

Video: Giyilebilir Hareket İzleyici Oluşturun (Arduino'dan Özel Android Studio Uygulamasına BLE): 4 Adım

Video: Giyilebilir Hareket İzleyici Oluşturun (Arduino'dan Özel Android Studio Uygulamasına BLE): 4 Adım
Video: Sağlıkta Teknolojik Atak ve Örnek Uygulamalar Blockchain & Yapay Zeka 2024, Kasım
Anonim
Giyilebilir Hareket İzleyici Oluşturun (Arduino'dan Özel Android Studio Uygulamasına BLE)
Giyilebilir Hareket İzleyici Oluşturun (Arduino'dan Özel Android Studio Uygulamasına BLE)

Bluetooth Düşük Enerji (BLE), düşük güçlü Bluetooth iletişim biçimidir. Predictive Wear'da tasarımına yardımcı olduğum akıllı giysiler gibi giyilebilir cihazlar, pil ömrünü uzatmak için mümkün olan her yerde güç tüketimini sınırlamalı ve sıklıkla BLE'yi kullanmalıdır. Bluetooth Özel İlgi Grubu (SIG), bir cihazın bir Bluetooth cihazıyla etkileşim kurmak için uygulaması gereken ve "profiller" olarak adlandırdıkları çeşitli özellikleri tanımlar. Çoğu uygulama profili, bir BLE bağlantısı üzerinden veri göndermek için Genel Nitelik Profilini (GATT) kullanır. BLE'de üç temel kavram vardır: profiller, hizmetler ve nitelikler.

Bluetooth SIG, birçok ortak profili, hizmeti ve özelliği standart hale getirmiştir. Ancak, özel donanım oluştururken, genellikle özel hizmetler ve öznitelikler oluşturmaya ihtiyaç duyulur ve pek çok öğretici mevcut değildir. Konuları daha da zorlaştırmak için Adafruit, mobil uygulamaları BLE modülleriyle eşleşecek şekilde tasarlama konusunda herhangi bir rehberlik sağlamaz ve uygulamalarının kaynak kodunu tersine mühendislik yapmak zordur.

Bu eğitim şunları açıklamayı amaçlamaktadır:

  1. Özel GATT hizmetleri ve özellikleri nasıl tasarlanır?
  2. Adafruit Bluefruit LE SPI Friend, bu özel hizmetler ve özellikler için bir GATT sunucusu görevi görecek şekilde nasıl programlanır?
  3. GATT sunucusundan verileri okumak için GATT istemcisi gibi davranacak bir Android cihazı nasıl programlanır

Bu öğreticinin üretime hazır bir uygulamaya çevrilmesi amaçlanmamıştır - bu yalnızca BLE'ye bir giriş niteliğindedir.

Arka Plan Okuma:

  • Adafruit Bluefruit LE SPI Friend belgeleri
  • GATT veya BLE hakkında bilginiz yoksa

Gereçler

  • 1x - Bir Arduino cihazı (Bu eğitim için UNO kullanıyorum)
  • 1x - Adafruit Bluefruit LE SPI Arkadaş
  • 8x - erkekten erkeğe atlama telleri
  • Temel lehimleme ekipmanı (SPI Friend'deki başlık pinlerini lehimlemek için)
  • Bir bilgisayar (Arduino cihazını ve android cihazını programlamak için)

1. Adım: Özel Hizmetler ve Özellikler Tasarlayın

GİRİŞ

Bu makale, özel hizmetlerin ve özelliklerin nasıl tasarlanacağını açıklayan harika bir iş çıkarıyor. Bu makaleyi okumanızı şiddetle tavsiye ederim. Aşağıda basitlik lehine incelikleri ihmal eden çok basit bir genel bakış sunuyorum.

GATT Hizmetleri bir özellikler topluluğudur.

GATT Özellikleri bir özellik, bir değer ve sıfır veya daha fazla tanımlayıcı içerir.

  • Özellik: verilerin istemci tarafından nasıl ele alınması gerektiği (Android Uygulaması), ör. okuma, yazma, yanıt vermeden yazma, bildirme ve belirtme.
  • Değer: özelliğin gerçek değeri örn. 1089
  • Tanımlayıcılar: Bu, değerle ilgili bilgilerdir, örn. birim, milisaniye

TASARIM

Tamam, artık hizmetlerin ve özelliklerin ne olduğunu biliyorsunuz, özel verilerimizi almak ve bunları GATT sunucumuzdan (Arduino) istemciye (Android Uygulaması) göndermek için bazı hizmetleri ve özellikleri nasıl tasarlayacağımızı bulmamız gerekiyor. İvmeölçer-jiroskop modülünden (AGM) veri toplayan bir Arduino cihazı düşünelim. Üç uzaysal eksenden jiroskop ve ivme ölçümlerini ve bu ölçümlerin yapıldığı zamanı toplayıp bu verileri mobil uygulamamıza iletmek istiyoruz. Ayrıca cihazı ne zaman şarj etmemiz gerektiğini bilmek istiyoruz, bu yüzden pil seviyesini okumak ve bunu mobil uygulamamıza iletmek istiyoruz.

1. Standart hizmet ve özelliklerden herhangi birini kullanabilir miyiz?

Bluetooth SIG, birçok ortak hizmeti ve özelliği standart hale getirmiştir. İlk olarak, standartlaştırılmış hizmetlerden ve özelliklerden herhangi birini seçip seçemeyeceğinizi görmek için bunları kontrol edin. Evrensel Benzersiz Tanımlayıcı (UUID) 16 bit olduğundan standart hizmetler ve özellikler çok daha küçük veri paketlerini kullanabilirken özel hizmetler ve özellikler kendi UUID'leri için 128 bit kullanmalıdır. UUID'ler hakkında daha sonra. Aramamızdan, bir karakteristik "pil seviyesi" içeren standart bir "pil hizmeti" bulduk.

2. BLE üzerinden göndermek istediğiniz tüm veri değerlerini özelliklere ve hizmetlere ayırın

Özel veri noktalarımızı tek bir özel hizmet içinde yedi özel özelliğe ayırabiliriz. Bu hizmeti "AGM hizmeti" olarak adlandıracağız. 7 özellik içerecektir: x ivmesi, y ivmesi, z ivmesi, x-jiroskop, y-jiroskop, z-jiroskop ve zaman referansı.

3. Her bir özellik için gereken özellikleri belirleyin

Bir özelliğin sahip olabileceği birkaç özellik vardır.

  1. Oku: İstemci (Android Uygulaması) GATT Sunucusundan (Arduino) bir değer okuyabilir
  2. Yaz: İstemci, GATT Sunucusundan bir değeri değiştirebilir
  3. Belirtin: GATT Sunucusundan bir değer değişirse Müşteriye bilgi verilir ve Müşterinin GATT Sunucusuna onay göndermesi beklenir
  4. Bildir: GATT Sunucusunda bir değer değişirse ve Müşterinin GATT Sunucusuna onay göndermesi beklenmiyorsa Müşteri bilgilendirilecektir.

Bu eğitim için, hem bildirim hem de okuma özelliklerine sahip olacak pil seviyesi dışında tüm özelliklerimizi okunacak şekilde ayarlayacağız.

4. Özel hizmetler ve özellikler için UUID'ler oluşturun ve standart UUID'leri bulun

Daha önce kısaca bahsettiğim gibi, Bluetooth SIG standartlaştırılmış hizmetleri ve özellikleri 16 bit UUID kullanırken özel hizmetler ve özellikler 128 bit UUID'leri kullanır. Örneğin, Bluetooth SIG'de pil hizmetine atanan numaraya bakın. Atanan 0x180F numarası, 128 bit UUID "0000180F-0000-1000-8000-00805F9B34FB"'yi temsil eder. Kalın harflerle yazılmış dört rakam (16 bit), belirli standartlaştırılmış hizmete veya özelliğe özgüdür, diğer karakterler ise tüm standartlaştırılmış hizmetler ve özellikler arasında korunur. Hem istemci hem de GATT sunucusu, standartlaştırılmış hizmetlerin ve özelliklerin yalnızca kalın harflerle değiştiğini bildiğinden, veri paket boyutları önemli ölçüde azaltılabilir. Ancak, gümrük hizmetleri ve özellikleri bu aynı varsayım altında çalışamaz.

Bunun yerine, özel hizmetler ve özellikler, kısaltılmamış 128 bit UUID'leri kullanmalıdır. İşte çevrimiçi bir UUID oluşturucu. Standartlaştırılmış UUID dışındaki herhangi bir UUID, özel bir UUID için kabul edilebilir. Ancak, tipik bir adlandırma kuralı, 00000001-… özel hizmetini ve bu özel hizmet 00000002-… içindeki özellikleri belirtmektir.

UUID'leriyle birlikte uygulayacağımız hizmetlerin ve özelliklerin özet bir elektronik tablosu burada

Adım 2: Arduino Kodu

BLUEFRUIT LE SPI FRIEND'I GÜNCELLE

İlk olarak Adafruit Bluefruit LE SPI Friend'i bağlantı kılavuzlarında belirttiği şekilde bağlayın ve Arduino cihazını çalıştırın. Bluetooth cihazlarını tararken android cihazınızda Adafruit Bluefruit LE SPI Friend'i bulabildiğinizden emin olun. Bluefruit Connect uygulamasını indirin, Adafruit Bluefruit LE SPI Friend'e bağlanın ve cihazdaki bellenimi güncellemesine izin verin. Bu adım önemlidir. Firmware'i güncellemezseniz, cihaza Arduino üzerinden verdiğiniz komutlar muhtemelen başarısız olacak ve sorunun ne olduğunu keşfetmeniz için bariz bir hata olmayacak.

İşte bu proje için repom. Arduino kodunun tamamını burada görebilirsiniz.

GENEL BAKIŞ

Dikkat edilmesi gereken birkaç önemli nokta:

  1. setup() yönteminde, tüm özel UUID'ler her iki karakter arasında "-" içermelidir. Örneğin, "AT+GATTADDCHAR=UUID128=00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" çalışacaktır. "AT+GATTADDCHAR=UUID128=00000005-627E-47E5-A3fCDDABD97AA966" çalışmayacak.
  2. setup() yönteminde "battery.begin(true);" olduğuna dikkat edin. "ble.reset();" çağırır otomatik olarak. Pil hizmetini benim kullandığım gibi kullanmıyorsanız, "battery.begin(true);" komutuna sahip olduğum ble modülünü ("ble.reset();" kullanın) sıfırlamanız gerekir.
  3. setup() yönteminde, hata ayıklamak istiyorsanız "if (!ble.begin(false))" öğesini "if (!ble.begin(true))" olarak değiştirin.

Bu kod oldukça açıklayıcıdır. Her özel yöntemin açıklamalarını ekledim. Kurulum yöntemi, BLE modülünü GATT sunucusu olarak çalışmaya hazır hale getirir. Döngü yöntemi, ivmeölçer jiroskop modülünün (AGM) sahte taramasından geçer ve bu değerler için 1'den 100'e kadar rastgele bir sayı üretir. Pil kullanımını simüle etmek için pil %1 oranında boşalır. Bu kodu gerçek sensör değerleriyle kolayca değiştirebilirsiniz. Bu kod, tek bir ölçüm yerine 6 ölçüm uzunluğunda bir AGM verisi dizisi ileteceğinizi varsayar, çünkü bir AGM verisi penceresinin analizi tek bir veri noktasından daha faydalı olabilir. Dizi boyutunu değiştirirseniz, Android stüdyo kodunda gerekli değişikliklerin olacağını unutmayın. Bir dizi veriyi yakalamak için, göndermeyi düşündüğünüz verilerle birlikte bir sayaç iletmelisiniz. Bu sayaç, android stüdyo uygulamasından pencerede nerede olduğunuzu bulmanızı sağlar, böylece penceredeki eksik veri noktalarını dinlemek için bekleyebilirsiniz. Sayaç olmadan veya farklı büyüklükte bir diziyle, android stüdyo projesi ya veri noktalarını kaçıracak ya da beklediği kalan veri noktalarını bekleyen bir döngüde takılacak.

3. Adım: Android Studio Kodu

İşte bu proje için repom. Tam Android Studio kodunu burada görebilirsiniz.

GENEL BAKIŞ

Bunu, arduino ve android kodunun ayrıntılı olarak nasıl çalıştığına dair daha kapsamlı bir genel bakışla güncellemeye devam edeceğim… Uygulama tamamen işlevseldir, bu arada koda kendiniz bakmaktan çekinmeyin.

4. Adım: Son Başvuru

Son Başvuru
Son Başvuru
Son Başvuru
Son Başvuru
Son Başvuru
Son Başvuru

Tebrikler! Uygulamanız telefonunuza indirilir ve giyilebilir cihazınız şarj edilir ve veri iletir.

UYGULAMAYI BAŞLAT

Başlamak için uygulamanın başlatıcı simgesine tıklayın.

HİBE İZİNLERİ

Uygulamanın düzgün çalışması için bazı izinlerin kullanımını onaylamanız gerekecek.

CİHAZLARI TARAMA

Ardından, uygulamanın sol üst köşesindeki "Tara" düğmesine tıklayın.

GİYİLEBİLİR CİHAZINIZI SEÇİN

Ardından, mevcut BLE cihazları listesinden giyilebilir cihazınızı seçin. Adı "BLE Arduino Hardware"dir. VERİ ALIN Uygulama AGM verilerini alırken ve kullanıcının nerede hareket ettiğini veya hareket ettiğini belirlerken bekleyin. SONUÇLARINIZI GÖRÜNSonuçları ekrandan kontrol edin! Başka bir veri okuması almak için eşitleme düğmesini tıklayın.

Önerilen: