M5Cameraを動かしてみる

知り合いの方より、獣害対策のために、IoTシステムで監視カメラが作れないかと相談されました。

私はこれまで、カメラを扱ったことはないのですが、一度試してみようと思い、「M5Camera」というデバイスを購入しました。

M5CameraはM5Stack社の製品で、ESP32とイメージセンサOV2640を搭載したデバイスです。
価格が1815円(税込、2019年11月現在)と大変安価でありながら、これ単体でそのまま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でプログラミングできるので、センサなどと組み合わせて、何か面白いものが作れそうです。
画像処理は難しそうで、すぐには何もできなさそうですが、これから少し勉強してみようと思います。


このサイトで書いている、M5Stackシリーズ(M5Stack、M5StickCなど)に関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。

他のM5Stackシリーズの記事にも興味のある方は「さとやまノート」をご覧ください。