TI Sensortag : Présentation - Récupérer les données en BLE

07 aout 2014 rdorigny 0 commentaires

J'ai commandé il y a plusieurs semaines le Sensortag de Texas Instrument. Ce gadget regroupe plusieurs capteurs et dispose d'un émetteur récepteur bluetooth 4.0 Low Energy (BLE). Exactement ce que recherche pour réaliser une mini station météo d'intérieure.

Après un rapide test avec mon téléphone portable, je l'avais un peu délaissé mais je suis bien décidé à automatiser la récupération des données et même à les proposer via une application voir une application Android. Voyons un peu si j'arrive à réaliser cela.

1)Présentation du Sensortag

Le Sensortag est un outil dédié au développeur principalement d'application mobile, et qui permet de tester différents capteurs en communiquant en bluetooth low energy (BLE). A priori, selon le site dédié à notre engin, il supporte les communications de type IBeacon (diffusion en broadcast).

Le tag regroupe pas moins de six capteurs:
  • Un capteur de température infra-rouge : qui vous indique la température à courte distance (quelques centimètres),
  • un capteur d'humidité (donne aussi la température),
  • un capteur de pression (donne aussi la température),
  • un accéléromètre,
  • un gyroscope,
  • un magnétomètre.

  • Une courte et excellente vidéo de présentation existe sur Youtube : https://www.youtube.com/watch?v=zPhjnN0HD2E.

    J'ai commandé mon Sensortag sous le nom TEXAS INSTRUMENTS CC2541DK-SENSOR chez Farnell pour environ 31€ , (livraison comprise en quelques jours par UPS), comme toujours impeccable ce site. Mais aussi un dongle USB IOGEAR GBU521W6 Micro Adaptateur Buetooth 4.0 USB Compatible BLE chez Amazon (car moins coûteux).

    Le colis UPS est arrivé quelques jours après, la matériel arrive en kit, et son assemblage reste à faire. Pas de panique! Pour un homo-sapiens digne de ce nom, c'est l'affaire de quelques minutes, même avec la très soft documentation, le montage est assez trivial. Voici quelques photos pour illustrer mon propos:
















    Le Sensortag étant arrivé avant le dongle, et je n'ai pas résisté longtemps pour essayer de le tester tout de même avec mon téléphone portable. Vous trouverez plusieurs application sur le Play Store de Google dédié à notre instrument. Je les ai toutes testé, celle de Texas Instrument est la plus complète.

    2)Réaliser une connexion BLE sur Sensortag

    Bon OK. Nous avons assez fait joujou, essayons de voir si on peut se connecter sur notre engin en utilisant le dongle USB sous Linux. J'ai trouvé la solution sur le Net grâce au blog de Michael Saunby.

    Je vous résume rapidement la démarche. Tout d'abord, il faut réaliser un scan bluetooth pour récupérer l'adresse de notre Sensortag. Donc sous Linux, il faut lancer la commande hcitool lescan puis rapidement appuyer sur sur le side button du Sensortag, ce qui lance l'émission d'une trame de bluetooth d'annonce. A l'affichage, l'adresse du tag apparaît illico:
    $hcitool lescan LE Scan ... BC:6A:29:AC:63:CD (unknown) BC:6A:29:AC:63:CD SensorTag ctrl c

    Pour ceux qui ne dispose pas de la commande hcitool, il vous faudra installer bluez (par apt-get install bluez si vous êtes sous debian, ubuntu ou mint) et le package bluez-utils. Ensuite, on s'appaire sur le tag par:
    $ sudo hcitool lecc BC:6A:29:AC:63:CD $ gatttool -b BC:6A:29:AC:63:CD --interactive [ ][BC:6A:29:AC:63:CD][LE]> connect [CON][BC:6A:29:AC:63:CD][LE]>

    Voilà, nous avons une connexion sur notre tag. Mais comment faire pour récupérer les informations des capteurs? Bonne question! La démarche est la suivante, il faut activer le sensor puis lire les données en hexa.
    [CON][BC:6A:29:AC:63:CD][LE]> char-read-hnd 0x25 [CON][BC:6A:29:AC:63:CD][LE]> Characteristic value/descriptor: 00 00 00 00 [CON][BC:6A:29:AC:63:CD][LE]> char-write-cmd 0x29 01 [CON][BC:6A:29:AC:63:CD][LE]> char-read-hnd 0x25 [CON][BC:6A:29:AC:63:CD][LE]> Characteristic value/descriptor: b1 fe 6d 02

    Dans l'exemple ci-dessus, j'ai réalisé une lecture du registre du capteur IR sans avoir activé le capteur..., et donc je n'obtient que des zéros. Ensuite, j'active le capteur le capteur puis lit le registre pour obtenir les valeurs de la température en hexa.

    Super! Mais comment connait-on les handles des registres et que faire des données hexa? C'est là que la documentation du Sensortag sera précieuse théoriquement. Je dis théoriquement car elle n'est pas forcément à jour. En effet, la liste des handles est disponible sous http://processors.wiki.ti.com/images/a/a8/BLE_SensorTag_GATT_Server.pdf, mais il y a des décalage de valeurs... J'ai recherché les bons handle en testant un à un. Lourd mais efficace! :-) Ensuite, TI propose une excellente page qui décrit comment sont structurées les données et précise l'algorithme de calcul des valeurs recherchées à partir des valeurs hexa obtenues sous : http://processors.wiki.ti.com/index.php/SensorTag_User_Guide.

    Conclusion

    Voilà nous avons toutes les partitions, reste plus qu'à les mettre en musique! Dans le prochain article, je vous expliquerait l'architecture technique que j'envisage de mettre en place (à base de raspberry pi). Puis nous verrons comment automatiser la récupération des données grâce à Python.







    Pseudonyme (obligatoire) :
    Adresse mail (obligatoire) :
    Site web :

    Pour valider votre commentaire, écrivez le texte affiché sur l'image :



    © 2017 www.doritique.fr par Robert DORIGNY