知り合いの方より、獣害対策のために、IoTシステムで監視カメラが作れないかと相談されました。
私はこれまで、カメラを扱ったことはないのですが、一度試してみようと思い、「M5Camera」というデバイスを購入しました。
M5CameraはM5Stack社の製品で、ESP32とイメージセンサOV2640を搭載したデバイスです。
価格が1815円(税込、2020年4月現在)と大変安価でありながら、これ単体でそのままWebカメラとして使えます。
動作確認
そんな訳で、早速試してみます。
本体についている説明書(メモ?)によれば、電源を入れるだけでWebカメラとして使えるようです。
- ACアダプターを使い、USBポートをコンセントにつなぎます。
- スマホでWi-Fi設定メニューを開くと、「M5FishEyeCam」というネットワークが現れるので、これを選択します(説明書では名前が「M5CAM_XXXX」と書かれていますが、実際にはなぜか「M5FishEyeCam」という名前になっていました)。
- ブラウザで「192.168.4.1」にアクセスすると、動画が表示されます。
この状態では、M5Camera自身がWi-Fiルータになっています。
サンプルスケッチで動作確認
次に、Arduino IDEのサンプルスケッチを使って、外部ルータ経由で動画を表示させてみます。
- PCにM5Cameraをつなぎ、Arduino IDEを起動します。
- 「ツール」>「ボード」>「ESP32 Wrover Module」を選択します。
- 以下のように設定します。
- 「ファイル」>「スケッチ例」>「ESP32」>「Camera」>「CameraWebServer」を開き、以下を変更します。
// Select camera model
//#define CAMERA_MODEL_WROVER_KIT // 変更
//#define CAMERA_MODEL_ESP_EYE
#define CAMERA_MODEL_M5STACK_PSRAM // 変更
//#define CAMERA_MODEL_M5STACK_WIDE
//#define CAMERA_MODEL_AI_THINKER
const char* ssid = "*********"; // 変更
const char* password = "*********"; // 変更
- なお、M5Cameraには「モデルA」と「モデルB」があります。今回購入したものは「モデルB」だったので、「camera_pins.h」で、以下を変更します。
#elif defined(CAMERA_MODEL_M5STACK_PSRAM)
#define PWDN_GPIO_NUM -1
#define RESET_GPIO_NUM 15
#define XCLK_GPIO_NUM 27
#define SIOD_GPIO_NUM 22 // 変更
#define SIOC_GPIO_NUM 23
#define Y9_GPIO_NUM 19
#define Y8_GPIO_NUM 36
#define Y7_GPIO_NUM 18
#define Y6_GPIO_NUM 39
#define Y5_GPIO_NUM 5
#define Y4_GPIO_NUM 34
#define Y3_GPIO_NUM 35
#define Y2_GPIO_NUM 32
#define VSYNC_GPIO_NUM 25 // 変更
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21
- これでコンパイルし、M5Cameraに書き込むと、シリアルモニタにローカルIPアドレスが表示されます。今回は「192.168.11.44」と表示されたので、ブラウザで「192.168.11.44」にアクセスします。
- カメラの設定画面が現れるので、所望の設定を行い、画面下の「Start Stream」をクリックすると、動画が表示されます。
とても簡単にWebカメラを動かすことができました。
Ardiono IDEでプログラミングできるので、センサなどと組み合わせて、何か面白いものが作れそうです。
画像処理は難しそうで、すぐには何もできなさそうですが、これから少し勉強してみようと思います。