先日、プラレールにモータードライバを取り付け、プラレールのスピードを制御できるようにしました(記事は こちら)。
また、ESP32-CAM用のサンプルスケッチ「CameraWebServer」を編集し、スマホのWebブラウザで「Unit Cam Wi-Fiカメラ」の撮影した画像をストリーミング再生しながら、外付けの電子部品を制御できるようにしました(記事は こちら)。
今回はいよいよ、これらふたつを組み合わせます。
プラレールにモータードライバと「Unit Cam Wi-Fiカメラ」を取り付け、スマホのWebブラウザで画像をストリーミング再生しながら、プラレールのスピードを制御できるようにしてみたいと思います。
最初に、Webページのデザインを変更します。
今回は「阪急電車」のプラレールを改造するので、Webページのデザインも阪急カラーにしてみました。

今回、改造するプラレールはこちらです。

電車の先頭にカメラを取り付けたいのですが、スペースが足りないので、シャーシ(車体)の先頭の方を切り取りました。

切り取った場所にL字のパーツを取り付け、そこに両面テープと結束バンドで「Unit Cam Wi-Fiカメラ」を取り付けました。

「Unit Cam Wi-Fiカメラ」からGROVEケーブルを引き出します。ケーブルはシャーシ(車体)の下をとおし、シャーシの中ほどに開けた穴から内側に引き込みます。

「GROVEプロトシールド」を使って、モータードライバに各信号をつなぐことにします。

こんな感じでつなぎます。

電池は2両目に格納します。
2両目にはスイッチも取り付けておきます。

ボディ(本体)の中に電池ボックスを入れ、シャーシ(車体)を取り付けます。配線を外に引き出しておきます。

2両目から引き出した配線を先頭車両の中にある基板につなぎ、ボディ(本体)をかぶせたら完成です。なお、ボディ前面のカメラがある場所には穴を開けておきます。


早速動かしてみます。
レールの上にプラレールを乗せ、スイッチをONにします。
スマホのWebブラウザで「Unit Cam Wi-Fiカメラ」にアクセスします。アクセスするアドレスは、「Unit Cam Wi-Fiカメラ」にスケッチを書き込んだときにシリアルモニタに表示されます。
ボタン操作で、ストリーミング再生を開始したり、プラレールのスピードを制御することができます。
なかなかいい感じに動きました。
ただ、つくるのがかなり面倒だった割に、おもちゃとしてはやや単調で、子供に遊ばせてもすぐに飽きてしまいそうです。
2023/3/29追記
Wi-Fiルータがない場所でも遊べるように、「CameraWebServer.ino」を少しだけ変更し、「Unit Cam Wi-Fiカメラ」自身がWi-Fiアクセスポイントになるようにしました。
: 省略
#include "camera_pins.h"
const char* ssid = "ESP32-AP";
const char* password = "12345678";
void startCameraServer();
void setup() {
: 省略
#if defined(CAMERA_MODEL_M5STACK_WIDE) || defined(CAMERA_MODEL_M5STACK_ESP32CAM)
s->set_vflip(s, 1);
s->set_hmirror(s, 1);
#endif
WiFi.softAP(ssid, password);
delay(100);
IPAddress ip = WiFi.softAPIP();
Serial.println("ESP32 softAP mode");
Serial.print("SSID:");
Serial.println(ssid);
startCameraServer();
Serial.print("Camera Ready! Use 'http://");
Serial.print(ip);
Serial.println("' to connect");
}
: 省略
プラレール(Unit Cam Wi-Fiカメラ)のスイッチをONにしてから、スマホの「設定」でWi-Fi接続先を「ESP32-AP」に変更します。パスワードは「12345678」です。
その後、Webブラウザで「192.168.4.1」にアクセスすると、先ほどと同じようにスマホでプラレールを操作できます。
これで、このプラレールを他の場所に持っていっても遊べるようになりました。
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。