今日はArduino UNO互換機を入手したのでMPU6050を接続してデモを行ってみます。
参考サイトは以下です。
1) Arduino MPU 6050 – Best IMU Sensor Tutorial – DIY Hacking
2) InvenSense のジャイロ・加速度センサ MPU-6050 を使う
特に1)は手順としてそのまま参考にさせてもらいます。
まずMPU6050とUNO互換機との接続ですが、以下のようにしました。
VCC => 5V
GND => GND
SCL => A5
SDA => A4
INT => D2
UNO互換機とRaspberry Pi(以降ラズパイ)とのUSB接続はドライバのインストールなどは必要とせず問題なく行えました。(/dev/ttyUSB0として自動マウント。なお、Macへの接続にはこのページからドライバをダウンロードしてインストールする必要がありました。)
次にArduinoIDEのラズパイへのインストールですが、これはapt-getで簡単に行けました。
sudo apt-get update sudo apt-get install arduino
Arduinoのライブラリですが、ラズパイの場合は以下が保存場所となります。
/usr/share/arduino/libraries/
今回のデモではI2ClibとMPU6050という2種類のライブラリを使用しますが、ラズパイ用には参考サイト2)からダウンロードすることでうまくいきました。ダウンロードという項目が当該ページの下の方にありますので、そこからダウンロードして下さい。
ダウンロードしたらunzipコマンドで解凍し、上記のlibrariesディレクトリ直下に二つのディレクトリ(I2CdevとMPU6050)を丸ごとコピーして下さい。
準備が出来たのでarduinoを起動します。ターミナルからarduinoと打てば起動します。起動したら、ファイル -> スケッチの例 -> MPU6050 -> Examples –> MPU6050_DMP6と選択します。すると別ウィンドウでスケッチが開かれると思います。ここで次への準備としてスケッチの一部を変更します。一行をコメントアウトし、もう一行のコメントを戻してやります。
//#define OUTPUT_TEAPOT ... #define OUTPUT_READABLE_MANY
を、
#define OUTPUT_TEAPOT ... //#define OUTPUT_READABLE_MANY
とします。探しにくいので、検索で引っかけると早いです。
以上でマイコンボードに書き込む準備が出来たので、ウィンドウの左上にある右矢印ボタンを押して書き込んで下さい。
次にprocessingというアプリをダウンロードします。processingはインタフェースがArduinoIDEとよく似ていますが、ビジュアル表現の目的に特化したプログラミング環境です。このページからLinuxのARM版をダウンロードして下さい。ダウンロード後、解凍すると実行ファイルがフォルダ内にありますので、例えば以下のようにターミナルから起動して下さい。
cd ~/processing-3.2.1 ./processing
それから、今回のデモに必要なprocessingのライブラリToxicLibsの最新版をここからダウンロードして下さい。
ダウンロードしたら解凍し、カレントユーザのホームディレクトリ(/home/pi/ など)にあるsketchbook内のlibrariesディレクトリに全部移動して下さい。
では、processingでデモファイルを開きましょう。その前にファイルをコピーして少し編集します。まず~/sketchbook内にMPUTeapotという名前で新規にディレクトリを作成して下さい。それから先ほどArduinoのlibrariesディレクトリにコピーしたファイルをこのディレクトリ内にコピーします。
cp /usr/share/arduino/libraries/MPU6050/Examples/MPU6050_DMP6/Processing/MPUTeapot.pde ~/sketchbook/MPUTeapot/
コピー後、processingのファイル -> 開く から、sketchbook内にコピーしたファイルを開いて下さい。そして以下のように修正して下さい。
String portName = Serial.list()[0];
を、
String portName = "/dev/ttyUSB0";
のように、実際にUNO互換機がマウントされているポートを指定するようにして下さい。
以上で全ての設定が終わったので、Teapotデモを動かしましょう。processingのウィンドウの左上にある再生ボタンを押してスケッチを実行します。すると単純な飛行機の形をしたモデルが別ウィンドウに表示されます。実際にMPU6050センサーを動かすと全くタイムラグなしで飛行機の向きが変わるはずです。その様子をYouTubeにアップしたのが下の動画です。
面白いように動きますね。(ラズパイ側の性能のため途中で止まったりしますが…。)またDMPの性能が見事に発揮されており、振動やヨー角のドリフトなどもほとんどありません。
では、今日のところはこの辺で。☕️