知り合いの方より、獣害対策のために、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シリーズの記事にも興味のある方は「さとやまノート」をご覧ください。