Différences entre versions de « Bluefruit-LE-Shield-FAQ »
(28 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{Bluefruit-LE-Shield-NAV}} | {{Bluefruit-LE-Shield-NAV}} | ||
− | + | == Mon Bluefruit LE peut-il dialoguer avec un périphérique 'Classic Bluetooth' ? == | |
− | |||
− | == | ||
Non. Bluetooth Low Energy et Bluetooth 'Classic' sont deux parties d'une même noyau de spécification Bluetooth (''Bluetooth Core Specification'') -- définie et maintenue par le Bluetooth SIG -- mais sont des protocoles complètements différents fonctionnant avec des contraintes et des exigences différentes. Les deux protocoles ne peuvent pas dialoguer directement. | Non. Bluetooth Low Energy et Bluetooth 'Classic' sont deux parties d'une même noyau de spécification Bluetooth (''Bluetooth Core Specification'') -- définie et maintenue par le Bluetooth SIG -- mais sont des protocoles complètements différents fonctionnant avec des contraintes et des exigences différentes. Les deux protocoles ne peuvent pas dialoguer directement. | ||
Ligne 13 : | Ligne 11 : | ||
Les produits à base de '''nRF51'''8322 (comme celui utilisé dans ce guide) ne sont '''PAS''' capable de fonctionner en mode Centrale parce qu'il n'est pas supporté par le firmware qu'il utilise. Il n'est pas possible de faire une mise-à-jour en toute sécurité sans utiliser un matériel spécial. | Les produits à base de '''nRF51'''8322 (comme celui utilisé dans ce guide) ne sont '''PAS''' capable de fonctionner en mode Centrale parce qu'il n'est pas supporté par le firmware qu'il utilise. Il n'est pas possible de faire une mise-à-jour en toute sécurité sans utiliser un matériel spécial. | ||
− | == Pourquoi | + | == Pourquoi mes changements ne persiste t'il pas lorsque j'utilise un croquis d'exemple ? == |
La plupart des croquis effectuent une réinitialisation d'usine (FACTORY RESET) pour être certain que le module Bluefruit LE soit dans un état connu avant d'exécuter le croquis de démo. | La plupart des croquis effectuent une réinitialisation d'usine (FACTORY RESET) pour être certain que le module Bluefruit LE soit dans un état connu avant d'exécuter le croquis de démo. | ||
Ligne 22 : | Ligne 20 : | ||
Si vous ne voyez pas le flag/drapeau 'FACTORYRESET_ENABLE' dans le fichier .ino c'est que vous avez probablement une ancienne version de la bibliothèque. Vous pourriez avoir besoin de faire une mise-à-jour de la bibliothèque via le gestionnaire de bibliothèque Arduino. | Si vous ne voyez pas le flag/drapeau 'FACTORYRESET_ENABLE' dans le fichier .ino c'est que vous avez probablement une ancienne version de la bibliothèque. Vous pourriez avoir besoin de faire une mise-à-jour de la bibliothèque via le gestionnaire de bibliothèque Arduino. | ||
− | == Ai-je besoin de CTS et RTS | + | == Ai-je besoin de CTS et RTS avec mon module UART Bluefruit LE ? == |
Utiliser CTS et RTS n'est strictement nécessaire lorsque l'on utilise une connexion série matérielle (''HW serial'') mais elle devrait être utilisé lors d'une connexion série logicielle (''SW serial'') pour réguler le flux de donnée et éviter de perdre des octets. Il est également recommandé d'utiliser CTS et RTS si vous avez beaucoup de données à transférer. | Utiliser CTS et RTS n'est strictement nécessaire lorsque l'on utilise une connexion série matérielle (''HW serial'') mais elle devrait être utilisé lors d'une connexion série logicielle (''SW serial'') pour réguler le flux de donnée et éviter de perdre des octets. Il est également recommandé d'utiliser CTS et RTS si vous avez beaucoup de données à transférer. | ||
Ligne 33 : | Ligne 31 : | ||
Activer ces deux broches devrait résoudre les problèmes de fiabilité que vous pourriez rencontrer avec les grandes commandes, ou les transmissions de nombreuses commandes d'affilé. | Activer ces deux broches devrait résoudre les problèmes de fiabilité que vous pourriez rencontrer avec les grandes commandes, ou les transmissions de nombreuses commandes d'affilé. | ||
− | == | + | == Comment puis-je faire une mise-à-jour pour utiliser la dernière version du firmware? == |
− | |||
− | |||
La façon la plus facile de maintenir vos modules Bluefruit LE à jour est d'utiliser l'app [https://play.google.com/store/apps/details?id=com.adafruit.bluefruit.le.connect Bluefruit LE Connect pour Android] ou [https://itunes.apple.com/app/adafruit-bluefruit-le-connect/id830125974?mt=8 Bluefruit LE Connect pour iOS]. | La façon la plus facile de maintenir vos modules Bluefruit LE à jour est d'utiliser l'app [https://play.google.com/store/apps/details?id=com.adafruit.bluefruit.le.connect Bluefruit LE Connect pour Android] ou [https://itunes.apple.com/app/adafruit-bluefruit-le-connect/id830125974?mt=8 Bluefruit LE Connect pour iOS]. | ||
Ces deux apps inclus une fonctionnalité de mise-à-jour du firmware qui vous permet de facilement télécharger le dernier Firmware et de lancer une mise-à-jour via la connexion Bluetooth. En cas de problème, vous pouvez également utiliser l'app pour revenir à une version précédente du firmware Bluefruit LE. | Ces deux apps inclus une fonctionnalité de mise-à-jour du firmware qui vous permet de facilement télécharger le dernier Firmware et de lancer une mise-à-jour via la connexion Bluetooth. En cas de problème, vous pouvez également utiliser l'app pour revenir à une version précédente du firmware Bluefruit LE. | ||
− | == | + | == Quelle version du firmware supporte 'xxx'? == |
− | + | Adafruit publie régulièrement [https://github.com/adafruit/Adafruit_BluefruitLE_Firmware des images Firmware pour Bluefruit LE] corrigeant des bugs et ajoutant de nouvelles fonctionnalités. Chaque commande AT reprise dans le guide affiche la version du Firmware nécessaire pour utiliser la commande. | |
− | + | Pour une vue plus globale des changements du Firmware (d'une version à l'autre), vous pouvez consulter la [https://learn.adafruit.com/introducing-adafruit-ble-bluetooth-low-energy-friend/history page ''firmware history''] maintenu par Adafruit. | |
− | |||
− | == | + | == Est-ce que mon périphérique Bluefruit LE supporte ANCS? == |
+ | [https://developer.apple.com/library/content/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/Introduction/Introduction.html ANCS] (''Apple Notification Center Service'') fait partie des projets d'Adafruit (probablement durant la famille des releases 0.7.x). ANCS n'est actuellement pas supporté par Adafruit étant donné qu'il y a quelques effets de bord particuliers lorsqu'il est implémenté comme un service. | ||
− | + | == Mon Bluefruit LE est planté en mode DFU ... que puis-je faire ? == | |
+ | Si votre périphérique est planté en mode DFU (pour une raison quelconque) avec un firmware est corrompu alors il vous reste plusieurs options. | ||
− | + | Premièrement, essayer de faire une réinitialisation d'usie (''factory reset'') en maintenant le bouton DFU enfoncé pendant environ 10 secondes (jusqu'à ce que la LED '''CONN''' commence a flasher) puis relâchez le bouton DFU pour effectuer la réinitialisation d'usine. | |
− | + | Si cela ne fonctionne pas alors vous pourriez avoir besoin de reflasher votre firmware en mode DFU. Cela peut être réalisé d'une des façons suivantes: | |
− | |||
− | * | + | === Bluefruit LE Connect (Android) === |
− | * | + | * Placez le module en mode DFU (LED clignotant constamment) |
− | * | + | * Ouvrez Bluefruit LE Connect |
− | * | + | * Connectez vous sur le périphérique en mode DFU (''DfuTarg'') |
− | * | + | * Une fois connecté, vous verrez un écran avec des informations de base. Cliquer sur '...' dans le coin en haut à droite et sélectionnez '''Firmware Updates''' |
− | * | + | * Cliquez sur le bouton '''Use Custom Firmware''' (''Utiliser un Firmware personnalisé'') |
− | ** Hex | + | * Selectionner les fichiers .hex et .init approrpriés (copiés depuis le [https://github.com/adafruit/Adafruit_BluefruitLE_Firmware dépôt des firmware Bluefruit LE]) ... pour le firmware BLEFRIEND32 version 0.6.7, cela devrait être: |
− | ** Init | + | ** Fichier Hex: blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex |
− | * | + | ** Fichier Init: blefriend32_s110_xxac_0_6_7_150917_blefriend32_init.dat |
+ | * Cliquer sur '''Start Update''' | ||
− | + | L'app iOS ne supporte pas encore la mise-à-jour de firmware personnalié depuis le mode DFU mais Adafruit fait le nécessaire pour rendre la fonctionnalité disponible. | |
− | |||
− | + | === La boîte à outil Nordic nRF === | |
+ | Vous pouvez également utiliser l'application "Nordic's nRF Toolbox" pour faire une mise-à-jour du firmware en utilisant le bootloader OTA (''Over The Air''). | ||
− | + | Sur '''Android''': | |
− | * | + | * Ouvez nRF Toolbox (utiliser la dernière version de l'outil) |
− | * | + | * Cliquer sur l'icone '''DFU''' |
− | * | + | * Cliquer sur le bouton '''Select File''' pour sélectionner un fichier |
− | * | + | * Selectionner '''Application''' depuis dans la liste des option PUIS cliquez sur '''OK''' |
− | * | + | * Localiser le fichier .hex approprié (ex: 'blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex') |
− | * | + | * Lorsque l'App vous demande s'il faut un '''Init packet''' (''paquet d'initialisation''), répondez Oui en pressant sur '''Yes'''.<br />Sélectionner le fichier *_init.dat approprié (par exemple: 'blefriend32_s110_xxac_0_6_7_150917_blefriend32_init.dat'). |
− | * | + | * Cliquer sur le bouton '''Select Device''' pour sélectionner un périphérique (voir en bas du l'écran principale) et sélectionner le périphérique en mode DFU ('''DfuTarg''') en cliquant dessus |
− | * | + | * Cliquez sur le bouton '''Upload''' (''téléverser'') qui devrait maintenant être disponible sur l'écran principal. |
− | * | + | * Cela devrait débuter le processus de mise-à-jour DFU, ce qui devrait faire une mise-à-jour du Firmware et restaurer l'état du module Bluefruit LE |
− | + | Sur '''iOS''': | |
− | * | + | * Créer un fichier .zip contenant ke fichier .hex et le fichier init.dat que vous allez utiliser pour faire la mise-à-jour du firmware. Par exemple: |
− | ** | + | ** Renommer 'blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex' en '''application.hex''' |
− | ** | + | ** Renommer 'blefriend32_s110_xxac_0_6_7_150917_blefriend32_init.dat' en '''application.dat''' |
− | * | + | * Téléverser le '''fichier .zip ''' contenant les fichiers {{fname|application.hex}} et {{fname|application.dat}} sur votre iPhone en utilisant, comme décrit ci-dessous: |
− | * | + | * Ouvrer l'app nRF Toolbox (utilisez la dernière version) |
− | * | + | * Cliquer sur l'icone '''DFU''' |
− | * | + | * Cliquer sur le libellé texte '''Select File''' (''sélectionner fichier'') |
− | * | + | * Basculer vers '''User Files''' (''fichier utilisateur'') pour voir le fichier .zip que vous avez téléchargé ci-dessus |
− | * | + | * Sélectionner le fichier .zip (ex: blefriend32_065.zip) |
− | * | + | * Sur l'écran principal, sélectionner '''Select File Type''' (''sélectionner le type de fichier'') |
− | * | + | * Sélectionner '''application''' |
− | * | + | * Dans l'écran principal, cliquer sur '''SELECT DEVICE''' (''sélectionner périphérique'') |
− | * | + | * Sélectionner le périphérique en mode DFU ('''DfuTarg''') |
− | * | + | * Cliquer sur le bouton '''Upload''' (''téléverser'') qui devrait maintenant être disponible. |
− | * | + | * Cela débutera le processus de mise-à-jour DFU et votre module Bluefruit LE sera réinitialisé une fois l'opération terminée |
− | * | + | * Si vous voyez une schéma normal de 2 ou 3 clignotement alors la mise-à-jour à fonctionné! |
− | + | Avec '''Adafruit_nRF51822_Flasher''': | |
− | + | En dernier ressort, si vous avez accès à un Raspberry-Pi, un Segger J-Link ou un STLink/V2, vous pouvez manuellement reflasher le périphérique entier, comme décrit ci-dessus dans la foire aux questions, avec plus de détails sur la page [[Bluefruit-LE-Shield-Software-resources|ressources logicielles]]. | |
− | == | + | == Comment est ce que je reflash mon module Bluefruit LE via SWD? == |
− | + | Reflasher le module Bluefruit LE via SWD (ex: passer à la version sniffer du firmware et inversement) est une opération '''réalisée à vos propre risque et peu bloquer votre périphérique, et Adafruit ne peut pas offrir de support pour une telle opération!'''. Vous êtes seule pour réaliser cette opération et il y a malheureusement 1,000,000 de choses qui peuvent mal tourner. C'est pour cela qu'Adafruit propose deux cartes différentes: | |
+ | * Le Bluefruit LE Friend en version sniffer | ||
+ | * Et le Bluefruit LE Friend en version normale (avec le firmware ''non-sniffer'') qui fournit un bootloader avec un fonctionnalité de récupération qui empêche la corruption de la carte lors d'une mise-à-jour OTA défaillante. | ||
− | === AdaLink (SWD/JTAG | + | === AdaLink (wrapper de débogage SWD/JTAG) === |
− | + | La transition entre les deux types de carte (sniffer et module Bluefruit LE) n'est malheureusement pas une opération sans risque et nécessite du matériel et logiciel complémentaires et du savoir faire. Cette technique avancé n'est pas prise en charge par l'équipe support d'Adafruit. | |
− | + | Cela étant... si vous êtes déterminé à poursuivre seul sur cette voie et que vous disposez d'un [https://www.adafruit.com/search?q=J-Link Segger J-Link] (ce qu'Adafruit utilise en interne pour le développement et la production), ou si vous avez déjà effacé vitre périphérique Bluefruit LE, vous pouvez jeter un oeil sur [https://github.com/adafruit/Adafruit_Adalink AdaLink] (qui est l'outil utilisé par Adafruit pour flasher les 4 fichiers nécessaires pour restaurer un module Bluefruit LE module). | |
− | + | (Note: Les versions plus récentes d'AdaLink supporte également [https://www.adafruit.com/products/2548 STLink/V2] par l'intermédiaire de J-Link (J-Link est généralement plus robuste si vous achetez un débogger pour un usage à long terme.) | |
− | |||
− | |||
− | |||
− | |||
− | + | Le fichiers Hex Intel requis sont disponibles sur [https://github.com/adafruit/Adafruit_BluefruitLE_Firmware le dépôt des firmwares Bluefruit LE]. Vous aurez également besoin de flasher: | |
+ | * Une image bootloader adéquate | ||
+ | * Une image SoftDevice adéquate | ||
+ | * Une image du Firmware Bluefruit LE | ||
+ | * Le fichier de signature correspondant contenant un CRC de vérification pour que le bootloader accepte l'image firmware ci-dessus (ce fichier est localisé dans le même répertoire que l'image du Firmware) | ||
− | + | Les fichiers adéquats sont généralement listés dans [https://github.com/adafruit/Adafruit_BluefruitLE_Firmware/blob/master/releases.xml le fichier .xmf de contrôle de version] (dans le dépôt du firmware). | |
+ | |||
+ | Si vous essayez de flasher le firmware sniffer (à vos propres risques!), vous aurez besoin de flasher un seul fichier .hex, que vous pourrez trouver [https://github.com/adafruit/Adafruit_BluefruitLE_Firmware/tree/master/sniffer/1.0.1 ici]. Le sniffer ne nécessite pas d'image SoftDevice et n'utilise pas le bootloader fail-safe -- c'est la raison pour laquelle cette modification est à sens unique et une opération risquée si vous ne disposez pas d'un débogger SWD supporté. | ||
=== Adafruit_nF51822_Flasher === | === Adafruit_nF51822_Flasher === | ||
We also have an internal python tool available that sits one level higher than AdaLink (referenced above), and makes it easier to flash specific versions of the official firmware to a Bluefruit LE module. For details, see the [https://github.com/adafruit/Adafruit_nRF51822_Flasher Adafruit_nRF51822_Flasher] repo. | We also have an internal python tool available that sits one level higher than AdaLink (referenced above), and makes it easier to flash specific versions of the official firmware to a Bluefruit LE module. For details, see the [https://github.com/adafruit/Adafruit_nRF51822_Flasher Adafruit_nRF51822_Flasher] repo. | ||
− | == | + | == Comment puis-je accéder aux firmwares BETA ? == |
− | + | Les dernières versions de l'application Bluefruit LE Connect pour iOs et Android vous permet de faire une mise-à-jour de votre module Bluefruit LE avec de nouveaux firmwares en pre-release ou firmware BETA. | |
− | + | Cette fonctionnalité est fournie pour les opérations de débogages et mécanismes de test pour le support de problèmes particuliers sur le forum. Vous devriez uniquement utiliser ces firmwares pour identifier et résoudes des problèmes particuliers sur votre module! | |
=== Activer les Releases BETA pour iOS === | === Activer les Releases BETA pour iOS === | ||
− | * | + | * Assurez vous d'avoir une version récente de BlueFruit LE connect (au moins la '''version 1.7.1''') |
− | * | + | * Allez dans la page "Settings" (''paramètres'') |
− | * | + | * Faites défiler l'écran des paramètres jusqu'à ce que vous trouviez le libellé '''Bluefruit LE''' |
− | * | + | * Cliquez sur l'icone Bluefruit LE et activez le l'option '''Show beta releases''' (''affiché les releases beta'') |
− | * | + | * Maintenant, lorsque vous utilisez BlueFruit LE connect, vous devriez être capable de voir toutes les releases Beta disponibles dans le dépôt des firmwares. |
− | === | + | === Activer les Releases BETA pour Android === |
− | * | + | * Assurez-vous d'avoir la dernière version de Bluefruit LE Connect |
− | * | + | * Ouvrir l'application Bluefruit LE Connect |
− | * | + | * Cliquer sur l'icone "..." dans le coin en haut à droite de l'écran principal de l'application. |
− | * | + | * Selectionner '''Settings''' (''Paramètres'') |
− | * | + | * Faites défiler l'écran jusqu'à la section '''Software Updates''' (''mise-à-jour logiciel'') et activer l'option '''Show beta releases''' (''afficher les releases Beta''') |
− | * | + | * Maintenant, vous devriez être capable de voir toutes les releases BETA disponible dans le dépôt github. |
− | == | + | == Pourquoi ne puis-je pas/plus voir mon périphérique Bluefruit LE après un upgrade à Android 6.0? == |
− | + | Il y a eu [http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-hardware-id quelques changement de sécurité important] dans Android 6.0 et cela affecte les périphériques Bluetooth Low Energy. Si les services de localisations ne sont pas disponibles (signifiant que le GPS est désactivé) vous ne serez pas capable de détecter les paquets d'annonce des périphériques Bluetooth Low Energy. Voyez [https://code.google.com/p/android/issues/detail?id=190372&q=GPS&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars les détails ici]. | |
− | + | Assurez-vous d'avoir activé le service de localisation sur votre Android 6.0 lorsque vous utilisez Bluefruit LE Connect ou autres applications Bluetooth Low Energy avec le module Bluefruit LE d'Adafruit. | |
− | == | + | == Quel est la vitesse théorique limite du BLE? == |
− | + | Cela dépends de plusieurs facteurs, et déterminé plus les capacités du périphérique centrale (votre smartphone, etc) que par le périphérique. | |
− | + | En prenant en compte la limitation matérielle du nR51822 (6 paquets max par intervalle de connexion et un in intervalle de connexion minimum de 7.5ms), nous atteignons les limites théoriques suivantes sur différents systèmes d'exploitation mobile : | |
− | * '''iPhone 5/6 + IOS 8.0/8.1'''<br />6 | + | * '''iPhone 5/6 + IOS 8.0/8.1'''<br />6 paquets * 20 octets * 1/0.030 s = 4 kB/s = 32 kbps |
− | * '''iPhone 5/6 + IOS 8.2/8.3'''<br />3 | + | * '''iPhone 5/6 + IOS 8.2/8.3'''<br />3 paquets * 20 octets * 1/0.030 s = 2 kB/s = 16 kbps |
− | * '''iPhone 5/6 + IOS 8.x with nRF8001'''<br />1 | + | * '''iPhone 5/6 + IOS 8.x with nRF8001'''<br />1 paquets * 20 octets * 1/0.030 s = 0.67 kB/s = 5.3 kbps |
− | * '''Nexus 4'''<br />4 | + | * '''Nexus 4'''<br />4 paquets * 20 octets * 1/0.0075 s = 10.6 kB/s = 84 kbps |
− | * '''Nordic Master Emulator Firmware (MEFW) with nRF51822 0.9.0'''<br />1 | + | * '''Nordic Master Emulator Firmware (MEFW) with nRF51822 0.9.0'''<br />1 paquets * 20 octets * 1/0.0075 = 2.67 kB/s = 21.33 kbps |
− | * ''' Nordic Master Emulator Firmware (MEFW) with nRF51822 0.11.0'''<br />6 | + | * ''' Nordic Master Emulator Firmware (MEFW) with nRF51822 0.11.0'''<br />6 paquets * 20 octets * 1/0.0075 = 16 kB/s = 128 kbps |
− | + | Il y a également une limite imposée par le firmware du Bluefruit LE (Adafruit travaille activement pour améliorer le débit dans la release 0.7.0). | |
− | + | Les chiffres ci-dessus sont des maximums théoriques utiles pour décider si BlueFruit Le est un matériel approprié pour votre projet. | |
− | + | '''Mise-à-jour:''' Voyez [https://devzone.nordicsemi.com/blogs/1046/what-to-keep-in-mind-when-developing-your-ble-andr/ ce billet très utile de Nordic Semiconductors] pour des détails spécifiques concernant les limitations concernant les différentes versions d' '''Android''' et téléphones. | |
− | |||
− | == | + | == Est ce que ma carte Bluefruit peut détecter d'autres cartes Bluefruit ou périphériques centrals ? == |
− | + | Non. Tous les modules Bluefruit LE d'Adafruit fonctionne actuellement en mode périphérique. Cela signifie que les cartes peuvent uniquement annoncer leur propre existence (via les payload d'avertissement). Le périphérique centrale (habituellement un smartphone ou laptop) a pour tâche d'écouter ces paquets d'annonce, puis démarrer un processus de connexion et initier les transactions entre les périphériques. | |
− | + | Le module BlueFruit LE n'as pas le moyen de détecter d'autres modules Bluefruit (ou périphériques centrales). Ils peuvent uniquement envoyer leurs propres paquets d'annonce et attendre après requête de connexion. | |
− | == | + | == Comment puis-je déterminer la distance (en m) entre entre mon module Bluefruit et mon téléphone ? == |
− | + | La réponse courte est: cela n'est pas possible. | |
− | + | Les périphériques RF mesure normalement la puissance du signal en utilisant RSSI qui signifie "Received Signal Strength Indicator" (''indicateur de puissance du signal de réception). Cette puissance de signal se mesure en dBm (Décibel par milliwatt). | |
− | + | Plus près est le périphérique et plus fort sera la valeur de RSSI (par exemple: -90dBm est plus faible que -60dBm). Dans le monde réel, il n'y a cependant pas de relation fiable entre les valeurs de RSSI en dBm et la distance entre mes périphériques. Par exemple, le RSSI chutera, s'il y a un mur entre les périphériques. Le RSSI chutera également s'il y a beaucoup d'interférence sur la même bande 2.4GHz. Le RSSI peut également chuter en fonction du périphérique ou de l'orientation de l'antenne. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | Vous pouvez lire la valeur de RSSI entre deux périphériques connectés en utilisant la commande {{fname|AT+BLEGETRSSI}}. La valeur de RSSI ne permet pas de tirer de résultat ou conclusion valable concernant la distance. Elle permet juste de donner une idée d'éloignement général (éloigné ou proche) en fonction de la force du signal. | |
− | |||
− | + | == A quelle distance de mon téléphone puis-je capter mon module Bluefruit LE ? == | |
+ | Cela dépend de plusieurs facteurs au-delà du module comme l'orientation de l'antenne, la conception de l'antenne du SmartPhone, la puissance de transmission sur le noeud d'envoi, le trafic des différents appareils sur la bande de 2.4GHz, les obstacles entre l'émetteur et le récepteur, etc. | ||
− | + | Cette distance peut être aussi réduite que quelques mètres jusqu'à une dizaine de mètres en terrain découvert. Bluetooth Low Energy est conçu pour des communications courtes distances et fonctionnera dans les meilleures conditions entre 5-6 mètres ou moins (pour un communication fiable et un paramétrage normal du Bluefruit LE). | |
− | |||
− | + | == Combien de services GATT et caractéristiques puis-je créer ? == | |
+ | Les limitations suivantes sont applicable au firmware 0.7.0 ou supérieur : | ||
+ | * Nombre maximum de services: 10 | ||
+ | * Nombre maximum de caractéristiques: 30 | ||
+ | * Taille maximum de la mémoire tampon pour chaque caractéristique: 32 octets | ||
+ | * Nombre maximum de CCCDs: 16 | ||
+ | |||
+ | == Est-il possible de modifier ou désactiver les services GATT et caractéristiques (DIS, DFU, etc.)? == | ||
+ | Non, ce n'est malheureusement pas possible. Adafruit s'appuie sur la spécification du "[https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.service.device_information.xml Device Information Service]" (DIS) pour déterminer la versions du firmware et la version du bootloader fonctionnant sur le module BlueFruit LE. Bluefruit LE Connect ne pourra pas offrir de mise-à-jour Firmware sans disposer d'information fiable (comme celles offertes par DIS), raison pour laquelle ces deux information sont obligatoire et en lecture seule. | ||
+ | |||
+ | De même, le service DFU est également nécessaire pour maintenir la fonctionnalité de mise-à-jour OTA (over-the-air). Désactiver ce service créerait plus de problèmes que sa présence n'en provoque. | ||
+ | |||
+ | == Comment puis-je utiliser BlueZ et gatttool avec les modules Bluefruit ? == | ||
+ | BlueZ nécessite un peu d'étude pour pouvoir l'utiliser. Vous trouverez ci-dessous quelques notes sur une approche permettant d'envoyer et recevoir des données en utilisant le service BLE UART disponible sur tous les modules Bluefruit LE et toutes les cartes Bluefruit LE. | ||
+ | |||
+ | Ces commandes pourraient changer avec une version différente de BlueZ. La version 5.21 était utilisée ci-dessous. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
− | # | + | # Initialiser la clé USB |
$ sudo hciconfig hci0 up | $ sudo hciconfig hci0 up | ||
− | # Scan | + | # Scan des périphériques BLE UART |
$ sudo hcitool lescan | $ sudo hcitool lescan | ||
D6:4E:06:4F:72:86 UART | D6:4E:06:4F:72:86 UART | ||
− | # | + | # Démarrer gatttool, pointant sur le périphérique UART trouvé ci-dessus |
$ sudo gatttool -b D6:4E:06:4F:72:86 -I -t random --sec-level=high | $ sudo gatttool -b D6:4E:06:4F:72:86 -I -t random --sec-level=high | ||
Ligne 209 : | Ligne 218 : | ||
Connection successful | Connection successful | ||
− | # Scan | + | # Scan des services GATT principaux |
[D6:4E:06:4F:72:86][LE]> primary | [D6:4E:06:4F:72:86][LE]> primary | ||
attr handle: 0x0001, end grp handle: 0x0007 uuid: 00001800-0000-1000-8000-00805f9b34fb | attr handle: 0x0001, end grp handle: 0x0007 uuid: 00001800-0000-1000-8000-00805f9b34fb | ||
Ligne 216 : | Ligne 225 : | ||
attr handle: 0x000f, end grp handle: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb | attr handle: 0x000f, end grp handle: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb | ||
− | # | + | # Obtenir les handles pour les entrées dans le service UART (handle 0x0009) |
[D6:4E:06:4F:72:86][LE]> char-desc | [D6:4E:06:4F:72:86][LE]> char-desc | ||
handle: 0x0001, uuid: 00002800-0000-1000-8000-00805f9b34fb | handle: 0x0001, uuid: 00002800-0000-1000-8000-00805f9b34fb | ||
Ligne 239 : | Ligne 248 : | ||
# 6e400003 (handle 0x000d) = RX characteristic | # 6e400003 (handle 0x000d) = RX characteristic | ||
− | # | + | # Optionel (mais peut être utile) ... scan des entrées CCCD |
[D6:4E:06:4F:72:86][LE]> char-read-uuid 2902 | [D6:4E:06:4F:72:86][LE]> char-read-uuid 2902 | ||
handle: 0x000e value: 00 00 | handle: 0x000e value: 00 00 | ||
− | # | + | # Activer les notifications pour la caractéristique RX (CCCD handle = 0x000e) |
− | # 0100 = get notifications | + | # 0100 = get notifications / obtenir des notifications |
− | # 0200 = get indications | + | # 0200 = get indications / obtenir des indications |
− | # 0300 = get notifications + indications | + | # 0300 = get notifications + indications / Obtenir des notification et indications |
− | # 0000 = | + | # 0000 = désactiver les notifications + indications |
[D6:4E:06:4F:72:86][LE]> char-write-req 0x000e 0100 | [D6:4E:06:4F:72:86][LE]> char-write-req 0x000e 0100 | ||
Characteristic value was written successfully | Characteristic value was written successfully | ||
− | # | + | # S'assurer que la caractéristique à été mise-à-jour |
[D6:4E:06:4F:72:86][LE]> char-read-hnd 0x000e | [D6:4E:06:4F:72:86][LE]> char-read-hnd 0x000e | ||
Characteristic value/descriptor: 01 00 | Characteristic value/descriptor: 01 00 | ||
− | # | + | # Ecrire "test" dans le moniteur série du croquis Arduino. Cela |
− | # | + | # devrait cette sortie. |
Notification handle = 0x000d value: 74 65 73 74 | Notification handle = 0x000d value: 74 65 73 74 | ||
− | # | + | # Ecrire quelque chose sur la caractéristique TX (handle = 0x000b) |
− | # | + | # Cela devrait faire apparaître les caractères E F G H dans le |
+ | # moniteur série d'Arduino | ||
[D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000b 45 | [D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000b 45 | ||
[D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000b 46 | [D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000b 46 | ||
Ligne 266 : | Ligne 276 : | ||
[D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000b 48 | [D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000b 48 | ||
− | # | + | # Envoyer plusieurs octets |
[D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000B 707172737475 | [D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000B 707172737475 | ||
− | # | + | # Si vous exécutez le croquis callbackEcho et que les notifications |
− | # | + | # sont activée alors vous devriez voir cette réponse après avoir |
+ | # exécuté la commande ci-dessus: | ||
Notification handle = 0x000d value: 70 71 72 73 74 75 | Notification handle = 0x000d value: 70 71 72 73 74 75 | ||
-------------- | -------------- | ||
− | # | + | # Si vous désirez seulement une écoute permanente, saisissez la |
+ | # commande suivante dans le CLI: | ||
$ sudo gatttool -b D6:4E:06:4F:72:86 -t random --char-write-req -a 0x000e -n 0100 --listen | $ sudo gatttool -b D6:4E:06:4F:72:86 -t random --char-write-req -a 0x000e -n 0100 --listen | ||
− | # | + | # Cela devrait produire les sorties suivantes lorsque des données sont |
− | # | + | # saisie dans Arduino IDE. Nous ne pouvons cependant pas renvoyer |
+ | # de données: | ||
Characteristic value was written successfully | Characteristic value was written successfully | ||
Notification handle = 0x000d value: 74 65 73 74 | Notification handle = 0x000d value: 74 65 73 74 | ||
− | Notification handle = 0x000d value: 6d 6f 72 65 20 74 65 73 74 </ | + | Notification handle = 0x000d value: 6d 6f 72 65 20 74 65 73 74 </syntaxhighlight> |
+ | |||
+ | == Puis-je utiliser la broche IRQ pour sortir mon MCU du mode veille lorsque l'UART BLE à des données disponibles ? == | ||
+ | Non, sur les cartes à base de SPI, la broche IRQ est utilisé pour indiquer qu'une réponse SDEP est disponible pour une commande SDEP. | ||
+ | |||
+ | Par exemple, lorsque vous envoyez une commande "AT+BLEUARTRX" comm message SDEP, le firmware Bluefruit fonctionnant sur le nRF51822 fera une analyse du message, préparera une réponse SDEP et déclenchera la broche d'interruption (pour indiquer au MCU que la réponse est prête). | ||
− | + | Le broche IRQ est complètement indépendante du service BLE UART qui ne dispose pas de capacité d'intérruption (pour le moment). | |
− | |||
{{Bluefruit-LE-Shield-TRAILER}} | {{Bluefruit-LE-Shield-TRAILER}} |
Version actuelle datée du 3 août 2017 à 21:03
Mon Bluefruit LE peut-il dialoguer avec un périphérique 'Classic Bluetooth' ?
Non. Bluetooth Low Energy et Bluetooth 'Classic' sont deux parties d'une même noyau de spécification Bluetooth (Bluetooth Core Specification) -- définie et maintenue par le Bluetooth SIG -- mais sont des protocoles complètements différents fonctionnant avec des contraintes et des exigences différentes. Les deux protocoles ne peuvent pas dialoguer directement.
Mon module Bluefruit LE peut-il se connecter sur d'autres périphériques Bluefruit LE ?
Non, le firmware Bluefruit LE d'Adafruit est uniquement un périphérique et ne fonctionne pas en mode Central (comme un SmartPhone ou support BLE d'un laptop).
Si vous avez besoin du mode Central alors vous devriez vous pencher sur les nouveaux produits basés sur nRF52832 tel que l'Adafruit Feather nRF52 Bluefruit LE qui contient un firmware capable de fonctionner soit en mode Central ou soit en mode Périphérique.
Les produits à base de nRF518322 (comme celui utilisé dans ce guide) ne sont PAS capable de fonctionner en mode Centrale parce qu'il n'est pas supporté par le firmware qu'il utilise. Il n'est pas possible de faire une mise-à-jour en toute sécurité sans utiliser un matériel spécial.
Pourquoi mes changements ne persiste t'il pas lorsque j'utilise un croquis d'exemple ?
La plupart des croquis effectuent une réinitialisation d'usine (FACTORY RESET) pour être certain que le module Bluefruit LE soit dans un état connu avant d'exécuter le croquis de démo.
C'est utile pour assurer le bon fonctionnement d'un croquis mais a comme effet de board d'effacer toutes les données personnalisées de la NVM pour y remettre le paramétrage d'usine à chaque fois que le croquis est redémarré (ou Arduino réinisitalisé, ce qui redémarre le croquis).
Pour désactiver la réinitialisation d'usine, ouvrez le croquis de démo et trouvez la ligne qui initialise le flag/drapeau FACTORYRESET_ENABLE et fixer la valeur à '0' (cela empêchera la réinitialisation d'usine au démarrage du croquis).
Si vous ne voyez pas le flag/drapeau 'FACTORYRESET_ENABLE' dans le fichier .ino c'est que vous avez probablement une ancienne version de la bibliothèque. Vous pourriez avoir besoin de faire une mise-à-jour de la bibliothèque via le gestionnaire de bibliothèque Arduino.
Ai-je besoin de CTS et RTS avec mon module UART Bluefruit LE ?
Utiliser CTS et RTS n'est strictement nécessaire lorsque l'on utilise une connexion série matérielle (HW serial) mais elle devrait être utilisé lors d'une connexion série logicielle (SW serial) pour réguler le flux de donnée et éviter de perdre des octets. Il est également recommandé d'utiliser CTS et RTS si vous avez beaucoup de données à transférer.
La raison derrière le besoin des signaux CTS et RTS c'est que le block UART du nRF51822 n'est pas très robuste. Les toutes premières versions du composant avaient un FIFO extrêmement petit, ce qui signifie que le périphérique UART était rapidement submergé.
Utiliser CTS et RTS améliore significativement la fiabilité de la connexion UART puisque ces deux broches indiquent au périphérique distant qu'il faut attendre que la mémoire tampon soit traitée.
Pour activer le support CTS et RTS, il faut ouvrir le fichier BluefruitConfig.h et assigner les broches appropriées aux macros dédiées à ces fonctions (elles sont fixées à -1 si elles ne sont pas utilisées).
Activer ces deux broches devrait résoudre les problèmes de fiabilité que vous pourriez rencontrer avec les grandes commandes, ou les transmissions de nombreuses commandes d'affilé.
Comment puis-je faire une mise-à-jour pour utiliser la dernière version du firmware?
La façon la plus facile de maintenir vos modules Bluefruit LE à jour est d'utiliser l'app Bluefruit LE Connect pour Android ou Bluefruit LE Connect pour iOS.
Ces deux apps inclus une fonctionnalité de mise-à-jour du firmware qui vous permet de facilement télécharger le dernier Firmware et de lancer une mise-à-jour via la connexion Bluetooth. En cas de problème, vous pouvez également utiliser l'app pour revenir à une version précédente du firmware Bluefruit LE.
Quelle version du firmware supporte 'xxx'?
Adafruit publie régulièrement des images Firmware pour Bluefruit LE corrigeant des bugs et ajoutant de nouvelles fonctionnalités. Chaque commande AT reprise dans le guide affiche la version du Firmware nécessaire pour utiliser la commande.
Pour une vue plus globale des changements du Firmware (d'une version à l'autre), vous pouvez consulter la page firmware history maintenu par Adafruit.
Est-ce que mon périphérique Bluefruit LE supporte ANCS?
ANCS (Apple Notification Center Service) fait partie des projets d'Adafruit (probablement durant la famille des releases 0.7.x). ANCS n'est actuellement pas supporté par Adafruit étant donné qu'il y a quelques effets de bord particuliers lorsqu'il est implémenté comme un service.
Mon Bluefruit LE est planté en mode DFU ... que puis-je faire ?
Si votre périphérique est planté en mode DFU (pour une raison quelconque) avec un firmware est corrompu alors il vous reste plusieurs options.
Premièrement, essayer de faire une réinitialisation d'usie (factory reset) en maintenant le bouton DFU enfoncé pendant environ 10 secondes (jusqu'à ce que la LED CONN commence a flasher) puis relâchez le bouton DFU pour effectuer la réinitialisation d'usine.
Si cela ne fonctionne pas alors vous pourriez avoir besoin de reflasher votre firmware en mode DFU. Cela peut être réalisé d'une des façons suivantes:
Bluefruit LE Connect (Android)
- Placez le module en mode DFU (LED clignotant constamment)
- Ouvrez Bluefruit LE Connect
- Connectez vous sur le périphérique en mode DFU (DfuTarg)
- Une fois connecté, vous verrez un écran avec des informations de base. Cliquer sur '...' dans le coin en haut à droite et sélectionnez Firmware Updates
- Cliquez sur le bouton Use Custom Firmware (Utiliser un Firmware personnalisé)
- Selectionner les fichiers .hex et .init approrpriés (copiés depuis le dépôt des firmware Bluefruit LE) ... pour le firmware BLEFRIEND32 version 0.6.7, cela devrait être:
- Fichier Hex: blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex
- Fichier Init: blefriend32_s110_xxac_0_6_7_150917_blefriend32_init.dat
- Cliquer sur Start Update
L'app iOS ne supporte pas encore la mise-à-jour de firmware personnalié depuis le mode DFU mais Adafruit fait le nécessaire pour rendre la fonctionnalité disponible.
La boîte à outil Nordic nRF
Vous pouvez également utiliser l'application "Nordic's nRF Toolbox" pour faire une mise-à-jour du firmware en utilisant le bootloader OTA (Over The Air).
Sur Android:
- Ouvez nRF Toolbox (utiliser la dernière version de l'outil)
- Cliquer sur l'icone DFU
- Cliquer sur le bouton Select File pour sélectionner un fichier
- Selectionner Application depuis dans la liste des option PUIS cliquez sur OK
- Localiser le fichier .hex approprié (ex: 'blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex')
- Lorsque l'App vous demande s'il faut un Init packet (paquet d'initialisation), répondez Oui en pressant sur Yes.
Sélectionner le fichier *_init.dat approprié (par exemple: 'blefriend32_s110_xxac_0_6_7_150917_blefriend32_init.dat'). - Cliquer sur le bouton Select Device pour sélectionner un périphérique (voir en bas du l'écran principale) et sélectionner le périphérique en mode DFU (DfuTarg) en cliquant dessus
- Cliquez sur le bouton Upload (téléverser) qui devrait maintenant être disponible sur l'écran principal.
- Cela devrait débuter le processus de mise-à-jour DFU, ce qui devrait faire une mise-à-jour du Firmware et restaurer l'état du module Bluefruit LE
Sur iOS:
- Créer un fichier .zip contenant ke fichier .hex et le fichier init.dat que vous allez utiliser pour faire la mise-à-jour du firmware. Par exemple:
- Renommer 'blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex' en application.hex
- Renommer 'blefriend32_s110_xxac_0_6_7_150917_blefriend32_init.dat' en application.dat
- Téléverser le fichier .zip contenant les fichiers application.hex et application.dat sur votre iPhone en utilisant, comme décrit ci-dessous:
- Ouvrer l'app nRF Toolbox (utilisez la dernière version)
- Cliquer sur l'icone DFU
- Cliquer sur le libellé texte Select File (sélectionner fichier)
- Basculer vers User Files (fichier utilisateur) pour voir le fichier .zip que vous avez téléchargé ci-dessus
- Sélectionner le fichier .zip (ex: blefriend32_065.zip)
- Sur l'écran principal, sélectionner Select File Type (sélectionner le type de fichier)
- Sélectionner application
- Dans l'écran principal, cliquer sur SELECT DEVICE (sélectionner périphérique)
- Sélectionner le périphérique en mode DFU (DfuTarg)
- Cliquer sur le bouton Upload (téléverser) qui devrait maintenant être disponible.
- Cela débutera le processus de mise-à-jour DFU et votre module Bluefruit LE sera réinitialisé une fois l'opération terminée
- Si vous voyez une schéma normal de 2 ou 3 clignotement alors la mise-à-jour à fonctionné!
Avec Adafruit_nRF51822_Flasher:
En dernier ressort, si vous avez accès à un Raspberry-Pi, un Segger J-Link ou un STLink/V2, vous pouvez manuellement reflasher le périphérique entier, comme décrit ci-dessus dans la foire aux questions, avec plus de détails sur la page ressources logicielles.
Comment est ce que je reflash mon module Bluefruit LE via SWD?
Reflasher le module Bluefruit LE via SWD (ex: passer à la version sniffer du firmware et inversement) est une opération réalisée à vos propre risque et peu bloquer votre périphérique, et Adafruit ne peut pas offrir de support pour une telle opération!. Vous êtes seule pour réaliser cette opération et il y a malheureusement 1,000,000 de choses qui peuvent mal tourner. C'est pour cela qu'Adafruit propose deux cartes différentes:
- Le Bluefruit LE Friend en version sniffer
- Et le Bluefruit LE Friend en version normale (avec le firmware non-sniffer) qui fournit un bootloader avec un fonctionnalité de récupération qui empêche la corruption de la carte lors d'une mise-à-jour OTA défaillante.
AdaLink (wrapper de débogage SWD/JTAG)
La transition entre les deux types de carte (sniffer et module Bluefruit LE) n'est malheureusement pas une opération sans risque et nécessite du matériel et logiciel complémentaires et du savoir faire. Cette technique avancé n'est pas prise en charge par l'équipe support d'Adafruit.
Cela étant... si vous êtes déterminé à poursuivre seul sur cette voie et que vous disposez d'un Segger J-Link (ce qu'Adafruit utilise en interne pour le développement et la production), ou si vous avez déjà effacé vitre périphérique Bluefruit LE, vous pouvez jeter un oeil sur AdaLink (qui est l'outil utilisé par Adafruit pour flasher les 4 fichiers nécessaires pour restaurer un module Bluefruit LE module).
(Note: Les versions plus récentes d'AdaLink supporte également STLink/V2 par l'intermédiaire de J-Link (J-Link est généralement plus robuste si vous achetez un débogger pour un usage à long terme.)
Le fichiers Hex Intel requis sont disponibles sur le dépôt des firmwares Bluefruit LE. Vous aurez également besoin de flasher:
- Une image bootloader adéquate
- Une image SoftDevice adéquate
- Une image du Firmware Bluefruit LE
- Le fichier de signature correspondant contenant un CRC de vérification pour que le bootloader accepte l'image firmware ci-dessus (ce fichier est localisé dans le même répertoire que l'image du Firmware)
Les fichiers adéquats sont généralement listés dans le fichier .xmf de contrôle de version (dans le dépôt du firmware).
Si vous essayez de flasher le firmware sniffer (à vos propres risques!), vous aurez besoin de flasher un seul fichier .hex, que vous pourrez trouver ici. Le sniffer ne nécessite pas d'image SoftDevice et n'utilise pas le bootloader fail-safe -- c'est la raison pour laquelle cette modification est à sens unique et une opération risquée si vous ne disposez pas d'un débogger SWD supporté.
Adafruit_nF51822_Flasher
We also have an internal python tool available that sits one level higher than AdaLink (referenced above), and makes it easier to flash specific versions of the official firmware to a Bluefruit LE module. For details, see the Adafruit_nRF51822_Flasher repo.
Comment puis-je accéder aux firmwares BETA ?
Les dernières versions de l'application Bluefruit LE Connect pour iOs et Android vous permet de faire une mise-à-jour de votre module Bluefruit LE avec de nouveaux firmwares en pre-release ou firmware BETA.
Cette fonctionnalité est fournie pour les opérations de débogages et mécanismes de test pour le support de problèmes particuliers sur le forum. Vous devriez uniquement utiliser ces firmwares pour identifier et résoudes des problèmes particuliers sur votre module!
Activer les Releases BETA pour iOS
- Assurez vous d'avoir une version récente de BlueFruit LE connect (au moins la version 1.7.1)
- Allez dans la page "Settings" (paramètres)
- Faites défiler l'écran des paramètres jusqu'à ce que vous trouviez le libellé Bluefruit LE
- Cliquez sur l'icone Bluefruit LE et activez le l'option Show beta releases (affiché les releases beta)
- Maintenant, lorsque vous utilisez BlueFruit LE connect, vous devriez être capable de voir toutes les releases Beta disponibles dans le dépôt des firmwares.
Activer les Releases BETA pour Android
- Assurez-vous d'avoir la dernière version de Bluefruit LE Connect
- Ouvrir l'application Bluefruit LE Connect
- Cliquer sur l'icone "..." dans le coin en haut à droite de l'écran principal de l'application.
- Selectionner Settings (Paramètres)
- Faites défiler l'écran jusqu'à la section Software Updates' (mise-à-jour logiciel) et activer l'option Show beta releases (afficher les releases Beta)
- Maintenant, vous devriez être capable de voir toutes les releases BETA disponible dans le dépôt github.
Pourquoi ne puis-je pas/plus voir mon périphérique Bluefruit LE après un upgrade à Android 6.0?
Il y a eu quelques changement de sécurité important dans Android 6.0 et cela affecte les périphériques Bluetooth Low Energy. Si les services de localisations ne sont pas disponibles (signifiant que le GPS est désactivé) vous ne serez pas capable de détecter les paquets d'annonce des périphériques Bluetooth Low Energy. Voyez les détails ici.
Assurez-vous d'avoir activé le service de localisation sur votre Android 6.0 lorsque vous utilisez Bluefruit LE Connect ou autres applications Bluetooth Low Energy avec le module Bluefruit LE d'Adafruit.
Quel est la vitesse théorique limite du BLE?
Cela dépends de plusieurs facteurs, et déterminé plus les capacités du périphérique centrale (votre smartphone, etc) que par le périphérique.
En prenant en compte la limitation matérielle du nR51822 (6 paquets max par intervalle de connexion et un in intervalle de connexion minimum de 7.5ms), nous atteignons les limites théoriques suivantes sur différents systèmes d'exploitation mobile :
- iPhone 5/6 + IOS 8.0/8.1
6 paquets * 20 octets * 1/0.030 s = 4 kB/s = 32 kbps - iPhone 5/6 + IOS 8.2/8.3
3 paquets * 20 octets * 1/0.030 s = 2 kB/s = 16 kbps - iPhone 5/6 + IOS 8.x with nRF8001
1 paquets * 20 octets * 1/0.030 s = 0.67 kB/s = 5.3 kbps - Nexus 4
4 paquets * 20 octets * 1/0.0075 s = 10.6 kB/s = 84 kbps - Nordic Master Emulator Firmware (MEFW) with nRF51822 0.9.0
1 paquets * 20 octets * 1/0.0075 = 2.67 kB/s = 21.33 kbps - Nordic Master Emulator Firmware (MEFW) with nRF51822 0.11.0
6 paquets * 20 octets * 1/0.0075 = 16 kB/s = 128 kbps
Il y a également une limite imposée par le firmware du Bluefruit LE (Adafruit travaille activement pour améliorer le débit dans la release 0.7.0).
Les chiffres ci-dessus sont des maximums théoriques utiles pour décider si BlueFruit Le est un matériel approprié pour votre projet.
Mise-à-jour: Voyez ce billet très utile de Nordic Semiconductors pour des détails spécifiques concernant les limitations concernant les différentes versions d' Android et téléphones.
Est ce que ma carte Bluefruit peut détecter d'autres cartes Bluefruit ou périphériques centrals ?
Non. Tous les modules Bluefruit LE d'Adafruit fonctionne actuellement en mode périphérique. Cela signifie que les cartes peuvent uniquement annoncer leur propre existence (via les payload d'avertissement). Le périphérique centrale (habituellement un smartphone ou laptop) a pour tâche d'écouter ces paquets d'annonce, puis démarrer un processus de connexion et initier les transactions entre les périphériques.
Le module BlueFruit LE n'as pas le moyen de détecter d'autres modules Bluefruit (ou périphériques centrales). Ils peuvent uniquement envoyer leurs propres paquets d'annonce et attendre après requête de connexion.
Comment puis-je déterminer la distance (en m) entre entre mon module Bluefruit et mon téléphone ?
La réponse courte est: cela n'est pas possible.
Les périphériques RF mesure normalement la puissance du signal en utilisant RSSI qui signifie "Received Signal Strength Indicator" (indicateur de puissance du signal de réception). Cette puissance de signal se mesure en dBm (Décibel par milliwatt).
Plus près est le périphérique et plus fort sera la valeur de RSSI (par exemple: -90dBm est plus faible que -60dBm). Dans le monde réel, il n'y a cependant pas de relation fiable entre les valeurs de RSSI en dBm et la distance entre mes périphériques. Par exemple, le RSSI chutera, s'il y a un mur entre les périphériques. Le RSSI chutera également s'il y a beaucoup d'interférence sur la même bande 2.4GHz. Le RSSI peut également chuter en fonction du périphérique ou de l'orientation de l'antenne.
Vous pouvez lire la valeur de RSSI entre deux périphériques connectés en utilisant la commande AT+BLEGETRSSI. La valeur de RSSI ne permet pas de tirer de résultat ou conclusion valable concernant la distance. Elle permet juste de donner une idée d'éloignement général (éloigné ou proche) en fonction de la force du signal.
A quelle distance de mon téléphone puis-je capter mon module Bluefruit LE ?
Cela dépend de plusieurs facteurs au-delà du module comme l'orientation de l'antenne, la conception de l'antenne du SmartPhone, la puissance de transmission sur le noeud d'envoi, le trafic des différents appareils sur la bande de 2.4GHz, les obstacles entre l'émetteur et le récepteur, etc.
Cette distance peut être aussi réduite que quelques mètres jusqu'à une dizaine de mètres en terrain découvert. Bluetooth Low Energy est conçu pour des communications courtes distances et fonctionnera dans les meilleures conditions entre 5-6 mètres ou moins (pour un communication fiable et un paramétrage normal du Bluefruit LE).
Combien de services GATT et caractéristiques puis-je créer ?
Les limitations suivantes sont applicable au firmware 0.7.0 ou supérieur :
- Nombre maximum de services: 10
- Nombre maximum de caractéristiques: 30
- Taille maximum de la mémoire tampon pour chaque caractéristique: 32 octets
- Nombre maximum de CCCDs: 16
Est-il possible de modifier ou désactiver les services GATT et caractéristiques (DIS, DFU, etc.)?
Non, ce n'est malheureusement pas possible. Adafruit s'appuie sur la spécification du "Device Information Service" (DIS) pour déterminer la versions du firmware et la version du bootloader fonctionnant sur le module BlueFruit LE. Bluefruit LE Connect ne pourra pas offrir de mise-à-jour Firmware sans disposer d'information fiable (comme celles offertes par DIS), raison pour laquelle ces deux information sont obligatoire et en lecture seule.
De même, le service DFU est également nécessaire pour maintenir la fonctionnalité de mise-à-jour OTA (over-the-air). Désactiver ce service créerait plus de problèmes que sa présence n'en provoque.
Comment puis-je utiliser BlueZ et gatttool avec les modules Bluefruit ?
BlueZ nécessite un peu d'étude pour pouvoir l'utiliser. Vous trouverez ci-dessous quelques notes sur une approche permettant d'envoyer et recevoir des données en utilisant le service BLE UART disponible sur tous les modules Bluefruit LE et toutes les cartes Bluefruit LE.
Ces commandes pourraient changer avec une version différente de BlueZ. La version 5.21 était utilisée ci-dessous.
# Initialiser la clé USB
$ sudo hciconfig hci0 up
# Scan des périphériques BLE UART
$ sudo hcitool lescan
D6:4E:06:4F:72:86 UART
# Démarrer gatttool, pointant sur le périphérique UART trouvé ci-dessus
$ sudo gatttool -b D6:4E:06:4F:72:86 -I -t random --sec-level=high
[D6:4E:06:4F:72:86][LE]> connect
Attempting to connect to D6:4E:06:4F:72:86
Connection successful
# Scan des services GATT principaux
[D6:4E:06:4F:72:86][LE]> primary
attr handle: 0x0001, end grp handle: 0x0007 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0008, end grp handle: 0x0008 uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0009, end grp handle: 0x000e uuid: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
attr handle: 0x000f, end grp handle: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb
# Obtenir les handles pour les entrées dans le service UART (handle 0x0009)
[D6:4E:06:4F:72:86][LE]> char-desc
handle: 0x0001, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0002, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0004, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x0006, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0007, uuid: 00002a04-0000-1000-8000-00805f9b34fb
handle: 0x0008, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0009, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x000a, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000b, uuid: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
handle: 0x000c, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000d, uuid: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
handle: 0x000e, uuid: 00002902-0000-1000-8000-00805f9b34fb
handle: 0x000f, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0011, uuid: 00002a27-0000-1000-8000-00805f9b34fb
# 6e400002 (handle 0x000b) = TX characteristic
# 6e400003 (handle 0x000d) = RX characteristic
# Optionel (mais peut être utile) ... scan des entrées CCCD
[D6:4E:06:4F:72:86][LE]> char-read-uuid 2902
handle: 0x000e value: 00 00
# Activer les notifications pour la caractéristique RX (CCCD handle = 0x000e)
# 0100 = get notifications / obtenir des notifications
# 0200 = get indications / obtenir des indications
# 0300 = get notifications + indications / Obtenir des notification et indications
# 0000 = désactiver les notifications + indications
[D6:4E:06:4F:72:86][LE]> char-write-req 0x000e 0100
Characteristic value was written successfully
# S'assurer que la caractéristique à été mise-à-jour
[D6:4E:06:4F:72:86][LE]> char-read-hnd 0x000e
Characteristic value/descriptor: 01 00
# Ecrire "test" dans le moniteur série du croquis Arduino. Cela
# devrait cette sortie.
Notification handle = 0x000d value: 74 65 73 74
# Ecrire quelque chose sur la caractéristique TX (handle = 0x000b)
# Cela devrait faire apparaître les caractères E F G H dans le
# moniteur série d'Arduino
[D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000b 45
[D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000b 46
[D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000b 47
[D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000b 48
# Envoyer plusieurs octets
[D6:4E:06:4F:72:86][LE]> char-write-cmd 0x000B 707172737475
# Si vous exécutez le croquis callbackEcho et que les notifications
# sont activée alors vous devriez voir cette réponse après avoir
# exécuté la commande ci-dessus:
Notification handle = 0x000d value: 70 71 72 73 74 75
--------------
# Si vous désirez seulement une écoute permanente, saisissez la
# commande suivante dans le CLI:
$ sudo gatttool -b D6:4E:06:4F:72:86 -t random --char-write-req -a 0x000e -n 0100 --listen
# Cela devrait produire les sorties suivantes lorsque des données sont
# saisie dans Arduino IDE. Nous ne pouvons cependant pas renvoyer
# de données:
Characteristic value was written successfully
Notification handle = 0x000d value: 74 65 73 74
Notification handle = 0x000d value: 6d 6f 72 65 20 74 65 73 74
Puis-je utiliser la broche IRQ pour sortir mon MCU du mode veille lorsque l'UART BLE à des données disponibles ?
Non, sur les cartes à base de SPI, la broche IRQ est utilisé pour indiquer qu'une réponse SDEP est disponible pour une commande SDEP.
Par exemple, lorsque vous envoyez une commande "AT+BLEUARTRX" comm message SDEP, le firmware Bluefruit fonctionnant sur le nRF51822 fera une analyse du message, préparera une réponse SDEP et déclenchera la broche d'interruption (pour indiquer au MCU que la réponse est prête).
Le broche IRQ est complètement indépendante du service BLE UART qui ne dispose pas de capacité d'intérruption (pour le moment).
Basé sur "Bluefruit LE Shield" d'Adafruit Industries, écrit par
Kevin Townsend - Traduit en Français par shop.mchobby.be CC-BY-SA pour la traduction
Toute copie doit contenir ce crédit, lien vers cette page et la section "crédit de traduction".
Based on "Bluefruit LE Shield" from Adafruit Industries, written by
Kevin Townsend - Translated to French by shop.mchobby.be CC-BY-SA for the translation
Copies must includes this credit, link to this page and the section "crédit de traduction" (translation credit).
Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com