Dr.Yellow Cam — XIAO ESP32S3 カメラ付きモーター制御プロジェクト
SEEED XIAO ESP32S3 を使って、カメラ映像をリアルタイムにブラウザへ配信しながら、モーターをリモート制御する組み込みシステムです。
プラレール車両(Dr.Yellow)に搭載することを想定したコックピット型Webインターフェースを提供します。
項目
内容
マイコン
SEEED XIAO ESP32S3
カメラ
OV2640(XIAO ESP32S3 Sense 付属)
モーターピン
D0 (IN1), D1 (IN2)
通信方式
Wi-Fi (SoftAP モード)
信号名
GPIOピン
説明
IN1
D0
モーター制御 (PWM CH 2)
IN2
D1
モーター制御 (PWM CH 3)
信号名
GPIO番号
説明
XCLK
10
マスタークロック
SIOD (SDA)
40
SCCB データ
SIOC (SCL)
39
SCCB クロック
Y9 (D7)
48
データビット 7
Y8 (D6)
11
データビット 6
Y7 (D5)
12
データビット 5
Y6 (D4)
14
データビット 4
Y5 (D3)
16
データビット 3
Y4 (D2)
18
データビット 2
Y3 (D1)
17
データビット 1
Y2 (D0)
15
データビット 0
VSYNC
38
垂直同期
HREF
47
水平参照
PCLK
13
ピクセルクロック
PWDN
-1
未使用
RESET
-1
未使用
ファイル
役割
src/main.cpp
メインロジック(カメラ・モーター・Webサーバー)
platformio.ini
ビルド設定(Espressif32, Arduino framework)
1. Wi-Fi アクセスポイント (SoftAP)
SSID: Plarail_DrYellow
デバイス自身がAPとなり、スマートフォン・PCから直接接続可能
サーバー
ポート
コア
内容
操作パネルサーバー
80
Core 1 (APP_CPU)
コックピットHTML + モーター制御API
ストリーミングサーバー
81
Core 0 (PRO_CPU)
MJPEG映像配信
PWM による速度制御(0〜100%)
安全リミッター付き(最大 PWM 85/255 ≒ 33%)
前進 / 後退 / 停止 の3モード
カメラPWMチャンネルとの競合を避けるため PWM CH 2, 3 を使用
フォーマット: JPEG (QVGA: 320×240)
PSRAM にフレームバッファを格納(ダブルバッファ)
MJPEG over HTTP によるリアルタイムストリーミング
上下反転設定済み(搭載向き対応)
スライダーによる速度調整
前進 / 停止 / 後退 ボタン
カメラ映像とコントロールパネルを一画面に表示
[env:seeed_xiao_esp32s3]
platform = espressif32
board = seeed_xiao_esp32s3
framework = arduino
monitor_speed = 115200
board_build.arduino.memory_type = qio_opi
board_build.f_flash = 80000000L
board_build.flash_mode = qio
build_flags = -DBOARD_HAS_PSRAM
カメラ動作に PSRAM が必須のため、-DBOARD_HAS_PSRAM フラグと QIO フラッシュ設定が必要です。
PlatformIO でビルド&書き込み
デバイスのWi-Fi AP(Plarail_DrYellow / 12345678)に接続
ブラウザで http://192.168.4.1 を開く
カメラ映像を確認しながらモーターを操作
[ブラウザ]
|
|-- HTTP GET / -----------> Port 80 (Core 1) --> HTMLページ返却
|-- HTTP GET /action?go=fwd -> Port 80 (Core 1) --> モーター制御
|-- HTTP GET /stream ------> Port 81 (Core 0) --> MJPEG映像配信
|
[カメラ (OV2640)]
[モーター (PWM)]