Articles récents
TI Sensortag : Récupérer les données en BLE (partie 2)
Je vous avais présenté le TI Sensortag CC2541 par l'article précédent. C'est un petit bijou de technologie qui regroupe pas moins de six capteurs et dispose d'un émetteur/récepteur Bluetooth 4.0 Low Energy (BLE).
Dans cette article, nous allons voir comment automatiser une connexion BLE pour récupérer les données des capteurs.
1)Projet de réalisation
Mon objectif est de réaliser une station météo d'intérieur chargé de mesurer la température, la pression et l'humidité de la maison. Pour cela, je compte mettre en place l'architecture ci-dessous:L'idée principale est de dédier un raspberry pi comme centrale domotique. Ce mini ordinateur fonctionne sous Linux et consomme très peu d'énergie (ce qui est intéressant pour ne pas exploser ma facture d'électricité).
Donc:
2)Récupération des données
2.1)Genèse de la solution
Au niveau de la connexion sur le Sensortag, j'ai choisis d'utiliser une connexion classique en Bluetooth et non en IBeacon. Sachez néanmoins que le Sensortag est capable d'utiliser ce mécanisme : http://processors.wiki.ti.com/index.php/SensorTag_with_iBeaconLa première chose que j'ai essayé de faire, c'est de trouver de la documentation sur l'API du Bluez du stack Linux. Et bien..., impossible de trouver une documentation sur ce sujet! C'est même presque scandaleux, s'afficher comme le "Official Linux Bluetooth protocol stack" et ne fournir aucune documentation pour les développeurs, que fait Linus Torvalds! Bref,en recherchant une solution, je me suis rabattu sur un script Python grâce à Michael Saunby. Petit hic, je ne connaissais pas ce langage il y a encore un mois, donc j'ai un peu bouquiné pendant les vacances... Python est un langage de script assez simple à apprendre si vous déjà quelques notions en langage de programmation, son apprentissage sera rapide.
Sur le dernier article, je vous avais montré comment obtenir les valeurs en hexa des capteurs puis averti que Texas Instruments propose une page web de documentation (http://processors.wiki.ti.com/index.php/SensorTag_User_Guide) où l'on trouve comment sont structurées les données et surtout l’algorithme de calcul des mesures pour chaque capteur. Donc, l'idée est d'interroger par un script Python la sonde en utilisant les commande shell de Bluez.
2.2)Le script
Ce qui affichera:
J'ai laissé le script faire trois mesures pour simplifier l'affichage, à noter que la première mesure du capteur de température infra-rouge renvoie toujours 2.45°C. Heureusement, la seconde est bonne..., je n'ai pas compris pourquoi ce bug. Si quelqu'un à une idée, je suis preneur.
2.3)Explications
Quelques explications sur le fonctionnement de ce script:Conclusion
Voilà pour cet article. Sur le prochain, nous allons voir comment transmettre les données et traiter la récupération/transmission des données par l'intermédiaire de Threads. Pourquoi des threads? Pour transmettre toutes les opérations risquées à un autre processus que le programme principal. L'intérêt est simple, éviter de planter notre programme principal. Il s'agira ainsi de fiabiliser et pérenniser le bon fonctionnement de notre script.
© 2024 www.doritique.fr par Robert DORIGNY