Përmbajtje:

Ndërtoni një Gjurmues të Veshjeve të Lëvizjes (BLE Nga Arduino në një Aplikacion të Personalizuar të Studio Studio): 4 hapa
Ndërtoni një Gjurmues të Veshjeve të Lëvizjes (BLE Nga Arduino në një Aplikacion të Personalizuar të Studio Studio): 4 hapa

Video: Ndërtoni një Gjurmues të Veshjeve të Lëvizjes (BLE Nga Arduino në një Aplikacion të Personalizuar të Studio Studio): 4 hapa

Video: Ndërtoni një Gjurmues të Veshjeve të Lëvizjes (BLE Nga Arduino në një Aplikacion të Personalizuar të Studio Studio): 4 hapa
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Nëntor
Anonim
Ndërtoni një Gjurmues të Veshjeve të Lëvizjes (BLE Nga Arduino në një Aplikacion të Personalizuar të Studio Studio)
Ndërtoni një Gjurmues të Veshjeve të Lëvizjes (BLE Nga Arduino në një Aplikacion të Personalizuar të Studio Studio)

Energjia e ulët Bluetooth (BLE) është një formë e komunikimit Bluetooth me fuqi të ulët. Pajisjet e veshshme, si veshjet e mençura që unë ndihmoj në hartimin në Predictive Wear, duhet të kufizojnë konsumin e energjisë kudo që të jetë e mundur për të zgjatur jetën e baterisë dhe shpesh të përdorin BLE. Grupi i Interesit Special Bluetooth (SIG) përcakton disa specifikime që një pajisje duhet të zbatojë për të bashkëvepruar me një pajisje Bluetooth, të cilat ata i quajnë "profile". Shumica e profileve të aplikacionit përdorin Profilin e Atributeve të Përgjithshme (GATT) për të dërguar të dhëna përmes një lidhjeje BLE. Ekzistojnë tre koncepte themelore në BLE: profilet, shërbimet dhe atributet.

Bluetooth SIG ka standardizuar shumë profile, shërbime dhe atribute të zakonshme. Sidoqoftë, kur krijoni pajisje të personalizuara shpesh ka nevojë për të krijuar shërbime dhe atribute të personalizuara dhe nuk ka shumë mësime në dispozicion. Për t'i bërë gjërat më të vështira, Adafruit nuk jep ndonjë udhëzim për hartimin e aplikacioneve celulare për t'u çiftuar me modulet e tyre BLE dhe kodi burimor për aplikimet e tyre është i vështirë të ndryshojë inxhinier.

Ky tutorial synon të shpjegojë:

  1. Si të hartoni shërbime dhe karakteristika të personalizuara të GATT
  2. Si të programoni Adafruit Bluefruit LE SPI Friend për të vepruar si një server GATT për këto shërbime dhe karakteristika të personalizuara
  3. Si të programoni një pajisje Android për të vepruar si klienti GATT për të lexuar të dhënat nga serveri GATT

Ky tutorial nuk ka për qëllim të përkthehet në një aplikacion të gatshëm për prodhim - ky është thjesht një hyrje në BLE.

Leximi i sfondit:

  • Adafruit Bluefruit LE SPI Dokumentacioni i mikut
  • Nëse nuk jeni të njohur me GATT ose BLE

Furnizimet

  • 1x - Një pajisje Arduino (Unë jam duke përdorur UNO për këtë tutorial)
  • 1x - Adafruit Bluefruit LE SPI Mik
  • 8x - tela bluzë meshkuj në meshkuj
  • Pajisjet bazë të saldimit (për të bashkuar kunjat e kokës në SPI Friend)
  • Një kompjuter (për të programuar pajisjen Arduino dhe pajisjen android)

Hapi 1: Dizajnoni shërbime dhe karakteristika të personalizuara

PREZANTIMI

Ky artikull bën një punë të shkëlqyeshme duke shpjeguar se si të krijoni shërbime dhe karakteristika me porosi. Unë rekomandoj shumë leximin e këtij artikulli. Unë jap një përmbledhje shumë të thjeshtë më poshtë që neglizhon hollësitë në favor të thjeshtësisë.

Shërbimet GATT janë një koleksion karakteristikash.

Karakteristikat e GATT përmbajnë një pronë, një vlerë dhe zero ose më shumë përshkrues.

  • Prona: si duhet të trajtohen të dhënat nga klienti (Aplikacioni Android) p.sh. lexoni, shkruani, shkruani pa përgjigje, njoftoni dhe tregoni.
  • Vlera: vlera aktuale e karakteristikës p.sh. 1089
  • Përshkruesit: ky është informacion në lidhje me vlerën p.sh. njësia, milisekonda

PROJEKTIM

Mirë, tani e dini se çfarë janë shërbimet dhe karakteristikat, ne duhet të kuptojmë se si të hartojmë disa shërbime dhe karakteristika për të marrë të dhënat tona të personalizuara dhe t'i dërgojmë ato nga serveri ynë GATT (Arduino) te klienti (Aplikacioni Android). Le të marrim parasysh një pajisje Arduino që po mbledh të dhëna nga një modul nxitues-xhiroskop (AGM). Ne duam të mbledhim gjiroskop dhe matje të përshpejtimit nga tre akse hapësinore dhe kohën kur këto matje janë marrë dhe t’i transmetojmë këto të dhëna në aplikacionin tonë celular. Ne gjithashtu duam të dimë se kur duhet të karikojmë pajisjen, kështu që ne duam të lexojmë nivelin e baterisë dhe ta transmetojmë atë në aplikacionin tonë celular.

1. A mund të përdorim ndonjë nga shërbimet dhe karakteristikat standarde?

Bluetooth SIG ka standardizuar shumë shërbime dhe karakteristika të zakonshme. Së pari, kontrolloni këto për të parë nëse mund të zgjidhni një nga shërbimet dhe karakteristikat e standardizuara. Shërbimet dhe karakteristikat standarde mund të përdorin pako të dhënash shumë më të vogla pasi Identifikuesi Unik Universal (UUID) është 16 bit, ndërsa shërbimet dhe karakteristikat e personalizuara duhet të përdorin 128 bit për UUID -et e tyre. Më shumë për UUID -të më vonë. Nga kërkimi ynë, ne gjetëm një "shërbim të standardizuar të baterisë" i cili përmban një "nivel baterie" karakteristik.

2. Ndani të gjitha vlerat e të dhënave që dëshironi të dërgoni mbi BLE në karakteristika dhe shërbime

Ne mund t'i ndajmë pikat tona të të dhënave me porosi në shtatë karakteristika të personalizuara brenda një shërbimi me porosi. Ne do ta quajmë këtë shërbim "shërbimi AGM". Ai do të përmbajë 7 karakteristika: nxitimi x, nxitimi y, nxitimi z, x-xhiroskopi, x-xhiroskopi, z-xhiroskopi dhe një referencë kohore.

3. Përcaktoni vetitë e nevojshme për secilën karakteristikë

Ekzistojnë disa veti që një karakteristikë mund të ketë.

  1. Lexoni: Klienti (Aplikacioni Android) mund të lexojë një vlerë nga Serveri GATT (Arduino)
  2. Shkruani: Klienti mund të ndryshojë një vlerë nga Serveri GATT
  3. Tregoni: Klienti do të njoftohet nëse një vlerë ndryshon nga Serveri GATT dhe Klienti pritet të dërgojë konfirmim në Serverin GATT
  4. Njoftoni: Klienti do të njoftohet nëse një vlerë ndryshon nga Serveri GATT dhe Klienti nuk pritet të dërgojë konfirmim në Serverin GATT

Për këtë tutorial, ne do të vendosim të gjitha karakteristikat tona për t'u lexuar, me përjashtim të nivelit të baterisë i cili do të ketë veti njoftimi dhe leximi.

4. Gjeneroni UUID për shërbimet dhe karakteristikat me porosi dhe gjeni UUID standarde

Siç e përmenda shkurtimisht më herët, shërbimet dhe karakteristikat e standardizuara të Bluetooth SIG përdorin një UUID 16 bit, ndërsa shërbimet dhe karakteristikat e personalizuara përdorin UUID 128 bit. Për shembull, shihni numrin e caktuar të shërbimit të baterisë në SIG Bluetooth. Numri i caktuar 0x180F përfaqëson UUID 128-bit "0000180F-0000-1000-8000-00805F9B34FB". Katër shifrat (16 bit) me shkronja të zeza janë unike për shërbimin ose karakteristikën e veçantë të standardizuar, ndërsa personazhet e tjerë ruhen midis të gjitha shërbimeve dhe karakteristikave të standardizuara. Meqenëse klienti dhe serveri GATT e dinë që shërbimet dhe karakteristikat e standardizuara ndryshojnë vetëm me shifrat e theksuara, madhësitë e paketave të të dhënave mund të zvogëlohen ndjeshëm. Sidoqoftë, shërbimet dhe karakteristikat me porosi nuk mund të funksionojnë sipas këtij supozimi të njëjtë.

Në vend të kësaj, shërbimet dhe karakteristikat me porosi duhet të përdorin UUID të pa shkurtuar 128 bit. Këtu është një gjenerator UUID në internet. Çdo UUID i ndryshëm nga UUID i standardizuar është i pranueshëm për një UUID të personalizuar. Sidoqoftë, një konventë tipike e emërtimit është të tregosh një shërbim me porosi 00000001-… dhe karakteristikat brenda atij shërbimi me porosi 00000002-…

Këtu është një tabelë përmbledhëse e shërbimeve dhe karakteristikave që do të zbatojmë së bashku me UUID -et e tyre

Hapi 2: Kodi Arduino

P URDITSO MIKU BLUEFRUIT LE SPI

Së pari, lidhni Adafruit Bluefruit LE SPI Friend siç specifikojnë në udhëzuesin e tyre të lidhjes dhe ndizni pajisjen Arduino. Sigurohuni që mund të gjeni Adafruit Bluefruit LE SPI Friend në pajisjen tuaj android kur skanoni për pajisje Bluetooth. Shkarkoni aplikacionin Bluefruit Connect, lidheni me Adafruit Bluefruit LE SPI Friend dhe lejojeni që të përditësojë firmware -in në pajisje. Ky hap është i rëndësishëm. Nëse nuk e përditësoni firmuerin, komandat që lëshoni pajisjen përmes Arduino ka të ngjarë të dështojnë dhe nuk do të ketë një gabim të dukshëm për ju që të zbuloni se cili është problemi.

Këtu është repoja ime për këtë projekt. Kodin e plotë Arduino mund ta shihni këtu.

P ORMBLEDHJE

Disa gjëra të rëndësishme për tu vënë në dukje:

  1. Në metodën setup (), të gjitha UUID-et e personalizuara duhet të përmbajnë "-" midis çdo dy karaktereve. Për shembull, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" do të funksionojë. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" nuk do të funksionojë.
  2. Vini re se në metodën e konfigurimit (), "battery.begin (true);" thërret "ble.reset ();" automatikisht. Nëse nuk e përdorni shërbimin e baterisë siç kam unë, duhet të rivendosni modulin ble (përdorni "ble.reset ();") ku kam komandën "battery.begin (true);".
  3. Në metodën setup (), ndryshoni "if (! Ble.begin (false))" në "if (! Ble.begin (true))" nëse doni të korrigjoni gabimet.

Ky kod është mjaft vetë-shpjegues. Kam përfshirë përshkrimet e secilës metodë të personalizuar. Metoda e konfigurimit e bën modulin BLE gati për të vepruar si serveri GATT. Metoda e lakut kalon përmes një spastrimi të rremë të modulit të xhiroskopit të përshpejtuesit (AGM) dhe gjeneron një numër të rastit nga 1 në 100 për këto vlera. Bateria është shkarkuar me 1% për të simuluar përdorimin e baterisë. Ju mund ta zëvendësoni këtë kod me vlerat aktuale të sensorit me lehtësi. Ky kod supozon që ju do të transmetoni një grup të dhënash AGM, 6 matje të gjata, dhe jo një matje të vetme pasi analiza e një dritareje të të dhënave AGM ka të ngjarë të jetë më e dobishme sesa një pikë e vetme e të dhënave. Nëse ndryshoni madhësinë e grupit, vini re se do të kërkohen ndryshime në kodin e studios android. Për të kapur një sërë të dhënash, duhet të kaloni një numërues së bashku me të dhënat që keni ndërmend të dërgoni. Ky sportel ju lejon të gjeni se ku jeni në dritare nga aplikacioni studio Android për të pritur që të dëgjoni pikat e të dhënave që mungojnë në dritare. Pa sportel ose me një grup të madhësive të ndryshme, projekti i studios android ose do të humbasë pikat e të dhënave ose do të ngec në një lak duke pritur për pikat e mbetura të të dhënave që pret.

Hapi 3: Kodi Android Studio

Këtu është repoja ime për këtë projekt. Këtu mund të shihni kodin e plotë të Android Studio.

P ORMBLEDHJE

Unë do të vazhdoj ta azhurnoj këtë me një pasqyrë më të plotë se si funksionon kodi arduino dhe android në detaje … Aplikacioni është plotësisht funksional, prandaj mos ngurroni të shikoni vetë kodin ndërkohë.

Hapi 4: Aplikimi përfundimtar

Aplikimi Përfundimtar
Aplikimi Përfundimtar
Aplikimi Përfundimtar
Aplikimi Përfundimtar
Aplikimi Përfundimtar
Aplikimi Përfundimtar

Urime! Aplikacioni juaj shkarkohet në telefonin tuaj dhe pajisja juaj e veshur ngarkohet dhe transmeton të dhëna.

HALL APLIKIMIN

Për të filluar, klikoni në ikonën e lëshuesit për aplikacionin.

LEJAT E Grantit

Ju do të duhet të miratoni përdorimin e disa lejeve që aplikacioni të funksionojë siç duhet.

SHKANI P FORR Pajisjet

Tjetra, klikoni në butonin "Skano" në këndin e sipërm të majtë të aplikacionit.

ZGJIDH Pajisjen Tënde të Veshur

Tjetra, zgjidhni pajisjen tuaj të veshshme nga lista e pajisjeve të disponueshme BLE. Emri i tij është "BLE Arduino Hardware". Merrni të dhënaPritni derisa aplikacioni të marrë të dhënat AGM dhe përcakton se ku përdoruesi është ende ose lëviz. SHIKONI REZULTATET TUAJA Kontrolloni rezultatet në ekran! Klikoni butonin e sinkronizimit për të marrë një lexim tjetër të të dhënave.

Recommended: