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
# --- 設定ここまで ---
実行方法
このプログラムを実行するには、いくつかの準備が必要です。以下のステップに従って、環境を構築し、プログラムを実行してください。
ライブラリのインストール
Pythonプログラムを実行するために必要なライブラリをインストールします。ターミナルで以下のコマンドを実行してください。
pip install pygame PyOpenGL PyOpenGL_accelerate pyserial
ESP32の準備
MPU6050センサーをESP32に接続し、センサーデータをシリアルポートに出力するファームウェアを書き込みます。出力形式はカンマ区切りの文字列です。
// Arduino C++ Example
Serial.print(accelX);
Serial.print(",");
Serial.print(accelY);
Serial.print(",");
Serial.println(accelZ);
シリアルポートの確認と設定
PCのデバイスマネージャーでESP32が接続されているCOMポートを確認し、Pythonコード内の`SERIAL_PORT`変数をその値に書き換えます。
プログラムの実行
全ての準備が整ったら、ターミナルでPythonスクリプトを実行します。
python mpu6050_viewer.py
ウィンドウが表示され、MPU6050の傾きに応じて立方体が回転すれば成功です。
コメント
コメントを投稿