Daftar Isi:
- Perlengkapan
- Langkah 1: Desain Layanan & Karakteristik Kustom
- Langkah 2: Kode Arduino
- Langkah 3: Kode Android Studio
- Langkah 4: Aplikasi Akhir
Video: Bangun Pelacak Gerakan yang Dapat Dipakai (BLE Dari Arduino ke Aplikasi Android Studio Kustom): 4 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:53
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:
- Bagaimana merancang layanan dan karakteristik GATT khusus
- Cara memprogram Teman Adafruit Bluefruit LE SPI untuk bertindak sebagai server GATT untuk layanan & karakteristik khusus ini
- 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.
- Baca: Klien (Aplikasi Android) dapat membaca nilai dari Server GATT (Arduino)
- Tulis: Klien dapat mengubah nilai dari Server GATT
- Indikasi: Klien akan diberi tahu jika ada perubahan nilai dari Server GATT dan Klien diharapkan mengirimkan konfirmasi ke Server GATT
- 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:
- 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.
- 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);".
- 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
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:
Cincin Pendeteksi Kebohongan Arduino yang Dapat Dipakai: 7 Langkah
Cincin Pendeteksi Kebohongan Arduino yang Dapat Dipakai: Pertama-tama dengan…gosip☺:Tom, seorang siswa kelas 5 dari sekolah dasar. Begitu dia kembali ke rumah ditekan untuk duduk oleh ayahnya. Kemudian sang ayah mengaduk-aduk untuk waktu yang lama, akhirnya mendapatkan satu benda kecil yang tertutup debu. Ayahnya menyalakannya dan
Seni 2D Dengan LED yang Dapat Diprogram dan Basis dan Logo yang Dapat Disesuaikan: 5 Langkah (dengan Gambar)
Seni 2D Dengan LED yang Dapat Diprogram dan Basis dan Logo yang Dapat Disesuaikan: Selamat datang di instruksi! Hari ini, saya akan menunjukkan cara membuat Proyek Seni 2D dengan logo dan desain keseluruhan pilihan Anda. Saya membuat proyek ini karena dapat mengajarkan orang banyak keterampilan seperti pemrograman, pengkabelan, pemodelan 3D, dan lainnya. Ini
Penguat Pengunci Miniatur yang Dapat Dipakai (dan Sistem Sonar untuk Perangkat yang Dapat Dipakai, Dll.): 7 Langkah
Penguat Penguncian Miniatur yang Dapat Dipakai (dan Sistem Sonar untuk Perangkat yang Dapat Dikenakan, Dll.): Bangun penguat pengunci mini murah yang dapat disematkan dalam bingkai kacamata dan untuk membuat sistem penglihatan sonar untuk orang buta, atau ultrasound sederhana mesin yang terus memantau jantung Anda dan menggunakan Pembelajaran Mesin Manusia untuk memperingatkan p
Labirin Laser yang Dapat Disesuaikan Dengan Arduino dan Aplikasi Android: 13 Langkah (dengan Gambar)
Labirin Laser yang Dapat Disesuaikan Dengan Arduino dan Aplikasi Android: Lihat banyak labirin dari buku anak-anak hingga robot pemecah labirin otomatis. Di sini saya mencoba sesuatu yang berbeda di mana memecahkan labirin menggunakan refleksi laser. Ketika pada awalnya saya pikir itu sangat mudah tetapi melakukannya dengan harga murah membutuhkan lebih banyak waktu untuk akurasi. Jika ada yang ingin t
Panel Lampu Kustom yang Dapat Dipakai (Kursus Eksplorasi Teknologi - TfCD - Tu Delft): 12 Langkah (dengan Gambar)
Panel Lampu Kustom yang Dapat Dipakai (Kursus Eksplorasi Teknologi - TfCD - Tu Delft): Dalam Instruksi ini, Anda akan belajar cara membuat gambar menyala sendiri yang dapat Anda kenakan! Hal ini dilakukan dengan menggunakan teknologi EL yang dilapisi dengan stiker vinil dan memasangkan pita agar Anda dapat memakainya di lengan Anda. Anda juga dapat mengubah bagian dari p