ESP32 RC Cars
デモ動画
- このプロジェクトは、ESP32ベースのリモート制御カメラシステムを実演する
- WebSockets を通じてリアルタイムのビデオストリームを送信し、モーターとサーボを制御できる
- Python サーバーアプリケーションが WebSocket 通信を管理し、ESP32 デバイスを制御できる Web インターフェースを提供する
機能
- ESP32-CAM から Web サーバーへリアルタイムでビデオをストリーミング
- WebSocket コマンドによるモーターとサーボの遠隔制御
- モーターとサーボをデフォルト状態にリセットする自動タイムアウト機能
- サーバー上で動的なマルチクライアント用ビデオフィードキャンバスを提供
ハードウェア要件
- ESP32-CAM(AI Thinker モジュールまたは互換ボード)
- 適切な GPIO ピンに接続されたモーターとサーボ
- ESP32-CAM 用の安定した 5V 電源
- 任意: 追加機能用の SD カード
- 通信用の Wi-Fi ネットワーク
材料
- すべてのキットは aliexpress で購入可能
- 車体シャーシ、電子速度制御器、バッテリーホルダー、18650 セルまたは 7.4v バッテリーパック、ESP32-CAM、Bluetooth ゲームパッド(PS4 コントローラーを使用)
ソフトウェア要件
ESP32 コード
ライブラリ
WiFi.h: Wi-Fi 接続
ArduinoWebsockets.h: WebSocket 通信
esp_camera.h: ESP32-CAM カメラ制御
ServoControl.h および Esc.h: サーボとモーター制御
Arduino.h: 標準 Arduino 関数
Python サーバー
依存関係
- 次の Python ライブラリをインストール:
aiohttp, opencv-python, numpy
設定
ESP32 ファームウェア
secrets.h ファイルを編集して、Wi-Fi 認証情報と WebSocket サーバー URL を含める
- カメラモジュール、モーター、サーボの GPIO ピンがハードウェア設定と一致していることを確認
Python サーバー
- Web インターフェース用の
index.html ファイルと一緒にサーバースクリプトをディレクトリに配置
- サーバー起動:
python3 server.py
使い方
ESP32
- Arduino IDE または互換プラットフォームを使用して、提供されたスケッチを ESP32-CAM にアップロード
- シリアル出力を監視し、Wi-Fi および WebSocket サーバーへの接続に成功したことを確認
サーバー
- Python サーバースクリプトを実行
- ブラウザで Web インターフェースを開き、リアルタイムのビデオストリームを表示
- WebSocket 接続を通じて制御コマンドを送信
WebSocket コマンド
MOTOR:<speed>: モーター速度を設定(-255 から 255)
SERVO:<angle>: サーボ角度を設定(0 から 180)
CONTROL:<speed>:<angle>: モーター速度とサーボ角度を同時に制御
技術的詳細
ESP32 の初期化
- Wi-Fi: 指定された Wi-Fi ネットワークに接続
- カメラ: ビデオストリーミング用の適切な設定で ESP32-CAM を構成
- WebSocket: サーバーとの WebSocket 接続を設定
タイムアウト処理
- あらかじめ定義されたタイムアウト期間内に制御コマンドが受信されない場合、モーター速度は
0 に、サーボ角度は 90 にリセットされる
Python サーバー
- 複数の ESP32 クライアントとの WebSocket 通信を処理
- 受信したビデオフレームを処理し、動的にグリッドへ配置
- ビデオフレームのグリッドを Web インターフェースへストリーミング
トラブルシューティング
接続の問題
secrets.h の Wi-Fi 認証情報を確認
- WebSocket サーバーが実行中でアクセス可能か確認
ビデオストリームの問題
- ESP32-CAM に適切な電源が供給されていることを確認
- カメラ初期化設定を確認
ライセンス
- このプロジェクトは MIT ライセンスの下でオープンソースとして提供される
貢献
- アプリケーション改善のための Issue 提出や Pull Request を歓迎
1件のコメント
Hacker Newsのコメント
12年前、Arduino はあったものの ESP32 はまだなかった時代に、HTC Magic の携帯電話を使ってカメラ兼 WiFi 送信機として活用し、Arduino と接続してサーボと RGB LED を制御するプロジェクトを行った。接続は安定していなかったが、楽しかった
RCカーの自動化に興味があるなら、面白い読み物。数年前の資料だが、今ならもっと簡単な方法があるかもしれない
ESP32 CAM を購入する前に、外部アンテナ付きのものを検討したほうがよい。フレームレートの問題については Reddit の助言を参考にした
最近、Rust と Steam Deck を使って似たようなプロジェクトを進めた
FPV の大きな問題は遅延で、このプロジェクトの遅延時間が気になる
ESP32 で動く RC 戦車を、PlayStation 4 コントローラで Bluetooth 経由で操作した
AliExpress では、まともな 2.5インチ RCカー が 30ドル、スタンドアロンの 5.8 GHz アナログカメラが 25ドル
似たようなプロジェクトを検討中で、遅延時間についての経験が気になる。映像フィードを見ながら遠隔操作できるのか知りたい。障害物回避では遅延が問題になりそう
自動で障害物を避ける猫のおもちゃを作りたいと思っていた。このプロジェクトは、もともと選んでいたものより良い土台になるかもしれない