Агуулгын хүснэгт:

Зүүж болох хөдөлгөөн хянагч бүтээгээрэй (BLE -ээс Arduino -аас захиалгат Android Studio апп хүртэл): 4 алхам
Зүүж болох хөдөлгөөн хянагч бүтээгээрэй (BLE -ээс Arduino -аас захиалгат Android Studio апп хүртэл): 4 алхам

Видео: Зүүж болох хөдөлгөөн хянагч бүтээгээрэй (BLE -ээс Arduino -аас захиалгат Android Studio апп хүртэл): 4 алхам

Видео: Зүүж болох хөдөлгөөн хянагч бүтээгээрэй (BLE -ээс Arduino -аас захиалгат Android Studio апп хүртэл): 4 алхам
Видео: Полный обзор рейса первого класса Эмирейтс A380 из Токио в Дубай (+ зал ожидания) 2024, Долдугаар сарын
Anonim
Зүүж болох хөдөлгөөн хянагч бүтээх (Arduino -оос Android Studio студийн тусгай програм руу BLE)
Зүүж болох хөдөлгөөн хянагч бүтээх (Arduino -оос Android Studio студийн тусгай програм руу BLE)

Bluetooth Low Energy (BLE) нь бага чадлын Bluetooth холбооны нэг хэлбэр юм. Ухаалаг хувцас гэх мэт зүүх боломжтой төхөөрөмжүүд нь батерейны ашиглалтын хугацааг уртасгахын тулд эрчим хүчний хэрэглээг хязгаарлаж, BLE -ийг байнга ашиглах ёстой. Bluetooth Тусгай Сонирхлын Бүлэг (SIG) нь "профайл" гэж нэрлэдэг Bluetooth төхөөрөмжтэй ажиллахын тулд төхөөрөмжийн хэрэгжүүлэх ёстой хэд хэдэн тодорхойлолтыг тодорхойлдог. Ихэнх програмын профайлууд BLE холбоосоор өгөгдөл илгээхдээ Атрибутын ерөнхий профайлыг (GATT) ашигладаг. BLE -д профайл, үйлчилгээ, шинж чанар гэсэн гурван үндсэн ойлголт байдаг.

Bluetooth SIG нь олон нийтлэг профайл, үйлчилгээ, шинж чанарыг стандартчилдаг. Гэсэн хэдий ч захиалгат техник хангамжийг бий болгоход ихэвчлэн өөрчлөн тохируулсан үйлчилгээ, шинж чанаруудыг бий болгох шаардлагатай байдаг бөгөөд тийм ч олон заавар байдаггүй. Асуудлыг улам хүндрүүлэхийн тулд Adafruit нь BLE модулиудтайгаа хослуулах гар утасны програм зохион бүтээх талаар ямар ч зааварчилгаа өгөөгүй бөгөөд програмынхаа эх кодыг инженерээс нь буцаахад хэцүү байдаг.

Энэхүү заавар нь дараахь зүйлийг тайлбарлах зорилготой юм

  1. GATT -ийн захиалгат үйлчилгээ, шинж чанарыг хэрхэн яаж хийх вэ
  2. Adafruit Bluefruit LE SPI Friend -ийг эдгээр захиалгат үйлчилгээ, шинж чанаруудад GATT сервер болгон хэрхэн програмчлах вэ.
  3. GATT серверээс өгөгдлийг уншихын тулд GATT үйлчлүүлэгчийн үүргийг гүйцэтгэх Андройд төхөөрөмжийг хэрхэн яаж програмчлах вэ

Энэхүү гарын авлага нь үйлдвэрлэлд ашиглахад бэлэн програм болгон орчуулах зориулалттай биш бөгөөд энэ нь зүгээр л BLE -ийн танилцуулга юм.

Арын дэвсгэр уншлага:

  • Adafruit Bluefruit LE SPI Friend -ийн баримт бичиг
  • Хэрэв та GATT эсвэл BLE -ийг сайн мэдэхгүй бол

Хангамж

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

Алхам 1: Захиалгат үйлчилгээ ба онцлог шинж чанарыг боловсруулах

ТАНИЛЦУУЛГА

Энэхүү нийтлэл нь захиалгат үйлчилгээ, шинж чанарыг хэрхэн яаж зохиох талаар тайлбарласан маш сайн ажил юм. Би энэ нийтлэлийг уншихыг зөвлөж байна. Би энгийн байдлыг хангахын тулд нарийн ширийн зүйлийг үл тоомсорлож буй маш энгийн тоймыг доор өгөв.

GATT үйлчилгээ нь шинж чанаруудын цуглуулга юм.

GATT -ийн шинж чанарууд нь өмч, утга, тэг ба түүнээс дээш тодорхойлогчийг агуулдаг.

  • Үл хөдлөх хөрөнгө: өгөгдлийг үйлчлүүлэгч хэрхэн зохицуулах ёстой (Андройд апп), жишээ нь. унших, бичих, хариулахгүйгээр бичих, мэдэгдэх, зааж өгөх.
  • Утга: шинж чанарын бодит утга. 1089
  • Тодорхойлогчид: энэ бол үнэ цэнийн талаархи мэдээлэл юм. нэгж, миллисекунд

ДИЗАЙН

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

1. Бид стандарт үйлчилгээ, шинж чанаруудын аль нэгийг ашиглаж болох уу?

Bluetooth SIG нь олон нийтлэг үйлчилгээ, шинж чанарыг стандартчилдаг. Нэгдүгээрт, та стандарт үйлчилгээ, шинж чанаруудын аль нэгийг хамтран ашиглах боломжтой эсэхийг шалгах хэрэгтэй. Стандарт үйлчилгээ, шинж чанарууд нь хамаагүй бага өгөгдлийн пакетуудыг ашиглах боломжтой байдаг, учир нь Түгээмэл өвөрмөц танигч (UUID) нь 16 бит бөгөөд захиалгат үйлчилгээ, шинж чанарууд нь UUID -д 128 бит ашиглах ёстой. UUID -ийн талаар дараа нь дэлгэрэнгүй үзэх болно. Бидний хайлтаас бид "батерейны түвшин" гэсэн нэг онцлог шинж чанарыг агуулсан стандартчилагдсан "батерейны үйлчилгээ" олсон.

2. BLE дээр илгээхийг хүсч буй бүх өгөгдлийн утгыг шинж чанар, үйлчилгээ болгон тусгаарла

Бид захиалгат өгөгдлийн цэгүүдээ нэг өөрчлөн үйлчилгээний хүрээнд долоон өөрчлөн шинж чанар болгон хувааж болно. Бид энэ үйлчилгээг "AGM үйлчилгээ" гэж нэрлэх болно. Энэ нь x-хурдатгал, y-хурдатгал, z-хурдатгал, x-гироскоп, y-гироскоп, z-гироскоп, цагийн лавлагаа гэсэн 7 шинж чанарыг агуулсан болно.

3. Онцлог тус бүрт шаардлагатай шинж чанарыг тодорхойл

Онцлог шинж чанартай байж болох хэд хэдэн шинж чанарууд байдаг.

  1. Унших: Үйлчлүүлэгч (Android App) нь GATT серверээс (Arduino) утгыг унших боломжтой.
  2. Бичих: Үйлчлүүлэгч нь GATT серверээс утгыг өөрчлөх боломжтой
  3. Заана уу: GATT серверээс утга өөрчлөгдөж, үйлчлүүлэгч баталгаажуулалтыг GATT сервер рүү илгээнэ гэж үзвэл үйлчлүүлэгчид мэдэгдэх болно.
  4. Мэдэгдэх: GATT серверээс утга өөрчлөгдөх бөгөөд үйлчлүүлэгч GATT сервер рүү баталгаажуулалт явуулахгүй бол үйлчлүүлэгчид мэдэгдэх болно.

Энэхүү гарын авлагын хувьд бид мэдэгдэх, унших шинж чанартай байх батерейны түвшинг эс тооцвол бүх шинж чанаруудаа уншихаар тохируулах болно.

4. Захиалгат үйлчилгээ, шинж чанаруудын хувьд UUID үүсгэж, стандарт UUID -ийг хайж олох

Өмнө нь би товч дурдсанчлан, Bluetooth SIG стандартчилагдсан үйлчилгээ, шинж чанарууд нь 16 битийн UUID ашигладаг бол захиалгат үйлчилгээ, шинж чанарууд нь 128 битийн UUID -ийг ашигладаг. Жишээлбэл, Bluetooth SIG дээрх батерейны үйлчилгээний дугаарыг үзнэ үү. Оноосон 0x180F дугаар нь 128 битийн UUID "0000180F-0000-1000-8000-00805F9B34FB" -ийг илэрхийлнэ. Тод үсгээр бичсэн дөрвөн орон (16 бит) нь тухайн стандартчилагдсан үйлчилгээ эсвэл онцлог шинж чанартай байдаг бөгөөд бусад тэмдэгтүүд нь бүх стандартчилагдсан үйлчилгээ, шинж чанаруудын хооронд хадгалагддаг. Үйлчлүүлэгч болон GATT сервер хоёулаа стандартчилагдсан үйлчилгээ, шинж чанар нь зөвхөн тод цифрээс хамаарч өөр өөр байдгийг мэддэг тул өгөгдлийн пакетийн хэмжээг мэдэгдэхүйц бууруулах боломжтой. Гэсэн хэдий ч захиалгат үйлчилгээ, шинж чанар нь ижил таамаглалын дагуу ажиллах боломжгүй юм.

Үүний оронд захиалгат үйлчилгээ, шинж чанар нь товчлолгүй 128 битийн UUID -ийг ашиглах ёстой. Энд онлайн UUID генератор байна. Стандартчилагдсан UUID -аас өөр UUID -ийг өөрчилсөн UUID -д хүлээн зөвшөөрдөг. Гэсэн хэдий ч нэршлийн ердийн дүрэм бол 00000001-… гаалийн үйлчилгээ ба тухайн өөрчлөн үйлчилгээний 00000002-…

Энд бид UUID -ийн хамт хэрэгжүүлэх үйлчилгээ, шинж чанаруудын хураангуй хүснэгтийг энд оруулав

Алхам 2: Arduino код

BLUEFRUIT LE SPI FRIEND -ийг шинэчилнэ үү

Нэгдүгээрт, Adafruit Bluefruit LE SPI Friend холболтын гарын авлагад заасны дагуу холбож, Arduino төхөөрөмжийг асаагаарай. Bluetooth төхөөрөмж хайхдаа Adafruit Bluefruit LE SPI Андройд төхөөрөмжөө андройд төхөөрөмж дээрээс олох боломжтой эсэхийг шалгаарай. Bluefruit Connect програмыг татаж аваад Adafruit Bluefruit LE SPI Friend -тэй холбогдож төхөөрөмжийнхөө програм хангамжийг шинэчлэхийг зөвшөөрнө үү. Энэ алхам нь чухал юм. Хэрэв та firmware -ийг шинэчлэхгүй бол 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 (үнэн);" дуудлага "ble.reset ();" автоматаар. Хэрэв та батерейны үйлчилгээг над шиг ашигладаггүй бол би "battery.begin (үнэн);" гэсэн тушаалтай ble модулийг дахин тохируулах хэрэгтэй ("ble.reset ();") ашиглаарай.
  3. Тохиргоо () аргад дибаг хийхийг хүсвэл "if (! Ble.begin (false))" "" if (! Ble.begin (true)) "болгож өөрчилнө үү.

Энэ код нь өөрийгөө маш сайн тайлбарладаг. Би захиалгат арга бүрийн тайлбарыг оруулсан болно. Тохируулах арга нь BLE модулийг GATT серверийн үүрэг гүйцэтгэхэд бэлэн болгодог. Давталтын арга нь акселерометрийн гироскопын модулийг (AGM) хуурамч аргаар цэвэрлэж, эдгээр утгуудын хувьд 1 -ээс 100 хүртэлх санамсаргүй тоог гаргадаг. Зайны хэрэглээг дуурайхын тулд батерейг 1% -иар цэнэглэдэг. Та энэ кодыг мэдрэгчийн бодит утгуудаар амархан сольж болно. Энэхүү код нь та нэг удаагийн хэмжилтийг бус 6 хэмжилтийг багтаасан AGM өгөгдлийн массивыг дамжуулах болно гэж үзэж байна, учир нь AGM өгөгдлийн цонхыг шинжлэх нь нэг цэгээс илүү ашигтай байх болно. Хэрэв та массивын хэмжээг өөрчилвөл андройд студийн кодод өөрчлөлт оруулах шаардлагатай болохыг анхаарна уу. Өгөгдлийн массивыг авахын тулд та илгээх гэж буй өгөгдөлтэйгээ хамт тоолуур дамжуулах ёстой. Энэхүү тоолуур нь андроид студийн програмаас цонхонд хаана байгаагаа олох боломжийг олгодог бөгөөд ингэснээр та алга болсон өгөгдлийн цэгүүдийг цонхонд сонсохыг хүлээж болно. Тоологчгүй эсвэл өөр хэмжээтэй массивтай бол андроид студийн төсөл нь өгөгдлийн цэгүүдийг алдах эсвэл хүлээгдэж буй өгөгдлийн цэгүүдийг хүлээх хүрдэнд гацах болно.

Алхам 3: Android Studio код

Энэ төслийн талаархи миний репо энд байна. Энд та Android Studio кодыг бүрэн эхээр нь үзэх боломжтой.

ТОЙМ

Би үүнийг ардуино болон андройд код хэрхэн яаж ажилладаг талаар нарийвчилсан тоймоор үргэлжлүүлэн шинэчлэх болно. Апп нь бүрэн ажиллагаатай тул энэ хооронд кодыг өөрөө чөлөөтэй хараарай.

Алхам 4: Эцсийн өргөдөл

Эцсийн өргөдөл
Эцсийн өргөдөл
Эцсийн өргөдөл
Эцсийн өргөдөл
Эцсийн өргөдөл
Эцсийн өргөдөл

Баяр хүргэе! Таны аппликешныг таны утсан дээр татаж авсан бөгөөд таны өмсдөг төхөөрөмжийг цэнэглэж өгөгдөл дамжуулж байна.

Аппыг ажиллуулна уу

Эхлэхийн тулд програмын эхлүүлэгч дүрс дээр дарна уу.

Зөвшөөрөл олгох

Апп зөв ажиллахын тулд та зарим зөвшөөрлийг ашиглахыг зөвшөөрөх шаардлагатай болно.

ТӨХӨӨРӨМЖ ХАЙХ

Дараа нь програмын зүүн дээд буланд байгаа "Scan" товчийг дарна уу.

ЭВХЭРЛЭХ ТӨХӨӨРӨМЖөө сонгоно уу

Дараа нь боломжтой BLE төхөөрөмжүүдийн жагсаалтаас өмсдөг төхөөрөмжөө сонгоно уу. Нэр нь "BLE Arduino Hardware". DATA АВАХ. Апп нь AGM -ийн өгөгдлийг авах бөгөөд хэрэглэгч хаана байгаа эсвэл хөдөлж байгааг тодорхойлох хүртэл хүлээнэ үү. Үр дүнг дэлгэцэн дээрээс үзээрэй. Өгөгдлийг дахин уншихын тулд синхрончлох товчийг дарна уу.

Зөвлөмж болгож буй: