MPU6050でキューブ Pythonプログラム

MPU6050ビューアー インタラクティブ解説

ESP32とPythonで実現する3D可視化

このアプリケーションは、MPU6050加速度センサーから取得したデータを、PC上でリアルタイムに3Dグラフィックスとして可視化するPythonプログラムの仕組みをインタラクティブに解説します。物理的なセンサーの動きが、どのようにして画面上のデジタルな表現に変換されるのか、そのプロセスを紐解いていきましょう。

目的

ESP32に接続されたMPU6050センサーからのシリアルデータ(加速度)をPythonで受信し、その値に基づいて3Dの立方体をリアルタイムに回転させます。これにより、センサーの傾きを直感的に把握できます。

使用技術スタック

  • Python:プログラムのメイン言語
  • Pygame:ウィンドウ管理、イベント処理、テキスト描画
  • PyOpenGL:3Dグラフィックス描画(立方体の回転)
  • PySerial:ESP32とのシリアル通信

システム構成

このプロジェクトは、ハードウェア(ESP32とMPU6050)とソフトウェア(PC上のPythonプログラム)が連携して動作します。以下の図は、センサーからのデータがPCに送られ、最終的に画面に描画されるまでの流れを示しています。

📡

MPU6050 on ESP32

加速度データを取得し、
シリアル信号として送信

💻

PC (Python)

シリアルデータを受信・解析し、
回転角度を計算

🖼️

OpenGL Display

計算された角度に基づき
立方体を回転描画

コード解説

プログラムはいくつかの主要な関数で構成されています。ここでは、設定部分と各関数の役割をタブ形式で詳しく見ていきます。タブをクリックして、各コードブロックとその解説を切り替えてください。

主要な設定

プログラムの動作を環境に合わせるための重要な設定項目です。特に`SERIAL_PORT`は、ご自身のPC環境に合わせて変更する必要があります。

# --- 設定 ---
# ESP32が接続されているシリアルポート名を指定
SERIAL_PORT = 'COM3'  # ★★★★★自分の環境に合わせて変更★★★★★
BAUD_RATE = 115200    # ESP32のプログラムと合わせる
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
# --- 設定ここまで ---

実行方法

このプログラムを実行するには、いくつかの準備が必要です。以下のステップに従って、環境を構築し、プログラムを実行してください。

1

ライブラリのインストール

Pythonプログラムを実行するために必要なライブラリをインストールします。ターミナルで以下のコマンドを実行してください。

pip install pygame PyOpenGL PyOpenGL_accelerate pyserial
2

ESP32の準備

MPU6050センサーをESP32に接続し、センサーデータをシリアルポートに出力するファームウェアを書き込みます。出力形式はカンマ区切りの文字列です。

// Arduino C++ Example
Serial.print(accelX);
Serial.print(",");
Serial.print(accelY);
Serial.print(",");
Serial.println(accelZ);
3

シリアルポートの確認と設定

PCのデバイスマネージャーでESP32が接続されているCOMポートを確認し、Pythonコード内の`SERIAL_PORT`変数をその値に書き換えます。

4

プログラムの実行

全ての準備が整ったら、ターミナルでPythonスクリプトを実行します。

python mpu6050_viewer.py

ウィンドウが表示され、MPU6050の傾きに応じて立方体が回転すれば成功です。

まとめ

このプロジェクトは、物理的なセンサーデータをPC上の3Dグラフィックスと連携させる実用的な例です。Pygame, PyOpenGL, PySerialを組み合わせることで、リアルタイムでインタラクティブなアプリケーションをPythonで構築できます。

コメント