【広告企画】
Arduino×Pythonで始める! ステイホーム・ライフログ・センサの製作
~センサ評価キットSensorShield-EVK-003活用レポート~


コロナ禍で外出自粛や在宅勤務が増えたこともあり,運動不足が気になります.この状況の改善に向け,センサを使って室内での自分の行動を把握してみることにしました.ここでは,加速度や脈波,温度などを測定できる数種類のセンサを組み合わせて,室内での移動状態や運動をしたときの負荷状態を確認できる「ライフログ・センサ」を製作し,ステイホーム中の運動量を把握してみたいと思います.

 

 アンケートのお答えいただいた方から抽選で4名様に,本記事で紹介している 「SensorShield-EVK-003」をプレゼントいたします.アンケートはこちらから

 


 

1.ステイホーム・ライフログ・センサの概要

 

今回製作したライフログ・センサでは,次に示す5つのセンサを使ってデータを収集し,室内での自身の行動量を定量化してみます.

 

  • 加速度センサ:動作状態を知る
  • 地磁気センサ:動いた向き(方角)を知る
  • 脈波センサ :体への負荷を知る
  • 温度センサ :温度を知る
  • 気圧センサ :高さ方向の移動を知る

 

 

2.ロームセンサ評価キットの概要・特徴

 

今回の製作では,ローム社製のセンサ評価キットを使いました.

 

図1 各センサデバイス

 

ロームセンサ評価キット(SensorShield-EVK-003)には,Arduino用のシールドボード(図2)のほか,加速度や気圧,地磁気,温度,脈波,照度・近接,カラー,ホールセンサ(図1)がセットになっていて,用途に合わせ組み合わせて使うことができます.これだけそろっていて参考価格:17,300円(税抜)は,お得です.あとはArduino Unoを用意すれば使うことができます.サンプル・プログラムや使い方の動画もそろっているのですぐに試せます.
メーカー資料サイト:https://www.rohm.co.jp/sensor-shield-support

 

図2 シールドボード

 

図3 Arduino Uno

 

※キットのほかにArduino UnoやPC,USBケーブルも必要となります.
※センサの電源電圧を合わせてシールド・ボードのジャンパで設定し,対応するI/Fのコネクタにセットします.
詳細はロームセンサ評価キット(SensorShield-EVK-003)の使い方資料を参考にしてください.
http://rohmfs.rohm.com/jp/products/databook/applinote/ic/sensor/sensorshield-evk-003_ug-j.pdf

 

 

3.システム図(組み立て全体図)

 

ロームセンサ評価キットのシールド・ボードは,それぞれセンサ・デバイスのI/Fに合わせて,アナログ,I2C,GPIOに対応しています.温度センサはアナログのソケットへ,加速度,気圧,地磁気,脈波センサはI2CのI/Fのソケットに装着します.使用する電源は共通する3Vに切り替え,脈波センサは5VのPinにも接続します.
脈波センサと温度は人差し指で同時に使えるように配置します.

 

図4 システム図

 

図5 使うセンサを装着した様子

図6 人差し指で脈波センサと温度センサに触れると,脈波と体温を同時にグラフ化できる

 

 

4.センサログのグラフ化

 

記録したデータをグラフで可視化してみます.Windows PCからPythonを使いArduino Uno上のセンサから値を読み取りグラフ化してみます.図7は,脈波(赤),温度(青),気圧(緑),加速度(紫),地磁気(黒)のセンサ値をグラフ化したものです.

 

図7 センサ値をグラフ化した様子

 

図8は,脈派センサと温度センサに指を触れたままでシールド・ボードを手に持ちながらスクワット運動と回転を繰り返したときのセンサ出力をグラフ化したものです.
加速度(紫)は上下方向の加速度を表示しています.上下運動時の加速度が変化している様子が表れています.同時に気圧(緑)も上下に変化しています.20cm~30cmのスクワット運動の上下動でも変化していて精度が高い様子がわかります.少しフィルタを通せば,センサからの数値をもっと見やすくできます.
また,その場で立ったまま回転しているので地磁気(黒)のグラフも繰り返し変化している様子が確認できます.

 

図8 センサ値をグラフ化した様子

 

 

5.プログラム説明

 

Arduinoのスケッチにてロームのセンサ・デバイスからそれぞれ読みだした値を,カンマ区切りのCSVデータに編集してシリアル通信でPC側に送ります.PC側ではPythonのコードにより受信したCSVデータに対して,各センサに該当する値を分離してグラフ表示します.CSVデータのフォーマットは以下になります.
“脈波値1, 脈波値2, 温度, 地磁気x, 地磁気y, 地磁気z, 気圧, 気温, 加速度x, 加速度y, 加速度z”

 

 

(1) Arduino Unoのスケッチ(概略)

 

(2) PC側のグラフ表示プログラム(Python) (概略)

 

プログラム全コードは下記から取得できます.
https://github.com/nakajimakou1/rohm-lifelogIoT

 

 

6.ライフログ・センサを使った感想

 

ライフログ・センサとしてロームセンサ評価キットを使ってみました.Arduino Unoに装着するシールド・ボード上に必要なセンサ・デバイスを選択して組み合わせて使えるので自由度が高く,サンプルのスケッチもダウンロードしてすぐに試せるので迷うことはありませんでした.使い方のビデオによる解説もとても役に立ちました.気圧センサなどは地域や天気によって日々変化するため見やすい位置にグラフ表示されるようにパソコン側のプログラムでセンサの値をオフセットしました.今回,使いきれなかったセンサもあるので次回はドローンに搭載してみたくなりました.ドローンの飛行時の振動など安定化性能を測ったり,飛行させながら明るさや飛行ルートの温度も測ることができそうです.

 

参考資料:
ロームセンサ評価キット(SensorShield-EVK-003)
https://www.rohm.co.jp/sensor-shield-support

 

 

7.補足情報

 

●「SensorShield-EVK-003」の購入方法

センサ評価基板[参考価格:17,300円(税抜)]は,コアスタッフやチップワンストップ,アールエスコンポーネンツで購入できます.また,センサ子基板は単体で購入も可能です.詳しくは,ローム社のWebサイト( https://www.rohm.co.jp/sensor-shield-support )をご覧ください.

●「SensorShield-EVK-003」の使い方

ローム社のWebサイトから入手できる「SensorShield-EVK-003 使い方資料」( http://rohmfs.rohm.com/jp/products/databook/applinote/ic/sensor/sensorshield-evk-003_ug-j.pdf )を参考にしてください.この資料で,センサボードの接続方法や各センサのサンプル・コードの入手方法が詳細に説明されています.

 


◆筆者紹介:中島 幸一(なかじま・こういち)◆
株式会社 VSN 所属 ( https://www.modis-vsn.jp/ ).組込エンジニアとして自動車メーカにて先進安全装置の開発に従事.日本ロボット学会,農業食糧工学会,計測自動制御学会(正会員)に所属し,SLAM ROS を応用した室内監視ドローンの研究・開発中.ドローン/IoT関連学会での講演や大学との共同研究など活躍の場を広げる.月刊インターフェース特集記事や各種論文を執筆.