Messen Sie Temperatur, Luftfeuchtigkeit, Druck, Beleuchtungsstärke und Akkuladestand mit TI SensorTag und Himbeere mit Bluetooth Low Energy (BLE). Ich habe es an Pi3 (RPi3) und von RPi3 an IoT-Datenvisualisierungsdienst "Ambient" gesendet, um die Daten grafisch darzustellen. Teil 1 ist eine einfache Methode, die die BLE scannt, die gefundenen SensorTag-Daten liest und alle 5 Sekunden an die Umgebung sendet. Dieses Mal werden jedoch mehrere SensorTags unterstützt und das Leseintervall ist auf 5 Minuten eingestellt. Wir fordern die Langzeitmessung mit Münzbatterieantrieb heraus.
SensorTag
SensorTag verfügt über drei Arten von Geräten mit unterschiedlichen Kommunikationsmodulen. Diesmal habe ich einen "Multi-Standard SensorTag" verwendet, der mit BLE kommuniziert. Die Sensoren umfassen Umgebungs- und Oberflächentemperatursensoren, Feuchtigkeitssensoren, Luftdrucksensoren, Umgebungslichtsensoren, Beschleunigungssensoren, Gyroskope, Kompasse und Magnetsensoren, die mit einer Einknopfbatterie (CR2032) betrieben werden.
Da SensorTag mit BLE kommuniziert, habe ich mich entschieden, Raspberry Pi3 (RPi3) als Gateway zu verwenden, SensorTag-Daten von RPi3 mit BLE zu erfassen und an Ambient zu senden.
Bei der BLE-Kommunikation sendet das Terminal (Peripheriegerät) Werbedaten, scannt sie auf der zentralen Seite, findet das erforderliche Terminal, stellt eine Verbindung dazu her und sendet und empfängt Daten.
SensorTag sendet Werbedaten und wenn 2 Minuten lang keine Verbindung besteht, wechselt es in den Ruhemodus und verbraucht weniger Strom. Wenn Sie in den Ruhemodus wechseln, können Sie das Terminal nicht von der zentralen Seite aus aktivieren, da es nicht kommuniziert. Sie können zum Werbemodus zurückkehren, indem Sie auf den Netzschalter am Terminal klicken.
Da SensorTag nur eine Verbindung zu einer zentralen Zentrale herstellen kann, müssen Sie im Werbemodus warten, wenn Sie eine Verbindung zu mehreren Zentralen herstellen möchten. Wenn Sie es jedoch als Umgebungssensor verwenden, können Sie nur eine zentrale Verbindung zu einem Gateway herstellen. Es ist in Ordnung. Wenn Sie regelmäßig Messdaten erfassen, während Sie mit dem Gateway verbunden sind, wechselt das Erfassungsintervall nicht in den Ruhemodus, selbst wenn es 2 Minuten oder länger beträgt. Wenn die Verbindung aus irgendeinem Grund unterbrochen wird, versuchen Sie erneut, die Verbindung herzustellen.
In Teil 1 heißt es: "Wenn Sie den SensorTag 2 Minuten lang im angekündigten Zustand belassen, wird er in den Ruhemodus versetzt und Sie können nicht kommunizieren. Verwenden Sie ihn daher als Terminal für Langzeitmessungen. Es ist schwierig ", aber ich fand heraus, dass es problemlos als Terminal für Langzeitmessungen verwendet werden kann, da es nicht in den Ruhemodus wechselt, wenn es angeschlossen bleibt.
Das Programm auf RPi3 wurde in Python geschrieben. Die allgemeine Funktionsweise ist wie folgt.
Wenn ein SensorTag gefunden wird, wird für jeden SensorTag ein unabhängiger Thread gestartet, damit er mehrere SensorTags verarbeiten kann, und ein Thread wird zur Kommunikation mit einem SensorTag verbunden.
Ich habe auch einen Webserver in Python ausgeführt und das SensorTag-Einstellungsportal gestartet. Die Kanal-ID und der Schreibschlüssel beim Senden an Ambient werden im Programm nicht beschrieben, können jedoch über den Browser eingestellt werden.
Die grafische Konfiguration des Programms auf RPi3 ist wie folgt.
Ich habe Bluepy als Bibliothek verwendet, um auf BLE zuzugreifen. Diese Bibliothek ist gut dokumentiert und wird empfohlen, da sie auch Module für den Zugriff auf SensorTags enthält.
Installieren Sie zuerst bluepy auf 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 ../..
Geändert, um die Kanal-ID und den Schreibschlüssel von Ambient über den Browser festzulegen. Dazu müssen Sie Daten vom HTTP-Anforderungshandler an das Hauptprogramm übergeben, das mit dem SensorTag kommuniziert. Es gibt verschiedene Methoden der Kommunikation zwischen Prozessen, aber dieses Mal habe ich Redis verwendet, das eine gute Affinität zu Python zu haben scheint. Installieren Sie dort Redis und die Redis Python-Bibliothek.
pi$ sudo apt-get install redis-server
pi$ sudo pip3 install redis
Installieren Sie abschließend auch die Python-Bibliothek von Ambient.
pi$ sudo pip3 install git+https://github.com/TakehikoShimojima/ambient-python-lib.git
Die für das Python-Programm und das SensorTag-Konfigurationsportal erforderlichen Dateien wurden auf Github veröffentlicht.
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 ..
Da Root-Berechtigungen erforderlich sind, um ein Programm auszuführen, das auf BLE unter RPi3 zugreift, führen Sie das Programm wie folgt aus.
pi$ sudo python3 st2ambient2.py -v
Wenn Sie sich von RPi3 abmelden, wird das Programm beendet. Führen Sie die folgenden Schritte aus, damit es auch nach dem Abmelden weiterhin ausgeführt wird.
pi$ sudo nohup python3 st2ambient2.py -v < /dev/null &
Es gibt zwei Programmoptionen:
Nach einer Weile, in der das Programm gestartet wird, finden Sie den SensorTag. Wenn Sie es mit der Option -v starten, wird eine Meldung ähnlich der folgenden angezeigt:
New SensorTag 24:71:89:bc:63:84
Nach "New Sensor Tag" steht die MAC-Adresse des Terminals.
Wenn Sie den SensorTag nicht finden können, drücken Sie den Netzschalter des SensorTag mindestens 3 Sekunden lang, um das Terminal auszuschalten, und klicken Sie dann erneut auf den Netzschalter. Die Werbung startet und die grüne LED am SensorTag beginnt jede Sekunde zu blinken. Nach einer Weile sollte das Programm das Terminal finden.
Wenn Sie das Gerät gefunden haben, stellen Sie über Ihren Browser eine Verbindung zur Raspberry Pi 3-Adresse her. Anschließend wird das folgende SensorTag-Einstellungsportal angezeigt und die MAC-Adresse und die Signalstärke (rssi) des gefundenen Terminals werden angezeigt.
Geben Sie die Kanal-ID und den Schreibschlüssel des Ambient ein, um die Daten auf diesem Bildschirm zu senden. Klicken Sie auf die Einstellungsschaltfläche. Die Kanal-ID und der Schreibschlüssel werden an das Python-Programm übergeben und die Messdaten werden an den Ambient gesendet.
Wenn Sie mit Ambient prüfen, können Sie die gemessenen Daten wie folgt überprüfen.
Recommended Posts