Daftar Isi:

Bangun Pelacak Gerakan yang Dapat Dipakai (BLE Dari Arduino ke Aplikasi Android Studio Kustom): 4 Langkah
Bangun Pelacak Gerakan yang Dapat Dipakai (BLE Dari Arduino ke Aplikasi Android Studio Kustom): 4 Langkah

Video: Bangun Pelacak Gerakan yang Dapat Dipakai (BLE Dari Arduino ke Aplikasi Android Studio Kustom): 4 Langkah

Video: Bangun Pelacak Gerakan yang Dapat Dipakai (BLE Dari Arduino ke Aplikasi Android Studio Kustom): 4 Langkah
Video: Begini Detik-detik TV Analog Mulai Dimatikan | Onext Short 2024, November
Anonim
Bangun Pelacak Gerakan yang Dapat Dipakai (BLE Dari Arduino ke Aplikasi Android Studio Kustom)
Bangun Pelacak Gerakan yang Dapat Dipakai (BLE Dari Arduino ke Aplikasi Android Studio Kustom)

Bluetooth Low Energy (BLE) adalah bentuk komunikasi Bluetooth berdaya rendah. Perangkat yang dapat dikenakan, seperti pakaian pintar yang saya bantu desainnya di Predictive Wear, harus membatasi konsumsi daya sedapat mungkin untuk memperpanjang masa pakai baterai, dan sering menggunakan BLE. Bluetooth Special Interest Group (SIG) mendefinisikan beberapa spesifikasi yang harus diterapkan perangkat untuk berinteraksi dengan perangkat Bluetooth, yang mereka sebut "profil". Sebagian besar profil aplikasi menggunakan Profil Atribut Umum (GATT) untuk mengirim data melalui tautan BLE. Ada tiga konsep dasar dalam BLE: profil, layanan, dan atribut.

Bluetooth SIG telah menstandarisasi banyak profil, layanan, dan atribut umum. Namun, saat membuat perangkat keras khusus, seringkali ada kebutuhan untuk membuat layanan dan atribut khusus dan tidak banyak tutorial yang tersedia. Untuk memperumit masalah, Adafruit tidak memberikan panduan apa pun tentang merancang aplikasi seluler untuk dipasangkan dengan modul BLE mereka dan kode sumber untuk aplikasi mereka sulit untuk direkayasa balik.

Tutorial ini bertujuan untuk menjelaskan:

  1. Bagaimana merancang layanan dan karakteristik GATT khusus
  2. Cara memprogram Teman Adafruit Bluefruit LE SPI untuk bertindak sebagai server GATT untuk layanan & karakteristik khusus ini
  3. Cara memprogram perangkat Android untuk bertindak sebagai klien GATT untuk membaca data dari server GATT

Tutorial ini tidak dimaksudkan untuk diterjemahkan ke dalam aplikasi siap produksi - ini hanyalah pengantar untuk BLE.

Bacaan Latar Belakang:

  • Adafruit Bluefruit LE SPI Friend dokumentasi
  • Jika Anda tidak terbiasa dengan GATT atau BLE

Perlengkapan

  • 1x - Perangkat Arduino (Saya menggunakan UNO untuk tutorial ini)
  • 1x - Adafruit Bluefruit LE SPI Teman
  • 8x - kabel jumper pria ke pria
  • Peralatan solder dasar (untuk menyolder pin header pada SPI Sobat)
  • Komputer (untuk memprogram perangkat Arduino dan perangkat android)

Langkah 1: Desain Layanan & Karakteristik Kustom

PENGANTAR

Artikel ini menjelaskan dengan baik cara mendesain layanan & karakteristik khusus. Saya sangat merekomendasikan membaca artikel ini. Saya memberikan gambaran yang sangat sederhana di bawah ini yang mengabaikan seluk-beluk demi kesederhanaan.

Layanan GATT adalah kumpulan karakteristik.

Karakteristik GATT berisi properti, nilai, dan nol atau lebih deskriptor.

  • Properti: bagaimana data harus ditangani oleh klien (Aplikasi Android) mis. membaca, menulis, menulis tanpa tanggapan, memberitahukan, dan menunjukkan.
  • Nilai: nilai sebenarnya dari karakteristik, mis. 1089
  • Deskriptor: ini adalah informasi tentang nilai mis. satuan, milidetik

DESAIN

Oke, sekarang Anda tahu apa layanan & karakteristiknya, kita perlu mencari cara untuk merancang beberapa layanan & karakteristik untuk mendapatkan data khusus kami dan mengirimkannya dari server GATT kami (Arduino) ke klien (Aplikasi Android). Mari kita pertimbangkan perangkat Arduino yang mengumpulkan data dari modul akselerometer-giroskop (AGM). Kami ingin mengumpulkan pengukuran giroskop dan percepatan dari tiga sumbu spasial dan waktu pengukuran ini dilakukan dan mengirimkan data ini ke aplikasi seluler kami. Kami juga ingin tahu kapan kami perlu mengisi daya perangkat, jadi kami ingin membaca level baterai dan mengirimkannya ke aplikasi seluler kami.

1. Bisakah kita menggunakan salah satu layanan & karakteristik standar?

Bluetooth SIG telah menstandarisasi banyak layanan dan karakteristik umum. Pertama, periksa ini untuk melihat apakah Anda dapat mengkooptasi salah satu layanan dan karakteristik standar. Layanan dan karakteristik standar dapat menggunakan paket data yang jauh lebih kecil karena Pengidentifikasi Unik Universal (UUID) adalah 16 bit sedangkan layanan dan karakteristik khusus harus menggunakan 128 bit untuk UUID mereka. Lebih lanjut tentang UUID nanti. Dari pencarian kami, kami menemukan "layanan baterai" standar yang berisi satu karakteristik "tingkat baterai".

2. Pisahkan semua nilai data yang ingin Anda kirim melalui BLE ke dalam karakteristik dan layanan

Kami dapat memecah titik data kustom kami menjadi tujuh karakteristik kustom dalam satu layanan kustom. Kami akan menyebut layanan ini sebagai "layanan RUPS". Ini akan berisi 7 karakteristik: x-percepatan, y-percepatan, z-percepatan, x-giroskop, y-giroskop, z-giroskop, dan referensi waktu.

3. Tentukan sifat-sifat yang dibutuhkan untuk setiap karakteristik

Ada beberapa sifat yang mungkin dimiliki oleh suatu karakteristik.

  1. Baca: Klien (Aplikasi Android) dapat membaca nilai dari Server GATT (Arduino)
  2. Tulis: Klien dapat mengubah nilai dari Server GATT
  3. Indikasi: Klien akan diberi tahu jika ada perubahan nilai dari Server GATT dan Klien diharapkan mengirimkan konfirmasi ke Server GATT
  4. Notify: Client akan diberitahu jika ada perubahan nilai dari GATT Server dan Client diharapkan tidak mengirimkan konfirmasi ke GATT Server

Untuk tutorial ini, kami akan mengatur semua karakteristik kami untuk dibaca, dengan pengecualian tingkat baterai yang akan memiliki properti notifikasi dan baca.

4. Buat UUID untuk layanan & karakteristik khusus dan temukan UUID standar

Seperti yang saya sebutkan secara singkat sebelumnya, layanan dan karakteristik standar Bluetooth SIG menggunakan UUID 16 bit sedangkan layanan dan karakteristik khusus menggunakan UUID 128 bit. Misalnya, lihat nomor yang ditetapkan layanan baterai pada Bluetooth SIG. Nomor yang ditetapkan 0x180F mewakili UUID 128 bit "0000180F-0000-1000-8000-00805F9B34FB". Empat digit (16 bit) yang dicetak tebal adalah unik untuk layanan atau karakteristik standar tertentu sementara karakter lainnya disimpan di antara semua layanan dan karakteristik standar. Karena klien dan server GATT mengetahui bahwa layanan dan karakteristik standar hanya bervariasi berdasarkan angka yang dicetak tebal, ukuran paket data dapat dikurangi secara substansial. Namun, layanan dan karakteristik kustom tidak dapat beroperasi di bawah asumsi yang sama ini.

Sebagai gantinya, layanan dan karakteristik khusus harus menggunakan UUID 128 bit yang tidak disingkat. Berikut adalah generator UUID online. UUID apa pun selain UUID standar dapat diterima untuk UUID khusus. Namun, konvensi penamaan tipikal adalah untuk menunjukkan layanan kustom 00000001-… dan karakteristik dalam layanan kustom 00000002-…

Berikut adalah ringkasan spreadsheet dari layanan & karakteristik yang akan kami terapkan bersama dengan UUID mereka

Langkah 2: Kode Arduino

UPDATE BLUEFRUIT LE SPI FRIEND

Pertama, sambungkan Adafruit Bluefruit LE SPI Friend seperti yang mereka tentukan dalam panduan sambungan mereka dan nyalakan perangkat Arduino. Pastikan Anda dapat menemukan Adafruit Bluefruit LE SPI Friend di perangkat android Anda saat memindai perangkat Bluetooth. Unduh aplikasi Bluefruit Connect, sambungkan ke Adafruit Bluefruit LE SPI Friend dan izinkan untuk memperbarui firmware pada perangkat. Langkah ini penting. Jika Anda tidak memperbarui firmware, perintah yang Anda keluarkan ke perangkat melalui Arduino kemungkinan akan gagal dan tidak akan ada kesalahan yang jelas bagi Anda untuk menemukan apa masalahnya.

Di sini repo saya untuk proyek ini. Anda dapat melihat kode Arduino lengkap di sini.

GAMBARAN

Beberapa hal penting yang perlu diperhatikan:

  1. Dalam metode setup(), semua UUID khusus harus berisi "-" di antara setiap dua karakter. Misalnya, "AT+GATTADDCHAR=UUID128=00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" akan berfungsi. "AT+GATTADDCHAR=UUID128=00000005-627E-47E5-A3fCDDABD97AA966" tidak akan berfungsi.
  2. Perhatikan bahwa dalam metode setup(), "battery.begin(true);" memanggil "ble.reset();" secara otomatis. Jika Anda tidak menggunakan layanan baterai seperti yang saya miliki, Anda perlu mengatur ulang modul ble (gunakan "ble.reset();") di mana saya memiliki perintah "battery.begin(true);".
  3. Dalam metode setup(), ubah "if (!ble.begin(false))" menjadi "if (!ble.begin(true))" jika Anda ingin men-debug.

Kode ini cukup jelas. Saya menyertakan deskripsi setiap metode kustom. Metode penyiapan membuat modul BLE siap bertindak sebagai server GATT. Metode loop melewati sapuan palsu dari modul giroskop akselerometer (AGM) dan menghasilkan angka acak dari 1 hingga 100 untuk nilai-nilai ini. Baterai terkuras sebesar 1% untuk mensimulasikan penggunaan baterai. Anda dapat mengganti kode ini dengan nilai sensor yang sebenarnya dengan mudah. Kode ini mengasumsikan Anda akan mengirimkan array data RUPS, panjang 6 pengukuran, daripada pengukuran tunggal karena menganalisis jendela data RUPS kemungkinan lebih berguna daripada satu titik data. Jika Anda mengubah ukuran array, perhatikan bahwa akan ada perubahan yang diperlukan dalam kode studio Android. Untuk menangkap larik data, Anda harus melewati penghitung bersama dengan data yang ingin Anda kirim. Penghitung ini memungkinkan Anda untuk menemukan di mana Anda berada di jendela dari aplikasi studio android sehingga Anda dapat menunggu untuk mendengarkan titik data yang hilang di jendela. Tanpa penghitung atau dengan larik berukuran berbeda, proyek studio Android akan kehilangan titik data atau akan terjebak dalam lingkaran menunggu titik data tersisa yang diharapkan.

Langkah 3: Kode Android Studio

Di sini repo saya untuk proyek ini. Anda dapat melihat kode Android Studio selengkapnya di sini.

GAMBARAN

Saya akan terus memperbarui ini dengan gambaran yang lebih menyeluruh tentang bagaimana kode arduino dan android bekerja secara detail… Aplikasi ini berfungsi penuh jadi silakan lihat sendiri kodenya untuk sementara.

Langkah 4: Aplikasi Akhir

Aplikasi Akhir
Aplikasi Akhir
Aplikasi Akhir
Aplikasi Akhir
Aplikasi Akhir
Aplikasi Akhir

Selamat! Aplikasi Anda diunduh ke ponsel Anda dan perangkat wearable Anda diisi dayanya dan mentransmisikan data.

LUNCURKAN APLIKASI

Untuk memulai, klik ikon peluncur untuk aplikasi.

HIBAH IZIN

Anda harus menyetujui penggunaan beberapa izin agar aplikasi berfungsi dengan baik.

PINDAI PERANGKAT

Selanjutnya, klik tombol "Pindai" di sudut kiri atas aplikasi.

PILIH PERANGKAT WEARABLE ANDA

Selanjutnya, pilih perangkat yang dapat dikenakan Anda dari daftar perangkat BLE yang tersedia. Namanya adalah "BLE Arduino Hardware". GET DATATunggu sementara aplikasi mendapatkan data RUPS dan menentukan di mana pengguna diam atau bergerak. LIHAT HASIL ANDA Lihat hasilnya di layar! Klik tombol sinkronisasi untuk mendapatkan pembacaan data lainnya.

Direkomendasikan: