mbed LPC1114FN28 + MPU-6050 DMPで姿勢角を取得

mbedで作りたかったのはUSB HID、、、といえば聞こえがいいけれど要するに傾きセンサーを使った特殊な形状をしているマウスである。
でもよく調べてみると、そういう用途にはmbed本体のUSBポートは使用できず、別にUSB出力が必要なのだった。しかしハンズオンイベントで買ったLPC1114にはUSB出力がついておらず、結局ボードも新しいやつを買わないといけないのであった。

でもMPU-6050の試運転くらいはできるので、LPC1114最初で最後の仕事としてつないでみた。

  

まず、mbed LPC1114FN28(以下mbed本体)とMPU-6050を繋がないといけない。基本的にMPU-6050単体ではなくモジュールを買うと思うんだけど、このモジュールには8個も端子がついているが使用するのは

VCC
GND
SDA
SCL
INT

の5個だけ。
せっかく買わされたのでSimple IoT Boardを使ってみようと思ったら一番左側のGloveコネクタがちょうどI2C通信用のVCC,GND,SDA,SCLがセットになっている。なので同じく買わされた温度センサー用のGloveコネクタを切ってMPU-6050へ。

MPU-6050は3Vから5Vまで対応らしい。
今何V入力されてるのかは不明



ただしINT(割り込み?)が全然違う位置にあるのでそこだけは別に線を伸ばす必要がある。

こうなるならSimple IoT Boardとやらは使う必要なかった…。


書き込むソフトウェアのほうは簡単で、こちらのプログラムをほぼそのまま使えばOK。ただしデフォルトでシリアル通信のボーレートがめちゃめちゃ高くなっているので9600に直したほうがよいと思う。(config.hのPC_BAUDRATEを変える)
出力フォーマットはいくつか定義されているけど何も変更しなければピッチ・ロール・ヨーになっている。(細かいことはわかんないけど、四元数表示とか)

で、書き込みが終わったら適当なターミナルでmbedにシリアル接続するとすさまじい勢いで結果が流れていくはず。

数字がババババーと流れていくvだけなので数値がどのように変化しているか見えにくいけど、MPU-6050のほうを机の上に置いた状態で通信したログを見るとピッチとロールがほぼ0度のあたりにとどまっていたのでいい感じではあると思う。

理由は不明だけど、表示が画像のように崩れる