加速度センサーとジャイロセンサーを可視化

スマホの普及で、加速度センサーとジャイロセンサーが身近になりました。

このセンサーたちをうまく使いこなすため、3軸加速度センサー と3軸ジャイロセンサーを搭載した「MPU-6050」モジュールを使い、動作確認しながら理解を深めようと思います。

MPU-6050モジュールの接続

Arduino Nanoを利用します。A4、A5につなぐI2C接続です。

プログラムは「加速度+ジャイロのGY-521(MPU-6050)を使ってみた -1-」の掲載コードを利用させて頂きました。

シリアルモニタで確認すると・・・

うっ・・・大量の数字が高速で書き出されます。数字を追えません。

だいたい、1行に何で11個も値が書き出されるのでしょう?

加速度3軸+ジャイロ3軸、計6軸のはずです。

気温や角度も取得

コードを見ると、加速度とジャイロの他に、気温と角度が表示されるようです。(最初の0は無視します。)

どんなに振り回しても、1番最初の値が変わらないと思ったら気温でした。
気温を出力する理由がありそうですが、深追いはやめておきましょう。

2、3、4番目の値は加速度で、振り回すと値が激しく変化します。
センサーを静止しても重力の方向に、加速度が加わるようです。

次に5、6、7番目の角度の値がですが・・・これはなんでしょう。

acc(加速度)_angle(角度)なので、各軸の重力のかかり方から傾きの角度を算出できるだと思います。

そして最後に8、9、10番目がジャイロの値です。
回転速度が出力されます。

静止状態で0のはずですが、誤差があるようです。

センサーデータ可視化の全体構成

数字の羅列から、加速度やジャイロの変化を読み取るのは厳しいです。

そこで、センサーデータを可視化してみたいと思います。

MPU-6050で取得する加速度とジャイロのセンサーデータを、Node.js経由でブラウザに書き出します。

JavaScriptとCSSを使い、センサーの変化をアニメーションで表現します。

加速度は白いボール、角度はピンクのひし形、ジャイロは歯車で表現します。

まずは加速度の確認

ぐるんっと回りました。

横軸X、縦軸Y、ボールの遠近でZを表現しています。

数字の羅列では分かりませんでしたが、可視化することによって、正常な値を出力していたことが分かります。

次に角度の確認

角度を使い、傾きを再現してみます。

これは、少々扱いが難しいです。
繊細に扱わないと、思わぬ方向を向いてしまいます。
何か補正が必要か・・・?

使いこなせれば、3Dオブジェクトを操作できそうです。

最後にジャイロの確認

早く動かすほど、歯車が高速で回るようにしています。

ジャイロはだいたい意図通りの動きをします。

基礎を理解して応用へ

以上、大量のデータを可視化することで、加速度センサー、ジャイロセンサーの基礎が学べたと思います。

これらのセンサーデータを、IoTやアプリ開発に応用していきます。

MOVERIOで首の振り連動ロボット

前回から作っている恐竜ロボットの試験動作を兼ね、ちょっと遊びます。

スマートグラス「MOVERIO」をかけた子供の首の振りに合わせて、恐竜も首を振るようにします。

MOVERIOと連動で首振り

子供が上を向いたら、恐竜も上を向きます。

MOVERIOのセンサーと連動して、Arduinoで作った恐竜ロボットが動きます。

サーボモーターをNode.jsで制御

この、まぬけな顔の恐竜の頭部は、Arduino Nanoが組み込まれていて、サーボモーターを制御します。(中身は前回の記事に写真があります。)

ベロにはレーザー距離センサーが実装されていますが、今回は使いません。

後頭部はPCと接続するジャックがあり、USBで接続したPC(Node.jsサーバー)から、4方向(正面、右、左、上)向きの命令を受け取ります。

加速度センサーとジャイロセンサーで首の向きを

MOVERIOの加速度センサーで首の上下、ジャイロセンサーで首の振りを取得します。

MOVERIOのブラウザでHTMLを読み込んで、JavaScriptでセンサー値を取得し、Node.jsサーバーにSocket.ioで送っています。

MOVERIO(JavaScriptで首の方向取得)
↓無線LAN
PC(Node.jsでリアルタイムシリアル通信)
↓有線USB
恐竜ロボット(Arduinoでサーボモーター動作)

という流れです。

使いどころは?

今回の試作は、カメラ、ロボットの遠隔操作に使えそうです。
ローカルサーバーでの実験でしたが、リアルタイム性は高いです。遅延なしでMOVERIOとサーボモーターが連動していました。

遊びのように見えて、案外、必要性が高い分野かもしれません。

超高齢社会の日本ではロボットの補助が必須になるでしょう。

Webの知識でロボット制御は、近い将来、役に立ちそうな・・・そんな予感がします。

Arduinoをぬいぐるみに

無機質なArduinoを、フェルトのぬいぐるみでかわいくします。

ボッチャソナー2号の続きです。

恐竜のぬいぐるみ

Arduinoを覆う、恐竜のぬいぐるみを作ります。

口を開けて距離を測る・・・恐竜ソナーとなる予定です。

フェルトを切ります。

市販のぬいぐるみ用型紙をベースにしつつ、自身のArduino工作に合うよう、アレンジが必要です。

恐竜の頭です。

恐竜の頭に、Arduino Nanoを収納します。

ブレッドボードは大きいので、ユニバーサル基板を、頭のサイズにカットして使います。

距離センサーは恐竜の口からベロンと出したいと思います。

無駄に長い配線はカットします。後戻りできないので勇気がいります。

カットした配線を割いて・・・

基板にはんだ付けします。

結構ぐちゃぐちゃになってきました。

量産できるような採算性の良い開発であれば、プリント基板でシンプルにできるのですが・・・

ベロをつけます。

なぜか逆光の怖い写真ですが、目をつけるとかわいい(若干まぬけな)感じになります。

つづく・・・。