Isi kandungan:

Bina Tracker Gerak Boleh Dipakai (BLE Dari Arduino ke Aplikasi Studio Android Custom): 4 Langkah
Bina Tracker Gerak Boleh Dipakai (BLE Dari Arduino ke Aplikasi Studio Android Custom): 4 Langkah

Video: Bina Tracker Gerak Boleh Dipakai (BLE Dari Arduino ke Aplikasi Studio Android Custom): 4 Langkah

Video: Bina Tracker Gerak Boleh Dipakai (BLE Dari Arduino ke Aplikasi Studio Android Custom): 4 Langkah
Video: Kecurangan penjual gas elpiji!!!!! 2024, November
Anonim
Bina Tracker Gerak Boleh Dipakai (BLE Dari Arduino ke Aplikasi Android Studio Custom)
Bina Tracker Gerak Boleh Dipakai (BLE Dari Arduino ke Aplikasi Android Studio Custom)

Tenaga Rendah Bluetooth (BLE) adalah bentuk komunikasi Bluetooth kuasa rendah. Peranti yang boleh dipakai, seperti pakaian pintar yang saya bantu reka di Predictive Wear, mesti menghadkan penggunaan kuasa sedapat mungkin untuk memanjangkan hayat bateri, dan sering menggunakan BLE. Kumpulan Kepentingan Khas Bluetooth (SIG) menentukan beberapa spesifikasi yang harus dilaksanakan oleh peranti untuk berinteraksi dengan peranti Bluetooth, yang mereka sebut "profil". Sebilangan besar profil aplikasi menggunakan Profil Atribut Umum (GATT) untuk menghantar data melalui pautan BLE. Terdapat tiga konsep asas dalam BLE: profil, perkhidmatan, dan atribut.

Bluetooth SIG telah menyeragamkan banyak profil, perkhidmatan, dan atribut umum. Namun, ketika membuat perkakasan tersuai, seringkali perlu membuat perkhidmatan dan atribut khusus dan tidak banyak tutorial tersedia. Untuk membuat masalah menjadi lebih sukar, Adafruit tidak memberikan panduan untuk merancang aplikasi mudah alih untuk dipasangkan dengan modul BLE mereka dan kod sumber untuk aplikasi mereka sukar dibuat semula.

Tutorial ini bertujuan untuk menerangkan:

  1. Cara merancang perkhidmatan dan ciri GATT tersuai
  2. Cara memprogram Adafruit Bluefruit LE SPI Friend untuk bertindak sebagai pelayan GATT untuk perkhidmatan & ciri khas ini
  3. Cara memprogram peranti Android untuk bertindak sebagai klien GATT untuk membaca data dari pelayan GATT

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

Bacaan Latar Belakang:

  • Dokumentasi Adafruit Bluefruit LE SPI Friend
  • Sekiranya anda tidak biasa dengan GATT atau BLE

Bekalan

  • 1x - Peranti Arduino (saya menggunakan UNO untuk tutorial ini)
  • 1x - Adafruit Bluefruit LE SPI Rakan
  • 8x - wayar jumper lelaki ke lelaki
  • Peralatan pematerian asas (untuk memasang pin header pada SPI Friend)
  • Komputer (untuk memprogram peranti Arduino dan peranti android)

Langkah 1: Reka Perkhidmatan & Karakteristik Tersuai

PENGENALAN

Artikel ini memberikan pekerjaan yang baik untuk menjelaskan bagaimana merancang perkhidmatan & ciri khas. Saya sangat mengesyorkan membaca artikel ini. Saya memberikan gambaran umum yang sangat sederhana di bawah ini yang mengabaikan kehalusan yang lebih baik daripada kesederhanaan.

Perkhidmatan GATT adalah kumpulan ciri.

Ciri-ciri GATT mengandungi sifat, nilai, dan penerangan sifar atau lebih.

  • Harta: bagaimana data harus dikendalikan oleh pelanggan (Aplikasi Android) mis. membaca, menulis, menulis tanpa respons, memberitahu, dan menunjukkan.
  • Nilai: nilai sebenar ciri cth. 1089
  • Penerangan: ini adalah maklumat mengenai nilai mis. unit, milisaat

REKA BENTUK

Baiklah, sekarang anda tahu apa itu perkhidmatan & ciri, kita perlu memikirkan bagaimana merancang beberapa perkhidmatan & ciri untuk mendapatkan data tersuai dan menghantarnya dari pelayan GATT (Arduino) kepada pelanggan (Aplikasi Android). Mari kita pertimbangkan peranti Arduino yang mengumpulkan data dari modul accelerometer-gyroscope (AGM). Kami ingin mengumpulkan ukuran giroskop dan pecutan dari tiga paksi spasial dan masa pengukuran ini diambil dan menghantar data ini ke aplikasi mudah alih kami. Kami juga ingin mengetahui kapan kami perlu mengecas peranti, jadi kami ingin membaca tahap bateri dan menghantarnya ke aplikasi mudah alih kami.

1. Bolehkah kita menggunakan mana-mana perkhidmatan & ciri standard?

Bluetooth SIG telah menyeragamkan banyak perkhidmatan dan ciri umum. Pertama, periksa ini untuk melihat apakah anda boleh memilih mana-mana perkhidmatan dan ciri standard. Perkhidmatan dan ciri standard boleh menggunakan paket data yang jauh lebih kecil kerana Pengenal Unik Secara Universal (UUID) adalah 16 bit sementara perkhidmatan dan ciri khas mesti menggunakan 128 bit untuk UUID mereka. Lebih banyak mengenai UUID kemudian. Dari carian kami, kami menemui "perkhidmatan bateri" standard yang mengandungi satu "tahap bateri" ciri.

2. Pisahkan semua nilai data yang ingin anda kirimkan ke BLE menjadi ciri dan perkhidmatan

Kami dapat membahagikan titik data khusus kami menjadi tujuh ciri khas dalam satu perkhidmatan khusus. Kami akan memanggil perkhidmatan ini sebagai "perkhidmatan AGM". Ini akan mengandungi 7 ciri: pecutan-x, pecutan-y, pecutan-z, x-giroskop, y-giroskop, z-giroskop, dan rujukan waktu.

3. Tentukan sifat yang diperlukan untuk setiap ciri

Terdapat beberapa sifat yang mungkin dimiliki oleh suatu ciri.

  1. Baca: Pelanggan (Aplikasi Android) dapat membaca nilai dari Pelayan GATT (Arduino)
  2. Tulis: Pelanggan boleh mengubah nilai dari Pelayan GATT
  3. Nyatakan: Pelanggan akan diberitahu jika nilai berubah dari Pelayan GATT dan Pelanggan dijangka akan menghantar pengesahan ke Pelayan GATT
  4. Beritahu: Pelanggan akan diberitahu jika nilai berubah dari Pelayan GATT dan Klien tidak diharapkan untuk menghantar pengesahan ke Pelayan GATT

Untuk tutorial ini, kami akan menetapkan semua ciri kami untuk dibaca, dengan pengecualian tahap bateri yang mempunyai sifat memberitahu dan membaca.

4. Hasilkan UUID untuk perkhidmatan & ciri khas dan cari UUID standard

Seperti yang saya nyatakan sebentar tadi, perkhidmatan dan ciri standard Bluetooth SIG menggunakan UUID 16 bit sementara perkhidmatan dan ciri khas menggunakan UUID 128 bit. Sebagai contoh, lihat nombor perkhidmatan bateri yang diberikan pada Bluetooth SIG. Nombor yang diberi 0x180F mewakili UUID 128 bit "0000180F-0000-1000-8000-00805F9B34FB". Empat digit (16 bit) dalam huruf tebal adalah unik untuk perkhidmatan atau ciri standard tertentu sementara watak lain dipelihara antara semua perkhidmatan dan ciri standard. Oleh kerana kedua-dua pelanggan dan pelayan GATT tahu bahawa perkhidmatan dan ciri standard hanya berbeza mengikut angka yang tebal, ukuran data paket dapat dikurangkan dengan ketara. Walau bagaimanapun, perkhidmatan dan ciri khas tidak dapat beroperasi dengan anggapan yang sama.

Sebaliknya, perkhidmatan dan ciri khas mesti menggunakan UUID 128 bit yang tidak disingkat. Berikut adalah penjana UUID dalam talian. Sebarang UUID selain UUID standard boleh diterima untuk UUID tersuai. Walau bagaimanapun, satu konvensyen penamaan khas adalah untuk menunjukkan perkhidmatan khusus 00000001-… dan ciri-ciri dalam perkhidmatan khusus tersebut 00000002-…

Berikut adalah hamparan ringkasan perkhidmatan & ciri yang akan kami laksanakan bersama dengan UUID mereka

Langkah 2: Kod Arduino

KEMASKINI RAKAN BLUEFRUIT LE SPI

Pertama, sambungkan Adafruit Bluefruit LE SPI Friend seperti yang mereka nyatakan dalam panduan penyambungan mereka dan aktifkan peranti Arduino. Pastikan anda dapat menemui Adafruit Bluefruit LE SPI Friend pada peranti android anda semasa mengimbas peranti Bluetooth. Muat turun aplikasi Bluefruit Connect, sambungkan ke Adafruit Bluefruit LE SPI Friend dan biarkan ia mengemas kini firmware pada peranti. Langkah ini penting. Sekiranya anda tidak mengemas kini firmware, perintah yang anda keluarkan melalui Arduino kemungkinan akan gagal dan tidak akan ada kesalahan yang jelas bagi anda untuk mengetahui apa masalahnya.

Inilah repo saya untuk projek ini. Anda boleh melihat kod Arduino penuh di sini.

TINJAUAN KESELURUHAN

Beberapa perkara penting yang perlu diperhatikan:

  1. Dalam kaedah setup (), semua UUID khusus mesti mengandungi "-" antara setiap dua watak. Contohnya, "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 bahawa dalam kaedah setup (), "battery.begin (true);" memanggil "ble.reset ();" secara automatik. Sekiranya anda tidak menggunakan perkhidmatan bateri seperti yang saya ada, anda perlu menetapkan semula modul ble (gunakan "ble.reset ();") di mana saya mempunyai perintah "battery.begin (true);".
  3. Dalam kaedah setup (), ubah "if (! Ble.begin (false))" menjadi "if (! Ble.begin (true))" jika anda mahu melakukan debug.

Kod ini cukup jelas. Saya memasukkan penerangan setiap kaedah khusus. Kaedah penyediaan menjadikan modul BLE siap bertindak sebagai pelayan GATT. Kaedah gelung menggunakan sapu palsu modul giroskop accelerometer (AGM) dan menghasilkan nombor rawak dari 1 hingga 100 untuk nilai-nilai ini. Bateri dikeringkan sebanyak 1% untuk mensimulasikan penggunaan bateri. Anda boleh mengganti kod ini dengan nilai sensor sebenar dengan mudah. Kod ini menganggap anda akan mengirimkan pelbagai data AGM, panjang 6 pengukuran, dan bukan satu pengukuran kerana menganalisis tetingkap data AGM kemungkinan lebih berguna daripada satu titik data. Sekiranya anda mengubah ukuran array, perhatikan bahawa akan ada perubahan yang diperlukan dalam kod studio android. Untuk menangkap pelbagai data, anda mesti melewati kaunter beserta data yang ingin anda hantar. Kaunter ini membolehkan anda mencari di mana anda berada di tetingkap dari aplikasi studio android sehingga anda boleh menunggu untuk mendengar titik data yang hilang di tetingkap. Tanpa kaunter atau dengan susunan bersaiz yang berbeza, projek studio android akan kehilangan titik data atau akan terjebak dalam lingkaran menunggu baki titik data yang diharapkannya.

Langkah 3: Kod Android Studio

Inilah repo saya untuk projek ini. Anda dapat melihat kod Android Studio penuh di sini.

TINJAUAN KESELURUHAN

Saya akan terus mengemas kini ini dengan gambaran keseluruhan yang lebih terperinci mengenai bagaimana kod arduino dan android berfungsi secara terperinci… Aplikasi ini berfungsi sepenuhnya jadi jangan ragu untuk melihat kod itu sendiri untuk sementara waktu.

Langkah 4: Permohonan Akhir

Permohonan Akhir
Permohonan Akhir
Permohonan Akhir
Permohonan Akhir
Permohonan Akhir
Permohonan Akhir

Tahniah! Aplikasi anda dimuat turun ke telefon anda dan peranti anda yang dikenakan boleh dicas dan menghantar data.

Lancarkan APLIKASI

Untuk memulakan, klik pada ikon pelancar untuk aplikasi tersebut.

KEBENARAN HADIAH

Anda perlu menyetujui penggunaan beberapa kebenaran agar aplikasi berfungsi dengan baik.

Imbasan untuk alat

Seterusnya, klik pada butang "Imbas" di sudut kiri atas aplikasi.

PILIH PERANGKAT WEARABLE ANDA

Seterusnya, pilih peranti boleh pakai anda dari senarai peranti BLE yang tersedia. Namanya "BLE Arduino Hardware". DAPATKAN DATAW Tunggu sementara aplikasi mendapat data AGM dan menentukan di mana pengguna masih atau bergerak. LIHAT HASIL ANDA Lihat hasilnya di skrin! Klik butang penyegerakan untuk mendapatkan bacaan data yang lain.

Disyorkan: