Mundarija:

Kiyinadigan harakatni kuzatuvchini yarating (Arduino -dan Android Studio -ning maxsus ilovasiga BLE): 4 qadam
Kiyinadigan harakatni kuzatuvchini yarating (Arduino -dan Android Studio -ning maxsus ilovasiga BLE): 4 qadam

Video: Kiyinadigan harakatni kuzatuvchini yarating (Arduino -dan Android Studio -ning maxsus ilovasiga BLE): 4 qadam

Video: Kiyinadigan harakatni kuzatuvchini yarating (Arduino -dan Android Studio -ning maxsus ilovasiga BLE): 4 qadam
Video: Щенки - ранняя стимуляция, обогащенная среда, социализация. Что нужно знать о щенках. Щенок 2024, Noyabr
Anonim
Kiyinadigan harakatni kuzatuvchini yarating (Arduino -dan Android Studio -ning maxsus ilovasiga qadar)
Kiyinadigan harakatni kuzatuvchini yarating (Arduino -dan Android Studio -ning maxsus ilovasiga qadar)

Bluetooth past energiyasi (BLE) - bu past quvvatli Bluetooth aloqasi. Kiyinadigan qurilmalar, xuddi aqlli kiyimlar kabi, men Predictive Wear dizaynida, batareyaning ishlash muddatini uzaytirish uchun iloji boricha quvvat sarfini cheklashi va BLEdan tez -tez foydalanishi kerak. Bluetooth maxsus qiziqish guruhi (SIG) "profil" deb ataydigan Bluetooth qurilmasi bilan ishlash uchun qurilma bajarishi kerak bo'lgan bir nechta texnik xususiyatlarni belgilaydi. Ko'pgina dastur profillari BLE havolasi orqali ma'lumotlarni yuborish uchun umumiy atribut profilidan (GATT) foydalanadi. BLEda uchta asosiy tushuncha mavjud: profillar, xizmatlar va atributlar.

Bluetooth SIG ko'plab umumiy profillarni, xizmatlarni va atributlarni standartlashtirdi. Biroq, maxsus uskunalar yaratishda ko'pincha maxsus xizmatlar va atributlar yaratishga ehtiyoj seziladi va ko'p qo'llanmalar mavjud emas. Vaziyatni murakkablashtirish uchun, Adafruit BLE modullari bilan bog'lanish uchun mobil ilovalarni loyihalash bo'yicha hech qanday ko'rsatma bermaydi va ularning ilovalari uchun manba kodini o'zgartirish qiyin.

Bu darslik quyidagilarni tushuntirishga qaratilgan

  1. Maxsus GATT xizmatlari va xususiyatlarini qanday loyihalash mumkin
  2. Adafruit Bluefruit LE SPI Friend -ni ushbu maxsus xizmatlar va xususiyatlar uchun GATT -server sifatida qanday dasturlash mumkin.
  3. GATT serveridan ma'lumotlarni o'qish uchun Android qurilmasini GATT mijozi sifatida qanday dasturlash mumkin

Bu qo'llanma ishlab chiqarishga tayyor bo'lgan ilovaga tarjima qilinmaydi - bu shunchaki BLE -ga kirish.

Fonni o'qish:

  • Adafruit Bluefruit LE SPI Friend hujjatlari
  • Agar siz GATT yoki BLE bilan tanish bo'lmasangiz

Ta'minotlar

  • 1x - Arduino qurilmasi (men bu qo'llanmada UNOdan foydalanaman)
  • 1x - Adafruit Bluefruit LE SPI do'sti
  • 8x - erkakdan erkakgacha o'tish simlari
  • Lehimlashning asosiy uskunalari (SPI Friend -dagi sarlavhali pimlarga)
  • Kompyuter (Arduino va android qurilmalarini dasturlash uchun)

1 -qadam: Maxsus xizmatlar va xususiyatlarni loyihalash

KIRISH

Ushbu maqola maxsus xizmatlar va xususiyatlarni qanday ishlab chiqishni tushuntirib beradigan ajoyib ish. Men ushbu maqolani o'qishni juda tavsiya qilaman. Men quyida juda oddiy sharh beraman, u oddiylik foydasiga nozikliklarni e'tiborsiz qoldiradi.

GATT xizmatlari - bu xususiyatlar to'plami.

GATT xarakteristikasida xususiyat, qiymat va nol yoki undan ortiq tavsiflovchi mavjud.

  • Mulk: ma'lumotlar mijoz bilan qanday ishlashi kerakligi (Android ilovasi), masalan. o'qish, yozish, javobsiz yozish, xabar berish va ko'rsatish.
  • Qiymat: xarakteristikaning haqiqiy qiymati, masalan. 1089
  • Deskriptorlar: bu qiymat haqidagi ma'lumotlar, masalan. birlik, millisekund

DIZAYN

Xo'sh, endi siz qanday xizmatlar va xususiyatlar borligini bilasiz, biz o'z ma'lumotlarimizni olish va GATT serverimizdan (Arduino) mijozga (Android App) yuborish uchun qanday xizmatlar va xususiyatlarni qanday ishlab chiqish kerakligini aniqlashimiz kerak. Keling, akselerometr-giroskop modulidan (AGM) ma'lumotlarni yig'adigan Arduino qurilmasini ko'rib chiqaylik. Biz uchta fazoviy o'qdan giroskop va tezlanish o'lchovlarini yig'ishni va bu o'lchovlar olingan vaqtni yig'ishni va ushbu ma'lumotlarni mobil ilovamizga uzatishni xohlaymiz. Shuningdek, biz qurilmani qachon zaryad qilish kerakligini bilmoqchimiz, shuning uchun biz batareya quvvatini o'qib, uni mobil ilovamizga uzatmoqchimiz.

1. Biz standart xizmatlar va xususiyatlardan birini ishlata olamizmi?

Bluetooth SIG ko'plab umumiy xizmatlar va xususiyatlarni standartlashtirdi. Birinchidan, standartlashtirilgan xizmatlar va xususiyatlardan birini tanlashingiz mumkinligini bilish uchun ularni tekshiring. Standart xizmatlar va xarakteristikalar ancha kichik ma'lumotlar paketlarini ishlatishi mumkin, chunki Umumjahon yagona identifikatori (UUID) 16 bitni tashkil etadi, maxsus xizmatlar va xususiyatlar esa UUID uchun 128 bitdan foydalanishi kerak. UUIDlar haqida keyinroq. Qidiruvimiz natijasida biz standart "batareya xizmati" ni topdik, unda bitta "batareya darajasi" mavjud.

2. BLE orqali yubormoqchi bo'lgan barcha ma'lumotlar qiymatlarini xususiyatlar va xizmatlarga ajrating

Biz bitta maxsus xizmatda o'z shaxsiy ma'lumotlar nuqtalarini ettita maxsus xususiyatlarga bo'lishimiz mumkin. Biz bu xizmatni "AGM xizmati" deb ataymiz. U 7 ta xususiyatni o'z ichiga oladi: x-tezlanish, y-tezlanish, z-tezlanish, x-giroskop, y-giroskop, z-giroskop va vaqtga mos yozuvlar.

3. Har bir xarakteristikaga kerakli xususiyatlarni aniqlang

Xususiyat bo'lishi mumkin bo'lgan bir nechta xususiyatlar mavjud.

  1. O'qing: mijoz (Android ilovasi) GATT serveridan (Arduino) qiymat o'qishi mumkin.
  2. Yozish: mijoz GATT serveridan qiymatni o'zgartirishi mumkin
  3. Belgilang: agar GATT serveridan qiymat o'zgarsa va mijoz GATT serveriga tasdiq yuborishi kutilsa, mijozga xabar beriladi.
  4. Xabar bering: agar GATT serveridan qiymat o'zgarsa va mijoz GATT serveriga tasdiqnoma yuborishi kutilmasa, mijozga xabar beriladi.

Ushbu qo'llanma uchun biz barcha xususiyatlarimizni o'qish uchun o'rnatamiz, bundan tashqari, xabarnoma va o'qish xususiyatlariga ega bo'lgan batareya quvvati darajasi bundan mustasno.

4. Maxsus xizmatlar va xususiyatlar uchun UUID -larni yarating va standart UUID -larni toping

Yuqorida aytib o'tganimdek, Bluetooth SIG standartlashtirilgan xizmatlari va xususiyatlari 16 bitli UUIDdan, maxsus xizmatlar va xususiyatlar esa 128 bitli UUIDdan foydalanadi. Masalan, Bluetooth SIG -da batareya xizmatining tayinlangan raqamini ko'ring. Belgilangan 0x180F raqami "0000180F-0000-1000-8000-00805F9B34FB" 128 bitli UUIDni ko'rsatadi. Qalin harflar bilan yozilgan to'rtta raqam (16 bit) ma'lum standartlashtirilgan xizmat yoki xarakteristikaga xosdir, qolgan belgilar esa barcha standart xizmatlar va xususiyatlar o'rtasida saqlanadi. Mijoz ham, GATT serveri ham standart xizmatlar va xarakteristikalar faqat qalin harflar bilan farqlanishini bilgani uchun, ma'lumotlar paketlarining o'lchamlarini sezilarli darajada kamaytirish mumkin. Biroq, odatiy xizmatlar va xususiyatlar xuddi shu taxmin asosida ishlay olmaydi.

Buning o'rniga, maxsus xizmatlar va xususiyatlar qisqartirilmagan 128 bitli UUIDdan foydalanishi kerak. Bu erda onlayn UUID generatori. Foydalanuvchi UUID uchun standart UUIDdan boshqa har qanday UUID qabul qilinadi. Biroq, odatiy nomlash konventsiyasi-bu 00000001-… maxsus xizmatini va 00000002-… maxsus xizmatining xususiyatlarini ko'rsatish.

Bu erda biz UUID -lari bilan birga amalga oshiriladigan xizmatlar va xususiyatlarning qisqacha jadvalini keltiramiz

2 -qadam: Arduino kodi

BLUEFRUIT LE SPI FRIEND -ni yangilang

Birinchidan, Adafruit Bluefruit LE SPI Friend -ni ulang, ular o'z yo'riqnomasida ko'rsatilgandek va Arduino qurilmasini yoqadi. Adafruit Bluefruit LE SPI Friend ni Bluetooth qurilmalarini skanerlashda android qurilmangizda topishingizga ishonch hosil qiling. Bluefruit Connect ilovasini yuklab oling, Adafruit Bluefruit LE SPI Friend -ga ulaning va unga qurilmadagi dasturiy ta'minotni yangilashga ruxsat bering. Bu qadam muhim ahamiyatga ega. Agar siz dasturiy ta'minotni yangilamasangiz, Arduino orqali qurilmani chiqaradigan buyruqlar bajarilmasligi mumkin va muammo nima ekanligini aniqlashda aniq xato bo'lmaydi.

Mana bu loyiha uchun repo. Arduino kodini to'liq ko'rishingiz mumkin.

UMUMIY

E'tibor qilish kerak bo'lgan bir nechta muhim narsalar:

  1. Setup () usulida barcha maxsus UUID-lar har ikki belgi orasida "-" belgisini o'z ichiga olishi kerak. Masalan, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" ishlaydi. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" ishlamaydi.
  2. E'tibor bering, setup () usulida "battery.begin (true);" qo'ng'iroqlar "ble.reset ();" avtomatik ravishda. Agar siz batareya xizmatidan men kabi foydalanmasangiz, ble modulini tiklashingiz kerak ("ble.reset ();" dan foydalaning), menda "battery.begin (rost);").
  3. O'rnatish () usulida, agar disk raskadrovka qilmoqchi bo'lsangiz, "if (! Ble.begin (false))" "if (! Ble.begin (true))" ga o'zgartiring.

Bu kod o'z-o'zidan tushunarli. Men har bir maxsus usulning tavsiflarini qo'shdim. O'rnatish usuli BLE modulini GATT serveri sifatida ishlashga tayyor qiladi. Loop usuli akselerometr gyroskop modulini (AGM) soxta tozalashdan o'tadi va bu qiymatlar uchun 1 dan 100 gacha tasodifiy sonni hosil qiladi. Batareyadan foydalanishni taqlid qilish uchun batareyaning quvvati 1% ga kamayadi. Siz ushbu kodni haqiqiy sensor qiymatlari bilan osongina almashtirishingiz mumkin. Bu kod sizga bitta o'lchov o'rniga 6 o'lchovli AGM ma'lumotlarini uzatishni nazarda tutadi, chunki AGM ma'lumotlari oynasini tahlil qilish bitta ma'lumotdan ko'ra foydali bo'lishi mumkin. Agar siz massiv hajmini o'zgartirsangiz, Android studiya kodiga o'zgartirishlar kiritilishini unutmang. Ma'lumotlar to'plamini olish uchun siz hisoblagichni yubormoqchi bo'lgan ma'lumotlar bilan birga topshirishingiz kerak. Bu hisoblagich sizga android studio dasturidan oynada qaerda ekanligingizni topishga imkon beradi, shuning uchun siz oynada yo'qolgan ma'lumotlar nuqtalarini tinglashni kutishingiz mumkin. Hisoblagichsiz yoki boshqa o'lchamdagi massivsiz, android studiyasi loyihasi ma'lumot punktlarini o'tkazib yuboradi yoki kutilgan qolgan ma'lumot punktlarini kutib qoladi.

3 -qadam: Android Studio kodi

Mana bu loyiha uchun repo. Bu erda to'liq Android Studio kodini ko'rishingiz mumkin.

UMUMIY

Men buni arduino va android kodlari qanday ishlashini batafsil ko'rib chiqish bilan yangilab turaman … Ilova to'liq ishlaydi, shu vaqt ichida kodni o'zingiz ko'rishingiz mumkin.

4 -qadam: Yakuniy ariza

Yakuniy ariza
Yakuniy ariza
Yakuniy ariza
Yakuniy ariza
Yakuniy ariza
Yakuniy ariza

Tabriklaymiz! Sizning ilovangiz telefoningizga yuklanadi va taqiladigan qurilmangiz zaryadlanadi va ma'lumotlarni uzatadi.

Ilovani ishga tushiring

Ishni boshlash uchun dasturni ishga tushirish belgisini bosing.

GRANT RUXSATLARI

Ilovaning to'g'ri ishlashi uchun siz ba'zi ruxsatlardan foydalanishni tasdiqlashingiz kerak bo'ladi.

QURILMALARNI SKANLASH

Keyin, dasturning chap yuqori burchagidagi "Skanerlash" tugmasini bosing.

QO'YILGAN QURILMASINI TANLASH

Keyin, mavjud BLE qurilmalari ro'yxatidan kiyiladigan qurilmangizni tanlang. Uning nomi "BLE Arduino Hardware" dir. Ma'lumotni kuting. Ilova AGM ma'lumotlarini oladi va foydalanuvchi qaerda yoki harakatda ekanligini aniqlaydi. Natijalarni ekranda ko'ring! Ma'lumotni boshqa o'qish uchun sinxronizatsiya tugmasini bosing.

Tavsiya: