MPU6050をRaspberry Piで使ってみた。(その1)

MPU6050という3軸ジャイロスコープ・3軸加速度センサーモジュールを搭載したチップを入手しましたので、今日はこれを使って何かやってみたいと思います。

この商品、Amazonで210円で購入しました。とてもお安いですね。

それでこれを使って何かやろうとWebから情報を漁ってみたのですが、やはりArduinoに接続して利用するケースが多いようです。私はArduinoを持っていないので(買えばいいんですけど)、Raspberry Pi(以降ラズパイ)に直接接続して使える情報を探してみたところ面白そうなサイトを見つけました。

3D OpenGL visualization of the data from an MPU-6050 connected to a Raspberry Pi

MPU6050をラズパイにつないで、OpenGLで直方体をpygameのウィンドウ内でグリグリ動かすというものです。

では早速ラズパイにMPU6050を接続します。ジャンパーワイヤーで以下のようにラズパイのGPIOピンに結線すればOKです。(ピンのレイアウトはここなどを参照ください。)

VCC => 1番ピン(3.3V電源)
GND => 6番ピン(グラウンド)
SCL => 5番ピン(GPIO3)
SDA => 3番ピン(GPIO2)

img_1538

(写真ではVCCとGNDは上記とは別のピンを使用しています。)

ラズパイとの通信にはI2Cを利用するので、ラズパイのメニューから「Raspberry Piの設定」を開き、インターフェイス タブでI2Cを有効にしてください。

それで、最初に「面白そうな」と言っていたサイトでは直方体(いわゆる板)を動かしていました。そしてそのページの最後には、「センサのノイズのせいで静止してても板がブルブル震えちゃうので、この震えを抑える方法を次回の記事で紹介するね」的なことが書いてあります。まず、板というのはあまり面白くないですし、OpenGLにはサンプルのモデルとしてTeapotが実装されており簡単に呼び出せるのでこれを使うことにします。そして震えの抑制についてはその次回の記事の内容をそのまま使って、最初から震えを抑えたスクリプトを書いて動かすことにします。

このサイトのサンプルスクリプトでは、python-webpyというライブラリを利用して、簡易なWebサーバを立ててx軸とy軸の回転をクライアントに送信する仕組みをとっています。ですので、以下のようにインストールしてください。ついでにその他必要になるものもインストールします。(必要に応じてsudo apt-get updateしてから行ってください。)

以上で準備ができたので、以下のスクリプトを実行してまずサーバ側を起動します。(私の方で震えを抑えるコードを移植しています。)

ターミナルで”http://0.0.0.0:8080/”と表示されればOKです。次に以下のクライアント側のスクリプトを別のターミナルから起動します。(私の方で、板の代わりにTeapotを表示するように手を加えています。)

pygameのウィンドウが起動して、白いTeapotが表示されれば成功です。なお上記の78行目の”glutSolidTeapot(1)”を”glutWireTeapot(1)”に変えるとワイヤーフレームのTeapotが表示されるようになります。

Raspbian JessieではGPUによるOpenGLのハードウェア・アクセラレーションが可能です。Teapotの動きがカクカクしている場合は利用してみてください。ハードウェア・アクセラレーションを有効にする方法は、ターミナルで”sudo raspi-config”と打ち、Advanced OptionsのGL Driverを選択しenabledにして再起動すればOKです。(これで”/boot/config.txt”内に”dtoverlay=vc4-kms-v3d”の一行が追加されます。)

最後に例によってYouTubeに動画をアップしたので見てみてください。

今日のところはこの辺で。☕️

スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です