Мазмуну:

Кийилүүчү кыймыл трекерин түзүңүз (BLE'ден Arduinoдон Android Studio студиясынын колдонмосуна чейин): 4 кадам
Кийилүүчү кыймыл трекерин түзүңүз (BLE'ден Arduinoдон Android Studio студиясынын колдонмосуна чейин): 4 кадам

Video: Кийилүүчү кыймыл трекерин түзүңүз (BLE'ден Arduinoдон Android Studio студиясынын колдонмосуна чейин): 4 кадам

Video: Кийилүүчү кыймыл трекерин түзүңүз (BLE'ден Arduinoдон Android Studio студиясынын колдонмосуна чейин): 4 кадам
Video: Finance with Python! Portfolio Diversification and Risk 2024, Ноябрь
Anonim
Кийилүүчү кыймыл трекерин куруңуз (BLE Arduino'дон Android Android Studio колдонмосуна чейин)
Кийилүүчү кыймыл трекерин куруңуз (BLE Arduino'дон Android Android Studio колдонмосуна чейин)

Bluetooth Low Energy (BLE) - бул аз кубаттуу Bluetooth байланышынын бир түрү. Кийиле турган түзмөктөр, мен акылдуу кийимдер сыяктуу, мен Predictive Wear дизайнында, батареянын иштөө мөөнөтүн узартуу үчүн мүмкүн болушунча энергия керектөөнү чектеп, BLEди көп колдонушу керек. Bluetooth Special Interest Group (SIG) Bluetooth түзмөгү менен иштөө үчүн түзүлүштүн бир нече спецификациясын аныктайт, аны алар "профилдер" деп аташат. Көпчүлүк колдонмо профилдери BLE шилтемеси аркылуу маалыматтарды жөнөтүү үчүн Жалпы Атрибут Профилин (GATT) колдонушат. BLEде үч негизги түшүнүк бар: профилдер, кызматтар жана атрибуттар.

Bluetooth SIG көптөгөн жалпы профилдерди, кызматтарды жана атрибуттарды стандартташтырды. Бирок, ыңгайлаштырылган аппараттык жабдыктарды түзүүдө көбүнчө бажы кызматтарын жана атрибуттарды түзүүнүн зарылдыгы келип чыгат жана көп окуу куралдары жок. Маселени татаалдаштыруу үчүн, Adafruit BLE модулдары менен жупташуу үчүн мобилдик тиркемелерди иштеп чыгуу боюнча эч кандай көрсөтмө бербейт жана алардын колдонмолорунун баштапкы кодун инженерге кайтаруу кыйын.

Бул окуу куралы түшүндүрүүгө багытталган:

  1. Көнүмүш GATT кызматтарын жана мүнөздөмөлөрүн кантип иштеп чыгуу керек
  2. Adafruit Bluefruit LE SPI Friendди бул салт кызматтар жана мүнөздөмөлөр үчүн GATT сервери катары иштөөгө кантип программалоо керек.
  3. GATT серверинен маалыматтарды окуу үчүн Android түзмөгүн GATT кардары катары кантип программалоо керек

Бул окуу куралы өндүрүшкө даяр колдонмого которулууга арналган эмес - бул жөн гана BLEге киришүү.

Фондук окуу:

  • Adafruit Bluefruit LE SPI Friend документтери
  • Эгерде сиз GATT же BLE менен тааныш болбосоңуз

Жабдуулар

  • 1x - Arduino түзмөгү (мен бул окуу куралы үчүн БУУну колдонуп жатам)
  • 1x - Adafruit Bluefruit LE SPI досу
  • 8x - эркектен эркекке секирүүчү зымдар
  • Негизги ширетүүчү жабдуулар (SPI Friend'деги баштык казыктарына)
  • Компьютер (Arduino түзмөгүн жана андроид аппаратын программалоо үчүн)

1 -кадам: Дизайн Custom Services & мүнөздөмөлөрү

КИРИШҮҮ

Бул макала ыңгайлуу кызматтарды жана мүнөздөмөлөрдү кантип иштеп чыгууну түшүндүрүп, чоң жумушту аткарат. Мен бул макаланы окуп чыгууну сунуштайм. Мен төмөндө жөнөкөйлүктүн пайдасына назиктигин эске албаган өтө жөнөкөй серепти берем.

GATT Services - мүнөздөмөлөрдүн жыйындысы.

GATT мүнөздөмөлөрүндө мүлк, баалуулук жана нөл же андан көп дескрипторлор бар.

  • Мүлк: маалыматтарды кардар кантип иштетиши керек (Android App) мис. окуу, жазуу, жоопсуз жазуу, кабарлоо жана көрсөтүү.
  • Мааниси: мүнөздөмөнүн чыныгы мааниси ж. 1089
  • Дескрипторлор: бул баалуулук ж. бирдик, миллисекунд

ДИЗАЙН

Макул, эми сиз кандай кызматтар жана мүнөздөмөлөр экенин билесиз, биз керектүү маалыматтарыбызды алуу үчүн GATT серверибизден (Arduino) кардарга (Android App) жөнөтүү үчүн кээ бир кызматтарды жана мүнөздөмөлөрдү кантип иштеп чыгууну ойлонушубуз керек. Акселометр-гироскоп модулунан (AGM) маалыматтарды чогултуп жаткан Arduino аппаратын карап көрөлү. Биз үч космостук октон гироскопту жана ылдамдатуу өлчөөлөрүн чогултууну жана бул өлчөөлөрдүн кабыл алынган убактысын чогултуп, бул маалыматты мобилдик тиркемесибизге өткөрүүнү каалайбыз. Биз ошондой эле качан аппаратты заряддоо керектигин билгибиз келет, андыктан батарейканын деңгээлин окуп, аны мобилдик тиркемесибизге өткөрүп бергибиз келет.

1. Биз стандарттык кызматтарды жана мүнөздөмөлөрдү колдоно алабызбы?

Bluetooth SIG көптөгөн жалпы кызматтарды жана мүнөздөмөлөрдү стандартташтырган. Биринчиден, буларды текшериңиз, эгер сиз стандартталган кызматтарды жана мүнөздөмөлөрдү кошсоңуз болот. Стандарттык кызматтар жана мүнөздөмөлөр анча чоң эмес маалымат пакеттерин колдоно алышат, анткени универсалдуу уникалдуу идентификатор (UUID) 16 битти түзөт, ал эми бажы кызматтары жана мүнөздөмөлөрү UUIDлери үчүн 128 битти колдонушу керек. UUIDлер жөнүндө кийинчерээк. Издөөнүн натыйжасында биз "батарейканын деңгээлин" камтыган стандартташтырылган "батарейка кызматын" таптык.

2. BLE аркылуу мүнөздөмөлөргө жана кызматтарга жөнөткүңүз келген бардык маалымат баалуулуктарын бөлүңүз

Биз бажы маалымат пункттарыбызды бир бажы кызматынын ичинде жети бажы өзгөчөлүгүнө бөлө алабыз. Биз бул кызматты "AGM кызматы" деп атайбыз. Ал 7 мүнөздөмөнү камтыйт: х-ылдамдануу, у-ылдамдануу, z-ылдамдануу, х-гироскоп, у-гироскоп, z-гироскоп жана убакыт маалымдамасы.

3. Ар бир мүнөздөмө үчүн керектүү касиеттерди аныктаңыз

Мүнөздөмө болушу мүмкүн болгон бир нече касиеттер бар.

  1. Оку: Кардар (Android App) GATT Serverден (Arduino) маанини окуй алат
  2. Жазуу: Кардар GATT Serverден маанини өзгөртө алат
  3. Көрсөтүү: эгерде GATT Серверинин мааниси өзгөрсө, Кардарга кабар берилет жана Кардар GATT Serverге ырастоону жөнөтөт деп күтүлүүдө.
  4. Эскертүү: эгерде GATT Серверинин мааниси өзгөрсө, Кардарга кабар берилет жана Кардар GATT Serverге ырастоону жөнөтүшү күтүлбөйт.

Бул үйрөткүч үчүн, биз бардык өзгөчөлүктөрүбүздү окууга орнотобуз, батареянын деңгээлинен тышкары, ал кабарлоо жана окуу касиеттерине ээ болот.

4. Ыңгайлаштырылган кызматтар жана мүнөздөмөлөр үчүн UUID түзүңүз жана стандарттык UUID табыңыз

Мен кыскача айтып өткөндөй, Bluetooth SIG стандартташтырылган кызматтары жана мүнөздөмөлөрү 16 биттик UUIDди колдонушат, ал эми бажы кызматтары жана мүнөздөмөлөрү 128 бит UUIDлерди колдонушат. Мисалы, Bluetooth кызматында батарея кызматына берилген номерди караңыз. Берилген 0x180F номери 128 бит UUID "0000180F-0000-1000-8000-00805F9B34FB" билдирет. Калын төрт цифр (16 бит) өзгөчө стандартташтырылган кызматка же мүнөздөмөгө гана мүнөздүү, ал эми калган белгилер бардык стандартташтырылган кызматтар менен мүнөздөмөлөрдүн ортосунда сакталып калган. Кардар да, GATT сервери да стандартташтырылган кызматтар жана мүнөздөмөлөр жоон сандар менен гана айырмаланарын билишкендиктен, маалыматтардын пакетинин өлчөмүн олуттуу түрдө кыскартууга болот. Бирок, бажы кызматтары жана мүнөздөмөлөрү ушул эле божомолдун астында иштей албайт.

Анын ордуна, бажы кызматтары жана мүнөздөмөлөрү кыскартылбаган 128 биттик UUIDди колдонушу керек. Бул жерде онлайн UUID генератору. Стандартташтырылган UUIDден башка UUID ыңгайлаштырылган UUID үчүн кабыл алынат. Бирок, кадимки ат коюу конвенциясы-00000001-… бажы кызматын жана ошол бажы кызматынын 00000002-…

Бул жерде биз UUIDлери менен бирге ишке ашыра турган кызматтар менен мүнөздөмөлөрдүн кыскача таблицасы

2 -кадам: Arduino коду

BLUEFRUIT LE SPI DOIEND ЖАҢЫРТЫҢЫЗ

Биринчиден, Adafruit Bluefruit LE SPI Friend'ти туташтырыңыз, алар жолдомо көрсөтмөсүндө көрсөтүлгөндөй жана Arduino түзмөгүн иштетет. Bluetooth түзмөктөрүн сканерлеп жатканда, Android түзмөгүңүздө Adafruit Bluefruit LE SPI Friend таба аласыз. Bluefruit Connect тиркемесин жүктөп алыңыз, Adafruit Bluefruit LE SPI Friend менен туташыңыз жана ага түзмөктөгү камтылган программаны жаңыртууга уруксат бериңиз. Бул кадам маанилүү. Эгерде сиз камтылган программаны жаңыртпасаңыз, анда Arduino аркылуу түзмөктү чыгарган буйруктарыңыз ишке ашпай калышы мүмкүн жана көйгөйдүн эмне экенин билүү үчүн ачык ката болбойт.

Мына бул долбоорго менин репо. Толук Arduino кодун бул жерден көрө аласыз.

ОБЗОР

Белгилей турган бир нече маанилүү нерселер:

  1. Setup () ыкмасында, бардык ыңгайлаштырылган UUIDде ар бир эки белгинин ортосунда "-" болушу керек. Мисалы, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" иштейт. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" иштебейт.
  2. Орнотуу () ыкмасында, "battery.begin (true);" чалуулар "ble.reset ();" автоматтык түрдө. Эгер сиз батарейка кызматын мен сыяктуу колдонбосоңуз, анда ble модулун баштапкы абалга келтиришиңиз керек ("ble.reset ();" колдонуңуз), менде "battery.begin (true);" буйругу бар.
  3. Мүчүлүштүктөрдү оңдоону кааласаңыз, setup () ыкмасында "if (! Ble.begin (false))" "if (! Ble.begin (true))" деп өзгөртүңүз.

Бул код абдан түшүнүктүү. Мен ар бир ыңгайлаштырылган методдун сүрөттөмөсүн киргиздим. Орнотуу ыкмасы BLE модулун GATT сервери катары иштөөгө даяр кылат. Укурук ыкмасы акселерометр гироскопу модулунун жасалма шыпыруусунан өтөт (AGM) жана бул баалуулуктар үчүн 1ден 100гө чейин туш келди санды жаратат. Батареяны колдонууну окшоштуруу үчүн батарея 1% га төгүлөт. Сиз бул кодду чыныгы сенсор баалуулуктары менен оңой алмаштыра аласыз. Бул код сиз AGM маалыматынын массивин, 6 өлчөөнү узартат деп болжолдойт, анткени бир гана өлчөө эмес, AGM маалыматынын терезесин талдоо бир маалыматка караганда пайдалуу болушу мүмкүн. Эгерде сиз массивдин өлчөмүн өзгөртсөңүз, андроид студиясынын кодунда өзгөрүүлөр болорун эске алыңыз. Маалыматтардын массивин басып алуу үчүн, жөнөткүңүз келген маалыматтар менен бирге эсептегичти тапшырышыңыз керек. Бул эсептегич сиз андроид студиясынын тиркемесинен терезеде турган жериңизди табууга мүмкүндүк берет, андыктан сиз терезеде жок болгон маалымат пункттарын угууну күтө аласыз. Эсептегичсиз же башка өлчөмдөгү массив менен, андроид студиясынын долбоору маалымат пункттарын сагынат же калган маалымат пункттарын күткөн циклге тыгылып калат.

3 -кадам: Android Studio коду

Мына бул долбоорго менин репо. Толук Android Studio кодун бул жерден көрө аласыз.

ОБЗОР

Мен муну ардуино жана андроид коду деталдуу түрдө кантип иштээри жөнүндө толук маалымат менен жаңыртып турам … Колдонмо толугу менен иштейт, андыктан кодду өзүңүз карап көрүңүз.

4 -кадам: Акыркы өтүнмө

Акыркы өтүнмө
Акыркы өтүнмө
Акыркы өтүнмө
Акыркы өтүнмө
Акыркы өтүнмө
Акыркы өтүнмө

Куттуктайм! Колдонмоңуз телефонуңузга жүктөлүп, кийилүүчү түзмөгүңүз кубатталып, маалыматтарды өткөрүп жатат.

КОЛДОНМОНУ ЖҮРГҮЗҮҢҮЗ

Баштоо үчүн, колдонмонун ишке киргизүүчү сөлөкөтүн чыкылдатыңыз.

ГРАНТТАР

Колдонмонун туура иштеши үчүн кээ бир уруксаттардын колдонулушун жактырышыңыз керек.

ТҮЗМӨКТӨРДҮ СКАНДОО

Андан кийин, колдонмонун жогорку сол бурчундагы "Сканерлөө" баскычын чыкылдатыңыз.

ЖЕҢИЛ ТҮЗМӨҢҮЗДҮ ТАНДАҢЫЗ

Андан кийин, жеткиликтүү BLE түзмөктөрүнүн тизмесинен кийилүүчү түзмөгүңүздү тандаңыз. Анын аты "BLE Arduino Hardware". DATAWET Колдонмо AGM маалыматын алып, колдонуучунун кыймылсыз же кыймылсыз экенин аныктайт. ЖЫЙЫНТЫГЫҢЫЗДЫ көрүңүз Жыйынтыктарды экрандан караңыз! Дагы бир маалымат окуу үчүн синхрондоштуруу баскычын басыңыз.

Сунушталууда: