さてIoT企画の第2弾ということで、今回も「Raspberry Pi」を使った連携サンプルを紹介したいと思います。
はじめに
面倒で健康診断を放置して、年を過ごしてしまうことがよくあります。
もっと気楽に病院での検診ができれば…。
あ!病院に行かなくてもクラウドでできたらいいな!という妄想を今回は小さく形にしてみました。
今回のテーマは、kintone Hospital。
なんか大風呂敷を広げている感がありますが、kintone × 医療のキッカケになればと思います。
さて、今回は以下のようなイメージで作成していきます。
- センサーを使ってRaspberry Piで心拍数を取得する。
- 1分間あたりの心拍数を測定する。
- kintoneへ登録する。
環境準備
Raspberry Pi
Raspberry Pi Model B Revision 2
心拍センサー
心拍を取得するための
パルスセンサー
です。
通電するとハートの中に埋め込まれたLEDが光っていい感じ。
ちなみに、今回はこのまま使っていますが、基盤部分が汗でショートすることもあるためラバーなどを被せて保護したほうがいいです。
アナログデジタルコンバータ(MCP3002)
Raspberry Piがデジタル入力のみ対応のためアナログ出力の心拍センサーを取得するための変換機として間につなぎます。
kintoneアプリ
計測結果を登録するためのアプリを用意します。
フィールド名 | フィールドコード | フィールドタイプ |
---|---|---|
測定日時 | createdate | 日時 (作成日時) |
心拍 | pulse | 数値 |
Raspberry Piの配線を組んでみる
配線図はこんな感じにしてみました。
ハートマークからでている紫の線がセンサーで、この出力データがADコンバータを通してRaspberry Piに送られます。
実際に配線を組んだものがこちらになります。
プログラムを組んでみる
測定のプログラムはPythonで作成します。
今回Raspberry Piからkintoneに登録するのに
kintone SDK for Python
を使用しました。
なんと5行あればkintoneにPOST、PUT、GETができる超便利SDKです。
シンプル操作でお手軽に利用できるのでおすすめです。
ソースコード
pulse.pyのファイル名で以下コードを保存します。
|
|
処理の流れはこちら。
- kintoneの接続処理をする。
- センサーデータ入出力用のSPIモジュールを準備する。
- 1秒ごとにセンサーからの情報を取得し、これをループ処理で300回行う。
計測時間は0.1秒 × 300回で30秒とする。 - 測定値が8 V以上の値をカウントする。
だいたい脈ありのときに2.8 V以上になったのでそれを基準値としています。
また、センサーのしくみ上連続して2.8 Vを超える時があるのでそのような時はカウントせずにスキップしています。 - 計測処理が完了したらカウントした心拍数をkintoneに登録する。
計測時間は30秒なのでkintoneに登録する際は2倍して1分間の心拍数とする。
動作確認
実際に動作させてみるとコンソールにログが出力され、0.1秒ごとの計測値と心拍カウントが確認できます。
実行コマンド
|
|
アプリ側には以下のように測定結果が表示されます。
あとはこんな感じに月や週ごとの集計グラフ作ったりしてもいいですね。
おわりに
IoT企画第2弾お楽しみいただけたでしょうか。
本当は脈拍だけではなく血圧も測りたいなーと思っていたのですが、ハードウェア的な問題で今回は見送らせていただきました(涙)
また機会があれば挑戦したいと思います。
ちなみに私は普段コードばかり書いているのですが、今回の企画ではメンバの皆でワイワイと夏休みの工作をしている感じで楽しく作業させていただきました。
興味がある方はぜひ息抜きにやってみるといいかなと思います!
さて、このシリーズは全6回の予定となっています。
まだまだいろんなネタが出てきますのでお楽しみに!