Taula de continguts:
- Subministraments
- Pas 1: dissenyar serveis i característiques personalitzats
- Pas 2: Codi Arduino
- Pas 3: Codi d'Android Studio
- Pas 4: sol·licitud final
Vídeo: Creeu un rastrejador de moviment usable (BLE des d'Arduino fins a una aplicació personalitzada d'Android Studio): 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:10
Bluetooth Low Energy (BLE) és una forma de comunicació Bluetooth de baixa potència. Els dispositius portables, com ara les peces intel·ligents que ajudo a dissenyar a Predictive Wear, han de limitar el consum d’energia sempre que sigui possible per allargar la vida de la bateria i fer servir sovint BLE. El Grup d'Interès Especial Bluetooth (SIG) defineix diverses especificacions que un dispositiu hauria d'implementar per interactuar amb un dispositiu Bluetooth, que anomenen "perfils". La majoria de perfils d'aplicacions utilitzen el perfil general d'atribut (GATT) per enviar dades mitjançant un enllaç BLE. Hi ha tres conceptes fonamentals a BLE: perfils, serveis i atributs.
Bluetooth SIG ha normalitzat molts perfils, serveis i atributs comuns. No obstant això, quan es crea maquinari personalitzat, sovint cal crear serveis i atributs personalitzats i no hi ha molts tutorials disponibles. Per fer les coses més difícils, Adafruit no proporciona cap guia sobre el disseny d’aplicacions mòbils per combinar-les amb els seus mòduls BLE i el codi font de les seves aplicacions és difícil d’enginyeria inversa.
Aquest tutorial pretén explicar:
- Com dissenyar serveis i característiques GATT personalitzats
- Com programar Adafruit Bluefruit LE SPI Friend perquè actuï com a servidor GATT per a aquests serveis i característiques personalitzats
- Com programar un dispositiu Android perquè actuï com a client GATT per llegir les dades del servidor GATT
No es pretén que aquest tutorial es pugui traduir en una aplicació preparada per a la producció, sinó simplement una introducció a BLE.
Lectura de fons:
- Documentació Adafruit Bluefruit LE SPI Friend
- Si no esteu familiaritzat amb GATT o BLE
Subministraments
- 1x: un dispositiu Arduino (estic utilitzant UNO per a aquest tutorial)
- 1x - Adafruit Bluefruit LE SPI Friend
- 8x: cables de pont masculí a masculí
- Equip bàsic de soldadura (per soldar els passadors de capçalera del SPI Friend)
- Un ordinador (per programar el dispositiu Arduino i el dispositiu Android)
Pas 1: dissenyar serveis i característiques personalitzats
INTRODUCCIÓ
Aquest article fa una gran feina explicant com dissenyar serveis i característiques personalitzats. Us recomano llegir aquest article. A continuació ofereixo una descripció molt senzilla que descuida les subtileses a favor de la simplicitat.
Els serveis GATT són una col·lecció de característiques.
Les característiques del GATT contenen una propietat, un valor i zero o més descriptors.
- Propietat: com han de gestionar les dades el client (aplicació per a Android), p. llegir, escriure, escriure sense resposta, notificar i indicar.
- Valor: el valor real de la característica, p. Ex. 1089
- Descriptors: es tracta d'informació sobre el valor, p. la unitat, mil·lisegons
DISSENY
D’acord, ara ja sabeu què són els serveis i les característiques, hem d’esbrinar com dissenyar alguns serveis i característiques per obtenir les nostres dades personalitzades i enviar-les des del nostre servidor GATT (Arduino) al client (aplicació per a Android). Considerem un dispositiu Arduino que recopila dades d’un mòdul acceleròmetre-giroscopi (AGM). Volem recollir mesures de giroscopi i acceleració de tres eixos espacials i el temps en què es van prendre aquestes mesures i transmetre aquestes dades a la nostra aplicació mòbil. També volem saber quan hem de carregar el dispositiu, de manera que volem llegir el nivell de la bateria i transmetre’l a la nostra aplicació mòbil.
1. Podem utilitzar algun dels serveis i característiques estàndard?
Bluetooth SIG ha normalitzat molts serveis i característiques comuns. En primer lloc, comproveu-los per veure si podeu cooptar amb algun dels serveis i característiques estandarditzats. Els serveis i les característiques estàndard poden utilitzar paquets de dades molt més petits, ja que l’identificador únic universal (UUID) és de 16 bits, mentre que els serveis i característiques personalitzats han d’utilitzar 128 bits per als seus UUID. Més informació sobre els UUID més endavant. De la nostra cerca, hem trobat un "servei de bateria" estandarditzat que conté un "nivell de bateria" característic.
2. Separeu tots els valors de dades que vulgueu enviar per BLE en característiques i serveis
Podem dividir els nostres punts de dades personalitzats en set característiques personalitzades dins d’un servei personalitzat. Anomenarem aquest servei "servei AGM". Contindrà 7 característiques: acceleració x, acceleració y, acceleració z, giroscopi x, giroscopi y, giroscopi z i una referència temporal.
3. Determineu les propietats necessàries per a cada característica
Hi ha diverses propietats que pot tenir una característica.
- Llegir: el client (aplicació Android) pot llegir un valor des del servidor GATT (Arduino)
- Escriure: el client pot canviar un valor des del servidor GATT
- Indiqueu: es notificarà al client si canvia un valor del servidor GATT i s’espera que el client enviï confirmació al servidor GATT
- Notificar: el client rebrà una notificació si canvia un valor del servidor GATT i no s’espera que el client enviï confirmació al servidor GATT
Per a aquest tutorial, establirem totes les nostres característiques a llegir, a excepció del nivell de bateria que tindrà propietats de notificació i lectura.
4. Genereu UUID per a serveis i característiques personalitzats i cerqueu UUID estàndard
Com he esmentat breument anteriorment, els serveis i característiques estandarditzats per Bluetooth SIG utilitzen un UUID de 16 bits mentre que els serveis i característiques personalitzats utilitzen UUID de 128 bits. Per exemple, consulteu el número assignat del servei de bateria al Bluetooth SIG. El número assignat 0x180F representa el UUID de 128 bits "0000180F-0000-1000-8000-00805F9B34FB". Els quatre dígits (16 bits) en negreta són exclusius del servei o característica estandarditzada particulars, mentre que els altres caràcters es conserven entre tots els serveis i característiques estandarditzats. Atès que tant el client com el servidor GATT saben que els serveis i les característiques estandarditzades només varien segons els dígits en negreta, es poden reduir substancialment les mides dels paquets de dades. No obstant això, els serveis i les característiques personalitzades no poden funcionar sota aquest mateix supòsit.
En canvi, els serveis i característiques personalitzats han d’utilitzar UUID de 128 bits sense abreviar. Aquí hi ha un generador d’UUID en línia. Qualsevol UUID que no sigui l’UUID estandarditzat és acceptable per a un UUID personalitzat. No obstant això, una convenció de noms típica consisteix a designar un servei personalitzat 00000001- … i les característiques d'aquest servei personalitzat 00000002- …
Aquí teniu un full de càlcul resum dels serveis i característiques que implementarem juntament amb els seus UUID
Pas 2: Codi Arduino
ACTUALITZA EL BLUEFRUIT LE SPI FRIEND
En primer lloc, connecteu l’Adafruit Bluefruit LE SPI Friend tal com especifiquen a la seva guia de connexió i engegueu el dispositiu Arduino. Assegureu-vos que podeu trobar Adafruit Bluefruit LE SPI Friend al vostre dispositiu Android en cercar dispositius Bluetooth. Descarregueu l'aplicació Bluefruit Connect, connecteu-vos a l'Adafruit Bluefruit LE SPI Friend i permeteu-li actualitzar el firmware del dispositiu. Aquest pas és important. Si no actualitzeu el microprogramari, és probable que fallin les ordres que emeteu el dispositiu mitjançant Arduino i no hi haurà cap error evident per descobrir quin és el problema.
Aquí el meu repositori per a aquest projecte. Podeu veure el codi Arduino complet aquí.
VISIÓ GENERAL
Algunes coses importants a tenir en compte:
- Al mètode setup (), tots els UUID personalitzats han de contenir "-" entre cada dos caràcters. Per exemple, funcionarà "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" no funcionarà.
- Tingueu en compte que al mètode setup (), "battery.begin (true);" crida "ble.reset ();" automàticament. Si no utilitzeu el servei de bateria com he fet, haureu de restablir el mòdul ble (utilitzeu "ble.reset ();") on tinc l'ordre "battery.begin (true);".
- Al mètode setup (), canvieu "if (! Ble.begin (false))" per "if (! Ble.begin (true))" si voleu depurar.
Aquest codi s’explica per si mateix. He inclòs descripcions de cada mètode personalitzat. El mètode de configuració prepara el mòdul BLE per actuar com a servidor GATT. El mètode de bucle passa per un fals escombrat del mòdul giroscopi de l’acceleròmetre (AGM) i genera un número aleatori d’1 a 100 per a aquests valors. La bateria s’esgota un 1% per simular l’ús de la bateria. Podeu substituir aquest codi fàcilment pels valors reals del sensor. Aquest codi suposa que transmetreu una matriu de dades AGM, de 6 mesures de longitud, en lloc d'una mesura única, ja que probablement és més útil analitzar una finestra de dades AGM que un sol punt de dades. Si modifiqueu la mida de la matriu, tingueu en compte que hi haurà canvis necessaris al codi d'estudi d'Android. Per capturar un conjunt de dades, heu de passar un comptador juntament amb les dades que vulgueu enviar. Aquest comptador us permet trobar on us trobeu a la finestra des de l'aplicació Android Studio, de manera que podeu esperar a escoltar els punts de dades que falten a la finestra. Sense el comptador o amb una matriu de mida diferent, el projecte Android Studio faltarà punts de dades o quedarà atrapat en un bucle esperant els punts de dades restants que espera.
Pas 3: Codi d'Android Studio
Aquí el meu repositori per a aquest projecte. Podeu veure el codi complet d'Android Studio aquí.
VISIÓ GENERAL
Seguiré actualitzant-ho amb una visió general més completa de com funcionen detalladament el codi arduino i Android … L’aplicació és totalment funcional, així que no dubteu a mirar el codi vosaltres mentrestant.
Pas 4: sol·licitud final
Enhorabona! La vostra aplicació es descarrega al telèfon i el dispositiu portàtil es carrega i transmet dades.
INICIU L'APLICACIÓ
Per començar, feu clic a la icona del menú d'aplicacions de l'aplicació.
PERMISOS DE CONCESSIÓ
Haureu d'aprovar l'ús d'alguns permisos perquè l'aplicació funcioni correctament.
RECERCA DE DISPOSITIUS
A continuació, feu clic al botó "Escaneja" a l'extrem superior esquerre de l'aplicació.
Trieu el vostre dispositiu usable
A continuació, seleccioneu el dispositiu usable de la llista de dispositius BLE disponibles. El seu nom és "BLE Arduino Hardware". OBTENCIÓ DE DADES Espereu mentre l'aplicació obtingui les dades AGM i determini on l'usuari es troba o es mou. VEURE ELS SEUS RESULTATS Consulteu els resultats a la pantalla. Feu clic al botó de sincronització per obtenir una altra lectura de dades.
Recomanat:
Rastrejador GPS de bricolatge --- Aplicació Python: 5 passos (amb imatges)
DIY GPS Tracker --- Aplicació Python: Vaig participar en un esdeveniment de ciclisme fa dues setmanes. Un cop acabat, volia comprovar la ruta i la velocitat que feia en aquell moment. Malauradament, no es va aconseguir. Ara faig servir ESP32 per fer un rastrejador GPS i el portaré a gravar la meva ruta en bicicleta
Creeu l'aplicació bàsica "Hello World" des de zero a Flutter: 7 passos
Creeu l'aplicació bàsica "Hello World" des de Scratch a Flutter: Hola nois, he creat Flutter Tutorial per a principiants. Si voleu començar a desenvolupar Flutter ara, això us ajudarà a Flutter Tutorial per a principiants
Com crear una aplicació d'Android amb Android Studio: 8 passos (amb imatges)
Com crear una aplicació d'Android amb Android Studio: aquest tutorial us ensenyarà els conceptes bàsics sobre com crear una aplicació d'Android mitjançant l'entorn de desenvolupament d'Android Studio. A mesura que els dispositius Android són cada cop més habituals, la demanda de noves aplicacions només augmentarà. Android Studio és fàcil d'utilitzar (un
Creeu una aplicació per a iPhone que parli amb Particle Mesh: 4 passos
Creeu una aplicació per a iPhone que parli amb Particle Mesh: en aquest projecte, aprendreu a carregar una aplicació al vostre iPhone que parli directament amb un tauler de particules de 3a generació. El temps trigarà menys de 20 minuts. A més, podeu començar a jugar de seguida !! Comencem. Coses que no
Presa controlada pel moviment: des d’una llum de detecció de moviment: 6 passos
Presa controlada pel moviment: des d’una llum de detecció de moviment: Imagineu-vos que sou un enganyós que aneu a la casa més terrorífica de la casa. Després de passar per davant de tots els dimonis, fantasmes i cementiris, finalment arribareu al darrer camí. Podeu veure els caramels en un bol que teniu al davant! Però de sobte un gho