Mesurez la température, l'humidité, la pression, l'éclairement et le niveau de la batterie avec TI SensorTag et utilisez Bluetooth Low Energy (BLE) pour Raspberry Je l'ai envoyé à Pi3 (RPi3) et l'ai envoyé de RPi3 au service de visualisation de données IoT "Ambient" pour représenter graphiquement les données. Part 1 est une simple qui scanne le BLE, lit les données SensorTag trouvées et les envoie à Ambient toutes les 5 secondes. Cependant, cette fois, il prend en charge plusieurs SensorTags et l'intervalle de lecture est défini sur 5 minutes. Nous mettons au défi la mesure à long terme avec un lecteur de pile bouton.
SensorTag
SensorTag dispose de trois types d'appareils avec différents modules de communication. Cette fois, j'ai utilisé un "SensorTag multi-standard" qui communique avec BLE. Les capteurs comprennent des capteurs de température ambiante et de surface, des capteurs d'humidité, des capteurs de pression barométrique, des capteurs de lumière ambiante, des capteurs d'accélération, des gyroscopes, des boussoles et des capteurs magnétiques, qui fonctionnent avec une seule pile bouton (CR2032).
Puisque SensorTag communique avec BLE, j'ai décidé d'utiliser Raspberry Pi3 (RPi3) comme passerelle, d'acquérir les données SensorTag de RPi3 avec BLE et de les envoyer à Ambient.
Dans la communication BLE, le terminal (périphérique) envoie des données de publicité, les scanne du côté central, trouve le terminal nécessaire, s'y connecte et envoie et reçoit des données.
SensorTag envoie des données publicitaires et s'il n'y a pas de connexion pendant 2 minutes, il passe en mode veille et consomme moins d'énergie. Lorsque vous entrez en mode veille, vous ne pouvez pas réveiller le terminal depuis le côté central car il ne communique pas, et vous pouvez revenir en mode publicité en cliquant sur le bouton d'alimentation du terminal.
Comme SensorTag ne peut se connecter qu'à une seule centrale, vous devez attendre en mode publicité si vous souhaitez vous connecter à plusieurs centrales, mais si vous l'utilisez comme capteur d'environnement, vous ne pouvez vous connecter qu'à une seule passerelle en tant que centrale. Ça va. Si vous acquérez périodiquement des données de mesure alors que vous êtes connecté à la passerelle, l'intervalle d'acquisition ne passera pas en mode veille même s'il est de 2 minutes ou plus. Si la connexion est perdue pour une raison quelconque, essayez de vous reconnecter.
Partie 1 déclare: «Si vous laissez le SensorTag dans l'état annoncé pendant 2 minutes, il entrera en mode veille et vous ne pourrez pas communiquer, alors utilisez-le comme terminal pour des mesures à long terme. J'ai écrit: "C'est difficile", mais j'ai trouvé qu'il peut être utilisé comme terminal pour des mesures à long terme sans aucun problème car il ne passera pas en mode veille s'il est laissé connecté.
Le programme sur RPi3 a été écrit en Python. Le fonctionnement général est le suivant.
Lorsqu'un SensorTag est trouvé, un thread indépendant est démarré pour chaque SensorTag afin qu'il puisse gérer plusieurs SensorTag, et un thread se connecte à un SensorTag pour la communication.
J'ai également géré un serveur Web en Python et lancé le portail de paramètres SensorTag. L'ID de canal et la clé d'écriture lors de l'envoi vers Ambient ne sont pas décrits dans le programme, mais peuvent être définis à partir du navigateur.
La figure ci-dessous montre la configuration du programme sur RPi3.
J'ai utilisé bluepy comme bibliothèque pour accéder à BLE. Cette bibliothèque est bien documentée et est recommandée car elle contient également des modules pour accéder aux SensorTags.
Tout d'abord, installez bluepy sur RPi3.
pi$ cd /var
pi$ sudo mkdir -p www/html
pi$ cd www/html
pi$ sudo apt-get install python-pip libglib2.0-dev
pi$ git clone https://github.com/IanHarvey/bluepy.git
pi$ cd bluepy
pi$ python3 setup.py build
pi$ sudo python3 setup.py install
pi$ cd bluepy
pi$ cp blescan.py btle.py bluepy-helper __init__.py sensortag.py uuids.json ../..
Modifié pour définir l'ID de canal et écrire la clé de Ambient à partir du navigateur. Pour ce faire, vous devez transmettre les données du gestionnaire de requêtes HTTP au programme principal qui communique avec le SensorTag. Il existe différentes méthodes de communication inter-processus, mais cette fois j'ai utilisé Redis, qui semble avoir une bonne affinité avec Python. Là, installez Redis et la bibliothèque Redis Python.
pi$ sudo apt-get install redis-server
pi$ sudo pip3 install redis
Enfin, installez également la bibliothèque Python d'Ambient.
pi$ sudo pip3 install git+https://github.com/TakehikoShimojima/ambient-python-lib.git
Les fichiers requis pour le programme Python et le portail de configuration SensorTag ont été publiés sur Github.
pi$ cd /var/www/html
pi$ sudo wget https://github.com/TakehikoShimojima/sensortag-ambient/archive/master.zip
pi$ sudo unzip master.zip
pi$ cd sensortag-ambient-master
pi$ sudo chmod +x cgi-bin/sensortaglist.py cgi-bin/result.py
pi$ sudo mv * ..
pi$ cd ..
Étant donné que les privilèges root sont requis pour exécuter un programme qui accède à BLE sur RPi3, exécutez le programme comme suit.
pi$ sudo python3 st2ambient2.py -v
Si vous vous déconnectez de RPi3, le programme se terminera, donc pour continuer à fonctionner même si vous vous déconnectez, procédez comme suit.
pi$ sudo nohup python3 st2ambient2.py -v < /dev/null &
Il existe deux options de programme:
Après un certain temps, le programme démarre, vous trouverez le SensorTag. Si vous le démarrez avec l'option -v, vous verrez un message semblable au suivant:
New SensorTag 24:71:89:bc:63:84
Après «New Sensor Tag» se trouve l'adresse MAC du terminal.
Si vous ne trouvez pas le SensorTag, appuyez sur le bouton d'alimentation du SensorTag pendant au moins 3 secondes pour éteindre le terminal, puis cliquez à nouveau sur le bouton d'alimentation. La publicité commencera et la LED verte du SensorTag commencera à clignoter toutes les secondes. Après un certain temps, le programme devrait trouver le terminal.
Une fois que vous avez trouvé l'appareil, connectez-vous à l'adresse Raspberry Pi 3 depuis votre navigateur. Ensuite, le portail de configuration SensorTag suivant s'affiche, et l'adresse MAC et la force du signal (rssi) du terminal trouvé s'affichent.
Entrez l'ID de canal et la clé d'écriture de l'Ambient pour envoyer les données sur cet écran, cliquez sur le bouton de réglage, l'ID de canal et la clé d'écriture seront transmis au programme Python et les données de mesure seront envoyées à l'Ambient.
Si vous vérifiez avec Ambient, vous pouvez vérifier les données mesurées comme suit.
Recommended Posts