Table des matières:
- Fournitures
- Étape 1: Concevoir des services et des caractéristiques personnalisés
- Étape 2: Code Arduino
- Étape 3: Code Studio Android
- Étape 4: Demande finale
Vidéo: Construire un tracker de mouvement portable (BLE d'Arduino à une application Android Studio personnalisée): 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Bluetooth Low Energy (BLE) est une forme de communication Bluetooth à faible consommation. Les appareils portables, comme les vêtements intelligents que j'aide à concevoir chez Predictive Wear, doivent limiter la consommation d'énergie dans la mesure du possible pour prolonger la durée de vie de la batterie et utiliser fréquemment le BLE. Le Bluetooth Special Interest Group (SIG) définit plusieurs spécifications qu'un appareil doit implémenter pour interagir avec un appareil Bluetooth, qu'ils appellent "profils". La plupart des profils d'application utilisent le General Attribute Profile (GATT) pour envoyer des données via une liaison BLE. Il existe trois concepts fondamentaux dans BLE: les profils, les services et les attributs.
Bluetooth SIG a standardisé de nombreux profils, services et attributs communs. Cependant, lors de la création de matériel personnalisé, il est souvent nécessaire de créer des services et des attributs personnalisés et il n'y a pas beaucoup de tutoriels disponibles. Pour compliquer les choses, Adafruit ne fournit aucun guide sur la conception d'applications mobiles à coupler avec leurs modules BLE et le code source de leurs applications est difficile à rétroconcevoir.
Ce tutoriel a pour but d'expliquer:
- Comment concevoir des services et des caractéristiques GATT personnalisés
- Comment programmer l'Adafruit Bluefruit LE SPI Friend pour qu'il agisse en tant que serveur GATT pour ces services et caractéristiques personnalisés
- Comment programmer un appareil Android pour qu'il agisse en tant que client GATT pour lire les données du serveur GATT
Ce didacticiel n'est pas destiné à être traduit dans une application prête pour la production - il s'agit simplement d'une introduction à BLE.
Lecture de fond:
- Documentation Adafruit Bluefruit LE SPI Friend
- Si vous ne connaissez pas GATT ou BLE
Fournitures
- 1x - Un appareil Arduino (j'utilise l'UNO pour ce tutoriel)
- 1x - Adafruit Bluefruit LE SPI Friend
- 8x - cavaliers mâles à mâles
- Équipement de soudage de base (pour souder les broches d'en-tête sur le SPI Friend)
- Un ordinateur (pour programmer l'appareil Arduino et l'appareil Android)
Étape 1: Concevoir des services et des caractéristiques personnalisés
INTRODUCTION
Cet article explique très bien comment concevoir des services et des caractéristiques personnalisés. Je recommande fortement de lire cet article. Je donne ci-dessous un aperçu très simple qui néglige les subtilités au profit de la simplicité.
Les services du GATT sont un ensemble de caractéristiques.
Les caractéristiques du GATT contiennent une propriété, une valeur et zéro ou plusieurs descripteurs.
- Propriété: comment les données doivent être traitées par le client (application Android), par ex. lire, écrire, écrire sans réponse, notifier et indiquer.
- Valeur: la valeur réelle de la caractéristique, par ex. 1089
- Descripteurs: il s'agit d'informations sur la valeur, par ex. l'unité, millisecondes
CONCEPTION
D'accord, maintenant vous savez quels sont les services et les caractéristiques, nous devons trouver comment concevoir certains services et caractéristiques pour obtenir nos données personnalisées et les envoyer de notre serveur GATT (Arduino) au client (application Android). Considérons un appareil Arduino qui collecte des données à partir d'un module accéléromètre-gyroscope (AGM). Nous souhaitons collecter des mesures de gyroscope et d'accélération à partir de trois axes spatiaux et l'heure à laquelle ces mesures ont été prises et transmettre ces données à notre application mobile. Nous voulons également savoir quand nous devons charger l'appareil, nous voulons donc lire le niveau de la batterie et le transmettre à notre application mobile.
1. Pouvons-nous utiliser l'un des services et caractéristiques standard ?
Bluetooth SIG a standardisé de nombreux services et caractéristiques communs. Tout d'abord, vérifiez-les pour voir si vous pouvez coopter l'un des services et caractéristiques standardisés. Les services et caractéristiques standard peuvent utiliser des paquets de données beaucoup plus petits car l'identificateur unique universel (UUID) est de 16 bits tandis que les services et caractéristiques personnalisés doivent utiliser 128 bits pour leurs UUID. Plus d'informations sur les UUID plus tard. De notre recherche, nous avons trouvé un "service de batterie" standardisé qui contient un "niveau de batterie" caractéristique.
2. Séparez toutes les valeurs de données que vous souhaitez envoyer via BLE en caractéristiques et services
Nous pouvons diviser nos points de données personnalisés en sept caractéristiques personnalisées au sein d'un service personnalisé. Nous appellerons ce service le "service AGM". Il contiendra 7 caractéristiques: accélération x, accélération y, accélération z, gyroscope x, gyroscope y, gyroscope z et une référence temporelle.
3. Déterminer les propriétés nécessaires pour chaque caractéristique
Une caractéristique peut avoir plusieurs propriétés.
- Lire: le client (application Android) peut lire une valeur à partir du serveur GATT (Arduino)
- Ecrire: le Client peut modifier une valeur depuis le Serveur GATT
- Indiquer: le client sera averti si une valeur change du serveur GATT et le client doit envoyer une confirmation au serveur GATT
- Notifier: le client sera notifié si une valeur change du serveur GATT et le client n'est pas censé envoyer de confirmation au serveur GATT
Pour ce tutoriel, nous allons mettre toutes nos caractéristiques à lire, à l'exception du niveau de batterie qui aura à la fois des propriétés de notification et de lecture.
4. Générez des UUID pour des services et des caractéristiques personnalisés et trouvez des UUID standard
Comme je l'ai brièvement mentionné précédemment, les services et caractéristiques standardisés Bluetooth SIG utilisent un UUID de 16 bits, tandis que les services et caractéristiques personnalisés utilisent des UUID de 128 bits. Par exemple, consultez le numéro attribué au service de batterie sur le Bluetooth SIG. Le numéro attribué 0x180F représente l'UUID 128 bits "0000180F-0000-1000-8000-00805F9B34FB". Les quatre chiffres (16 bits) en gras sont propres au service ou à la caractéristique normalisés particuliers, tandis que les autres caractères sont conservés entre tous les services et caractéristiques normalisés. Étant donné que le client et le serveur du GATT savent que les services et caractéristiques normalisés ne varient que par les chiffres en gras, la taille des paquets de données peut être considérablement réduite. Cependant, les services et caractéristiques personnalisés ne peuvent pas fonctionner sous cette même hypothèse.
Au lieu de cela, les services et caractéristiques personnalisés doivent utiliser des UUID 128 bits non abrégés. Voici un générateur d'UUID en ligne. Tout UUID autre que l'UUID standardisé est acceptable pour un UUID personnalisé. Cependant, une convention de nommage typique consiste à désigner un service personnalisé 0000001-… et les caractéristiques de ce service personnalisé 00000002-…
Voici une feuille de calcul récapitulative des services et caractéristiques que nous mettrons en œuvre avec leurs UUID
Étape 2: Code Arduino
METTRE À JOUR LE BLUEFRUIT LE SPI FRIEND
Tout d'abord, branchez l'Adafruit Bluefruit LE SPI Friend comme ils le spécifient dans leur guide de connexion et allumez l'appareil Arduino. Assurez-vous que vous pouvez trouver l'Adafruit Bluefruit LE SPI Friend sur votre appareil Android lors de la recherche d'appareils Bluetooth. Téléchargez l'application Bluefruit Connect, connectez-vous à l'Adafruit Bluefruit LE SPI Friend et autorisez-le à mettre à jour le firmware de l'appareil. Cette étape est importante. Si vous ne mettez pas à jour le micrologiciel, les commandes que vous émettez à l'appareil via Arduino échoueront probablement et il n'y aura pas d'erreur évidente pour vous permettre de découvrir quel est le problème.
Voici mon repo pour ce projet. Vous pouvez voir le code Arduino complet ici.
APERÇU
Quelques points importants à noter:
- Dans la méthode setup(), tous les UUID personnalisés doivent contenir "-" entre tous les deux caractères. Par exemple, "AT+GATTADDCHAR=UUID128=00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" fonctionnera. "AT+GATTADDCHAR=UUID128=00000005-627E-47E5-A3fCDDABD97AA966" ne fonctionnera pas.
- Notez que dans la méthode setup(), "battery.begin(true);" appelle "ble.reset();" automatiquement. Si vous n'utilisez pas le service de batterie comme je l'ai fait, vous devez réinitialiser le module ble (utilisez "ble.reset();") où j'ai la commande "battery.begin(true);".
- Dans la méthode setup(), remplacez "if (!ble.begin(false))" par "if (!ble.begin(true))" si vous souhaitez déboguer.
Ce code est assez explicite. J'ai inclus des descriptions de chaque méthode personnalisée. La méthode de configuration prépare le module BLE à agir en tant que serveur GATT. La méthode de boucle passe par un faux balayage du module accéléromètre gyroscope (AGM) et génère un nombre aléatoire de 1 à 100 pour ces valeurs. La batterie est épuisée de 1% pour simuler l'utilisation de la batterie. Vous pouvez facilement remplacer ce code par les valeurs réelles du capteur. Ce code suppose que vous transmettrez un tableau de données AGM, de 6 mesures, plutôt qu'une seule mesure, car l'analyse d'une fenêtre de données AGM est probablement plus utile qu'un seul point de données. Si vous modifiez la taille du tableau, notez que des modifications seront nécessaires dans le code du studio Android. Pour capturer un tableau de données, vous devez passer un compteur avec les données que vous avez l'intention d'envoyer. Ce compteur vous permet de trouver où vous en êtes dans la fenêtre de l'application Android Studio afin que vous puissiez attendre d'écouter les points de données manquants dans la fenêtre. Sans le compteur ou avec un tableau de taille différente, le projet de studio Android manquera des points de données ou restera bloqué dans une boucle en attendant les points de données restants qu'il attend.
Étape 3: Code Studio Android
Voici mon repo pour ce projet. Vous pouvez voir le code complet d'Android Studio ici.
APERÇU
Je continuerai à mettre à jour cela avec un aperçu plus détaillé du fonctionnement du code arduino et android en détail… L'application est entièrement fonctionnelle, alors n'hésitez pas à regarder le code vous-même en attendant.
Étape 4: Demande finale
Toutes nos félicitations! Votre application est téléchargée sur votre téléphone et votre appareil portable est chargé et transmet des données.
LANCEZ L'APPLICATION
Pour commencer, cliquez sur l'icône de lancement de l'application.
AUTORISATIONS D'OCTROI
Vous devrez approuver l'utilisation de certaines autorisations pour que l'application fonctionne correctement.
NUMÉRISATION DES APPAREILS
Ensuite, cliquez sur le bouton "Scan" dans le coin supérieur gauche de l'application.
SÉLECTIONNEZ VOTRE APPAREIL PORTABLE
Ensuite, sélectionnez votre appareil portable dans la liste des appareils BLE disponibles. Son nom est "BLE Arduino Hardware". GET DATA Attendez que l'application récupère les données AGM et détermine où l'utilisateur est immobile ou en mouvement. VOIR VOS RÉSULTATSConsultez les résultats à l'écran ! Cliquez sur le bouton de synchronisation pour obtenir une autre lecture des données.
Conseillé:
Comment créer une application Android avec Android Studio : 8 étapes (avec photos)
Comment créer une application Android avec Android Studio : Ce didacticiel vous apprendra les bases de la création d'une application Android à l'aide de l'environnement de développement Android Studio. À mesure que les appareils Android deviennent de plus en plus courants, la demande de nouvelles applications ne fera qu'augmenter. Android Studio est un logiciel facile à utiliser (un
Domotique simple (application Bluetooth personnalisée) : 6 étapes
Domotique simple (application Bluetooth personnalisée) : dans ce tutoriel, je vais vous montrer comment construire une domotique simple (c'est-à-dire que nous pouvons contrôler nos appareils domestiques avec notre smartphone)
Créer une application Android pour les petites entreprises à l'aide de l'application MIT et de Google Fusion Table : 7 étapes
Création d'une application Android pour les petites entreprises à l'aide de l'application MIT et de Google Fusion Table : avez-vous déjà voulu créer votre propre application disponible sur Google Play Store !!! Si vous avez une entreprise, ce tutoriel va changer votre vie. Après avoir lu ceci attentivement, vous serez en mesure de créer votre propre application. Avant
Comment construire une boîte de haut-parleur pour guitare ou en construire deux pour votre chaîne stéréo. : 17 étapes (avec photos)
Comment construire un boîtier de haut-parleur de guitare ou en construire deux pour votre stéréo. : Je voulais un nouveau haut-parleur de guitare pour aller avec l'ampli à lampes que je construis. Le haut-parleur restera dans ma boutique, il n'a donc pas besoin d'être quelque chose de trop spécial. Le revêtement Tolex pourrait être trop facilement endommagé alors j'ai juste pulvérisé l'extérieur en noir après un léger ponçage
Sortie à contrôle de mouvement - À partir d'une lumière à détection de mouvement : 6 étapes
Sortie à contrôle de mouvement - À partir d'une lampe à détection de mouvement : Imaginez que vous êtes un trick-or-treater allant à la maison la plus effrayante du bloc. Après avoir dépassé toutes les goules, fantômes et cimetières, vous arrivez enfin au dernier chemin. Vous pouvez voir les bonbons dans un bol devant vous ! Mais soudain, un gho