Cuprins:
- Provizii
- Pasul 1: Proiectați servicii și caracteristici personalizate
- Pasul 2: Cod Arduino
- Pasul 3: Android Studio Code
- Pasul 4: Cerere finală
Video: Construiți un tracker de mișcare portabil (BLE de la Arduino la o aplicație personalizată Android Studio): 4 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Bluetooth Low Energy (BLE) este o formă de comunicație Bluetooth de consum redus. Dispozitivele purtabile, cum ar fi articolele de îmbrăcăminte inteligente pe care le ajut să le proiectez la Predictive Wear, trebuie să limiteze consumul de energie ori de câte ori este posibil pentru a prelungi durata de viață a bateriei și să utilizeze frecvent BLE. Grupul de interes special Bluetooth (SIG) definește mai multe specificații pe care un dispozitiv trebuie să le implementeze pentru a interacționa cu un dispozitiv Bluetooth, pe care îl numesc „profiluri”. Majoritatea profilurilor aplicației utilizează profilul general de atribute (GATT) pentru a trimite date printr-un link BLE. Există trei concepte fundamentale în BLE: profiluri, servicii și atribute.
Bluetooth SIG a standardizat multe profiluri, servicii și atribute comune. Cu toate acestea, atunci când creați hardware personalizat, este adesea nevoie să creați servicii și atribute personalizate și nu sunt disponibile multe tutoriale. Pentru a face lucrurile mai dificile, Adafruit nu oferă nicio îndrumare cu privire la proiectarea aplicațiilor mobile care să se asocieze cu modulele lor BLE, iar codul sursă pentru aplicațiile lor este dificil de inversat.
Acest tutorial își propune să explice:
- Cum să proiectați servicii și caracteristici GATT personalizate
- Cum se programează Adafruit Bluefruit LE SPI Friend să acționeze ca un server GATT pentru aceste servicii și caracteristici personalizate
- Cum se programează un dispozitiv Android să acționeze ca client GATT pentru a citi datele de pe serverul GATT
Acest tutorial nu este destinat a fi tradus într-o aplicație pregătită pentru producție - aceasta este pur și simplu o introducere în BLE.
Lectură de fundal:
- Documentația Adafruit Bluefruit LE SPI Friend
- Dacă nu sunteți familiarizați cu GATT sau BLE
Provizii
- 1x - Un dispozitiv Arduino (folosesc UNO pentru acest tutorial)
- 1x - Adafruit Bluefruit LE SPI Friend
- 8x - fire de la jumper la mascul
- Echipament de lipit de bază (pentru lipirea știfturilor antetului de pe SPI Friend)
- Un computer (pentru a programa dispozitivul Arduino și dispozitivul Android)
Pasul 1: Proiectați servicii și caracteristici personalizate
INTRODUCERE
Acest articol face o treabă excelentă explicând cum să proiectați servicii și caracteristici personalizate. Vă recomand cu drag să citiți acest articol. Vă ofer mai jos o prezentare foarte simplă, care neglijează subtilitățile în favoarea simplității.
Serviciile GATT sunt o colecție de caracteristici.
Caracteristicile GATT conțin o proprietate, o valoare și zero sau mai mulți descriptori.
- Proprietate: modul în care datele trebuie tratate de client (aplicația Android) de ex. citiți, scrieți, scrieți fără răspuns, anunțați și indicați.
- Valoare: valoarea reală a caracteristicii, de ex. 1089
- Descriptori: acestea sunt informații despre valoare de ex. unitatea, milisecunde
PROIECTA
Bine, acum știi ce sunt serviciile și caracteristicile, trebuie să ne dăm seama cum să proiectăm unele servicii și caracteristici pentru a obține datele noastre personalizate și pentru a le trimite de pe serverul nostru GATT (Arduino) către client (aplicația Android). Să luăm în considerare un dispozitiv Arduino care colectează date de la un modul accelerometru-giroscop (AGM). Vrem să colectăm măsurători de giroscop și accelerație de pe trei axe spațiale și timpul în care au fost efectuate aceste măsurători și să transmitem aceste date aplicației noastre mobile. De asemenea, vrem să știm când trebuie să încărcăm dispozitivul, așa că vrem să citim nivelul bateriei și să îl transmitem aplicației noastre mobile.
1. Putem folosi oricare dintre serviciile și caracteristicile standard?
Bluetooth SIG a standardizat multe servicii și caracteristici comune. Mai întâi, verificați-le pentru a vedea dacă puteți coopta vreunul dintre serviciile și caracteristicile standardizate. Serviciile și caracteristicile standard pot utiliza pachete de date mult mai mici, deoarece Identificatorul unic universal (UUID) este de 16 biți, în timp ce serviciile și caracteristicile personalizate trebuie să utilizeze 128 de biți pentru UUID-urile lor. Mai multe despre UUID-uri mai târziu. Din căutarea noastră, am găsit un „serviciu de baterie” standardizat care conține un „nivel de baterie” caracteristic.
2. Separați toate valorile de date pe care doriți să le trimiteți prin BLE în caracteristici și servicii
Putem împărți punctele noastre de date personalizate în șapte caracteristici personalizate într-un singur serviciu personalizat. Vom numi acest serviciu „serviciul AGM”. Acesta va conține 7 caracteristici: accelerare x, accelerare y, accelerație z, giroscop x, giroscop y, giroscop z și o referință în timp.
3. Determinați proprietățile necesare pentru fiecare caracteristică
Există mai multe proprietăți pe care le poate avea o caracteristică.
- Citiți: Clientul (aplicația Android) poate citi o valoare de pe serverul GATT (Arduino)
- Scrie: Clientul poate modifica o valoare de pe serverul GATT
- Indicați: Clientul va fi notificat dacă o valoare se modifică de la serverul GATT și se așteaptă ca clientul să trimită confirmarea către serverul GATT
- Notificare: Clientul va fi notificat dacă o valoare se modifică de la serverul GATT și nu este de așteptat ca Clientul să trimită confirmarea către serverul GATT
Pentru acest tutorial, vom seta toate caracteristicile noastre de citit, cu excepția nivelului bateriei, care va avea atât proprietăți de notificare, cât și de citire.
4. Generați UUID-uri pentru servicii și caracteristici personalizate și găsiți UUID-uri standard
După cum am menționat pe scurt mai devreme, serviciile și caracteristicile standardizate Bluetooth SIG utilizează un UUID pe 16 biți, în timp ce serviciile și caracteristicile personalizate utilizează UUID-uri pe 128 de biți. De exemplu, consultați numărul atribuit serviciului bateriei pe Bluetooth SIG. Numărul atribuit 0x180F reprezintă UUID-ul pe 128 de biți "0000180F-0000-1000-8000-00805F9B34FB". Cele patru cifre (16 biți) cu caractere aldine sunt unice pentru serviciul sau caracteristica standardizată, în timp ce celelalte caractere sunt păstrate între toate serviciile și caracteristicile standardizate. Deoarece atât clientul, cât și serverul GATT știu că serviciile și caracteristicile standardizate variază doar în funcție de cifrele cu caractere aldine, dimensiunile pachetelor de date pot fi reduse substanțial. Cu toate acestea, serviciile și caracteristicile personalizate nu pot funcționa sub aceeași ipoteză.
În schimb, serviciile și caracteristicile personalizate trebuie să utilizeze UUID-uri pe 128 biți fără abrevieri. Iată un generator UUID online. Orice UUID altul decât UUID standardizat este acceptabil pentru un UUID personalizat. Cu toate acestea, o convenție tipică de denumire este de a indica un serviciu personalizat 00000001-… și caracteristicile din cadrul acelui serviciu personalizat 00000002- …
Iată o foaie de calcul rezumativă a serviciilor și caracteristicilor pe care le vom implementa împreună cu UUID-urile acestora
Pasul 2: Cod Arduino
ACTUALIZAȚI BLUEFRUIT LE SPI FRIEND
Mai întâi, conectați Adafruit Bluefruit LE SPI Friend așa cum specifică în ghidul de conectare și porniți dispozitivul Arduino. Asigurați-vă că puteți găsi Adafruit Bluefruit LE SPI Friend pe dispozitivul dvs. Android atunci când căutați dispozitive Bluetooth. Descărcați aplicația Bluefruit Connect, conectați-vă la Adafruit Bluefruit LE SPI Friend și permiteți-i să actualizeze firmware-ul de pe dispozitiv. Acest pas este important. Dacă nu actualizați firmware-ul, comenzile pe care le lansați dispozitivul prin Arduino vor eșua probabil și nu va exista o eroare evidentă pentru a descoperi care este problema.
Aici repo-ul meu pentru acest proiect. Puteți vedea codul Arduino complet aici.
PREZENTARE GENERALĂ
Câteva lucruri importante de remarcat:
- În metoda setup (), toate UUID-urile personalizate trebuie să conțină „-” între fiecare două caractere. De exemplu, va funcționa „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” nu va funcționa.
- Rețineți că în metoda setup (), „battery.begin (true);” apelează „ble.reset ();” automat. Dacă nu utilizați serviciul bateriei așa cum am făcut, trebuie să resetați modulul ble (utilizați "ble.reset ();") unde am comanda "battery.begin (true);".
- În metoda setup (), schimbați „if (! Ble.begin (false))” la „if (! Ble.begin (true))” dacă doriți să depanați.
Acest cod este destul de auto-explicativ. Am inclus descrieri ale fiecărei metode personalizate. Metoda de configurare pregătește modulul BLE să acționeze ca server GATT. Metoda buclei trece printr-o măturare falsă a modulului giroscopului accelerometrului (AGM) și generează un număr aleatoriu de la 1 la 100 pentru aceste valori. Bateria este descărcată cu 1% pentru a simula utilizarea bateriei. Puteți înlocui acest cod cu valorile reale ale senzorului cu ușurință. Acest cod presupune că veți transmite o serie de date AGM, cu 6 măsurători, mai degrabă decât o singură măsurare, deoarece analizarea unei ferestre de date AGM este probabil mai utilă decât un singur punct de date. Dacă modificați dimensiunea matricei, rețineți că vor exista modificări necesare în codul de studio Android. Pentru a captura o serie de date, trebuie să treceți un contor împreună cu datele pe care intenționați să le trimiteți. Acest contor vă permite să găsiți unde vă aflați în fereastră din aplicația Android Studio, astfel încât să puteți aștepta să ascultați punctele de date lipsă din fereastră. Fără tejghea sau cu o matrice de dimensiuni diferite, proiectul de studio Android va pierde fie punctele de date, fie va rămâne blocat într-o buclă în așteptarea punctelor de date rămase pe care le așteaptă.
Pasul 3: Android Studio Code
Aici repo-ul meu pentru acest proiect. Puteți vedea codul complet Android Studio aici.
PREZENTARE GENERALĂ
Voi continua să actualizez acest lucru cu o prezentare mai detaliată a modului în care funcționează în detaliu codul arduino și Android … Aplicația este pe deplin funcțională, așa că nu ezitați să priviți singur codul între timp.
Pasul 4: Cerere finală
Felicitări! Aplicația dvs. este descărcată pe telefon, iar dispozitivul purtabil este încărcat și transmite date.
LANSAȚI APLICAȚIA
Pentru a începe, faceți clic pe pictograma lansatorului pentru aplicație.
PERMISII DE ACORDARE
Va trebui să aprobați utilizarea unor permisiuni pentru ca aplicația să funcționeze corect.
SCANARE DISPOZITIVE
Apoi, faceți clic pe butonul „Scanați” din colțul din stânga sus al aplicației.
ALEGEȚI-VĂ DISPOZITIVUL PORTABIL
Apoi, selectați dispozitivul purtabil din lista dispozitivelor BLE disponibile. Numele său este „BLE Arduino Hardware”. OBȚINEȚI DATE Așteptați în timp ce aplicația obține datele AGM și determină unde se află sau se mișcă utilizatorul. VEZI REZULTATELE tale Verifică rezultatele pe ecran! Faceți clic pe butonul de sincronizare pentru a obține o altă citire a datelor.
Recomandat:
Senzor de mișcare portabil: 4 pași
Senzor de mișcare portabil: Bună ziua, am creat un senzor de mișcare portabil cu baterie pe care aș dori să-l împărtășesc cu dvs
Cum să creați o aplicație Android cu Android Studio: 8 pași (cu imagini)
Cum să creați o aplicație Android cu Android Studio: acest tutorial vă va învăța noțiunile de bază despre cum să creați o aplicație Android utilizând mediul de dezvoltare Android Studio. Pe măsură ce dispozitivele Android devin din ce în ce mai frecvente, cererea de aplicații noi va crește. Android Studio este un instrument ușor de utilizat (un
OpenLogger: un înregistrator de date portabil de înaltă rezoluție, Wi-Fi, Open Source, portabil: 7 pași
OpenLogger: un înregistrator de date portabil, cu sursă deschisă, cu sursă deschisă, cu sursă deschisă: OpenLogger este un înregistrator de date portabil, cu sursă deschisă, cu cost redus, cu rezoluție ridicată, conceput pentru a oferi măsurători de înaltă calitate fără a necesita software scump sau software de scriere de la zero. Dacă sunteți inginer, om de știință sau entuziast care nu
Automatizare simplă la domiciliu (aplicație Bluetooth personalizată): 6 pași
Automatizare simplă la domiciliu (aplicație Bluetooth personalizată): în acest tutorial vă voi arăta cum să construiți o automatizare casnică simplă (adică putem controla dispozitivele noastre de uz casnic cu smartphone-ul nostru)
Amplificator portabil cu miniatură portabil (și sistem sonar pentru articole portabile, etc.): 7 pași
Amplificator portabil cu miniatură portabil (și sistem sonar pentru articole portabile, etc.): Construiți un amplificator portabil în formă de miniatură care poate fi încorporat în rame de ochelari și pentru a crea un sistem de vizionare sonar pentru nevăzători sau o ultrasunete simplă mașină care îți monitorizează continuu inima și folosește Învățarea Umană-Mașină pentru a avertiza despre p