2010年5月16日 23:48
- | Retweet
-
Arduino互換機対応の心拍センサシールド「A.P. Shield」を作ってみた
どうもこんにちは、しがく(@shigaku)です。
半期に一度のものづくりガイズの祭典「Make Tokyo Meeting 05」が2010/5/22,23に東工大で開催されました。もちろんkoress projectも出展しました。今回はおもしろネタはお休み。それよりも、やっぱり面白いものをみんなが簡単に作れるようになるのを少しでもサポートしたいという思いがあって、今回はこんなものを作ってみました。
Arduino互換機対応 心拍センサシールドを開発しました
A.P. Shield(エーピーシールド)は、誰でも簡単に心拍を使ったデバイスやメディアアートを作れるように開発された、Arduinoの拡張ボードです。
そもそもArduinoについて
Web業界の人向けに簡単に説明しておくと、Arduinoは電子回路の知識をほとんど知らずともデバイス・ハードウェアが作れるキットのこと。1枚の基板の上にマイコン(CPU)やシリアル通信のICや電源回路がすべてそろっていて、USBでパソコンにつないでプログラムを転送するだけ。Processingという言語で記述できて、JavaやCライクな文法で、簡単にデバイスを操作できます。秋葉原で電子部品を買って来て、自分で操作することも簡単。LEDやモーター、さらには小型の液晶ディスプレイを操作したりも可能。
ちなみにこのArduino、電子工作のブームを飛び越えて(というかkoress projectが注目しているのですが、)Webとつながるハードウェアの潮流を巻き起こそうとしているのがすごいところです。今年の秋にはオライリーからも「Arduino Cookbook」が出版される予定。今のうちからキャッチアップしておいても損なしの注目プロダクトです。
心拍の状態がint型の数値で取得できる
では、このA.P. Shield、いったいどうやって使うかという話になるのですが、これがまた非常に簡単です。
まず、センサに指を軽く乗せて4,5秒待ちます。(センサは、上の写真に写っている黒い四角い部品) すると、プログラム側から心拍の値を取得することができます。口で言うよりもソースのほうがわかりやすいです。
int sensorValue = analogRead(PIN_NUMBER);
これだけです。本当に簡単です。analogReadというメソッドの引数は、A.P. ShieldとArduinoを接続しているピン番号です。デフォルトは4番ピン。で、このメソッドの戻り値を、心拍として扱うことできるのです。
心電図のグラフを思い浮かべてください。心臓がドクドク言うと、グラフに1回の鼓動で1回の山が書かれていくと思います。A.P.Shieldを搭載したArduinoのプログラムで上のようなメソッドを呼び出すと、その時点でのグラフの振幅値を、0~255の範囲で取得することができるようになっています。(実際には心電図のような精密な値ではなく、ノイズも相当含まれています。あくまでホビー用途で、医療機器のようなものではないので、そのあたりはご了承ください。)
数値が一定以上になったら○○する、というプログラムを書けば、心拍で動くデバイスを作ることができます。アイディアは使う人次第ですので、なんでも可能です。もちろん、Arduinoにインターネット通信を行うEthernet Shieldを載せて、さらにA.P. Shieldを載せれば、秋月パルスと同じことができます。詳しくはこの記事の最後にあるサンプルプログラムで動かしてみてください。
説明書
オープンソースですので、そのまま回路図とソース公開いたします。
心拍センサシールド 取扱説明書
※キット版と併用している説明書なので組み立て方法も書いてあります。
もちろん、Japaninoでも使えます
大人の科学25号のふろくは、Arduino互換機、国産の「Japanino」です。もちろん、A.P. Shieldも対応!
Special Thanks!!!
今回、A.P. Sheildの基板は、初めて自分でCADを使って図面を起こして基板メーカーに発注してみました。その際、 @fuyuton さんには本当にお世話になりました。まったくCAD初心者だったので、誰か基板起こせる人はいなかものかとtwitterでつぶやいたら、@fuyutonさんが快くいろいろ教えてくれたのでした。この場を借りてお礼を言わせていただきます、ありがとうございました! (で、@fuyuton先生には、はんだづけカフェに行けば会えるという噂w)
個人でも簡単に基板が作れる時代なんですね。そのあたりはまた別の記事に。
※ちなみに、コードネーム「A.P. Shield(エーピーシールド)」のA.P.は秋月パルスの頭文字。
サンプルプログラム
MTM05でデモしていた、単純にA.P. Shieldに7セグLEDを取り付けて、心拍をカウントするだけのプログラムです。後半は7セグLED表示用のプログラムで、心拍を検出するのに必要なのはメインループのif文の条件です。定数はえいやっと決めうちです。判定はさらに精度をあげられそうですが、もうすこし非線形な分離をする必要がありそう。
ネット上のつぶやきや記事いろいろ
@ffuyyoさん http://ffuyyo.blogzine.jp/blog/2010/06/mtm05_0faa.html
心拍に応じてリアルタイムに音楽の再生速度を変えています。状況を見えています。リアルタイムな心拍のグラフも見れます。vvvv使っているのも面白い!
@OKM_Fさん http://twitter.com/OKM_F/status/14624470313
@hooryさん http://twitter.com/hoory/status/14618863259 http://twitpic.com/1qlhna
@usopyonさん A.P. Shieldで心拍に連動した「だるまさんが転んだ」
何かつくったら @shigaku まで教えてくださーーーい!!!
コメントする