
ラズパイ3のDockerでJupyter Notebookサーバを起動して、SensorTagのデータをグラフに表示してみました。
Jupyter Notebook Server for Rasberry Pi
https://hub.docker.com/r/maxjiang/rpi-jupyter/
このラズパイ用のJupyter Notebookコンテナイメージを使います。
--net host
をつけて起動します。
グラフ表示に matplotlib
も使いたかったのでdatascience
タグを使っています。
1
| $ docker run --net host -dp 8888:8888 --name myjupyter maxjiang/rpi-jupyter:datascience
|
コンテナシェルを起動
1
| $ docker exec -it myjupyter /bin/bash
|
bluepyをインストール
1 2 3
| # apt-get update # apt-get install libglib2.0-dev # pip3 install bluepy
|
Jupyter Notebookにログインするためのトークンを確認
1 2 3
| # jupyter notebook list Currently running servers: http://localhost:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx :: /root/notebooks
|
表示されるURLはlocalhost
となってるので、この部分を以下のようにraspberrypi.local
(またはIPアドレス)に読み替えてブラウザアクセスします。
http://raspberrypi.local:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Jupyter Notebookのdashboardが表示されたら Python 3 の Notebook を使います。
Jupyter Notebookの使い方の説明は割愛します。
SensorTagの値をRead
python code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| import bluepy import time tag = bluepy.sensortag.SensorTag('XX:XX:XX:XX:XX:XX') tag.IRtemperature.enable() tag.humidity.enable() tag.barometer.enable() tag.accelerometer.enable() tag.magnetometer.enable() tag.gyroscope.enable() tag.lightmeter.enable() tag.battery.enable() time.sleep(1.0) print('Temp: ', tag.IRtemperature.read()) print("Humidity: ", tag.humidity.read()) print("Barometer: ", tag.barometer.read()) print("Accelerometer: ", tag.accelerometer.read()) print("Magnetometer: ", tag.magnetometer.read()) print("Gyroscope: ", tag.gyroscope.read()) print("Light: ", tag.lightmeter.read()) print("Battery: ", tag.battery.read()) tag.disconnect() del tag
|
結果が表示されるまで少し待ちます。
Jupyter Notebookからでも問題なくSensorTagの値をRead出来ました。
1 2 3 4 5 6 7 8
| Temp: (35.71875, 21.65625) Humidity: (35.84320068359375, 61.181640625) Barometer: (36.7, 1012.02) Accelerometer: (0.26416015625, 0.2158203125, 0.846435546875) Magnetometer: (24.589987789987788, 83.06617826617827, 31.187301587301587) Gyroscope: (-0.69427490234375, -0.2899169921875, 1.21307373046875) Light: 149.88 Battery: 100
|

グラフ表示
Accelerometerの値を10回Readしてグラフにしてみます。
python code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import matplotlib.pyplot as plt %matplotlib inline import time import datetime as dt import bluepy tag = bluepy.sensortag.SensorTag('XX:XX:XX:XX:XX:XX') tag.accelerometer.enable() time.sleep(2.0) t = [] x = [] y = [] z = [] for var in range(0,10): acc = tag.accelerometer.read() x.append(acc[0]) y.append(acc[1]) z.append(acc[2]) t.append(dt.datetime.now()) time.sleep(0.5) plt.plot(t, x, label='x') plt.plot(t, y, label='y') plt.plot(t, z, label='z') plt.legend() tag.disconnect() del tag
|
グラフに表示できました。
