カメラモジュール(ソフトウェア編)

14Feb - by Joe-90 - 0 - In HOゲージ制御

ハードウェア:Unit Cam Wi-Fi Camera (OV2640)
メーカー:M5STACK社
ESP32-WROOM-32E、OV2640を搭載したカメラモジュール

https://docs.m5stack.com/en/unit/unit_cam

https://docs.m5stack.com/en/unit/unit_cam

統合開発環境

統合開発環境:Arduino IDE
https://www.arduino.cc/en/software

Arduinoのボード書き込み機能

既存のボードの書き込みの設定を知る方法がArduinoにはある。
ボードをデータとして配布している。
これをインストールすれば、ボードと押すだけで、ボードに合わせた書き込みの通信をしてくれる。

環境設定

ESP-32のボードをインストール

ESP32 by Espressif Systemsをインストールする。

Arduino IDE バージョン 1.6.4 以降、Arduino では、ボード マネージャーを使用してサードパーティのプラットフォーム パッケージをインストールできます。 Windows、macOS、および Linux で利用できるパッケージがあります。

Arduino-ESP32 Online Documentation
https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html

ボード管理URL

ボード管理URLを入手する。

安定版リリース リンク:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

これをArduinoに追加して、ボードマネージャーから、以下を、インストールした。

ESP32 by Espressif Systems(2.0.6)

プログラミング

ボードを選択
ツール→ボード(追加したボードマネージャーのリンク)
→AI Thinker ESP32-CAM(UnitCAMのボードが無かったのでとりあえず試してみる)
ツール→シリアルポート→con3

スケッチ例

Arduinodでは、機能に応じたプログラム例が用意されている。

今回は、カメラwebサーバーのスケッチを使う。

ファイル→スケッチ例→ESP32→Camera→CameraWebServer

プログラムを開いて、自分の環境に合わせてdifineとWifiの設定を変更する

define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM(今回のモジュール)を使用する。

SSIDとパスワードを編集し、コンパイル。

エラー:
最大1310720バイトのフラッシュメモリのうち、スケッチが1495669バイト(114%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が71360バイト(21%)を使っていて、ローカル変数で256320バイト使うことができます。
スケッチが大きすぎます。
参考:
デフォルトでは、”Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)”という設定になっています。ESP32-CAMでカメラを動作させるスケッチはかなり重いので、OTA(Over-The-Air。無線ネットワークでファームウェアを更新できる機能の事)を無効にします。”Huge APP (3MB No OTA/1MB SPIFFS)”を選択して、アプリケーション領域のFlash容量に余裕を持たせれば問題ないはずです。
https://shigeru-orikura.com/2020/05/09/esp32-cam_setting/

修正し、書き込み

エラー:
A fatal error occurred: Failed to connect to ESP32: No serial data received.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Failed uploading: uploading error: exit status 2

解決策:
G0ピンはGNDに接続されているか?短絡後、電源ピンを一度抜き、再度さす。

書き込み完了

シリアルモニタ

シリアルモニタを起動
回路の短絡を解除し、ENピンをGNDに接続し他のち離す。
115200baudに設定

接続されない。

解決策:

公式のM5Stackのボード管理URLを見つけられていなかった。
Arduino IDE environment – TimerCAM/UnitCAM
http://docs.m5stack.com/ja/quick_start/timer_cam/arduino

M5Stack ボード管理 URL
https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json

ボード検索欄にモジュール名を入力すれば、インストールが提案される(便利)
"現在選択されているボード"UnitCAM"用にコア"M5Stack [v 2.0.6]"をインストールする必要があります。今すぐインストールしますか?"

もしくはボード→ボードマネージャーからM5Stack by M5Stack offical(2.0.6)をインストール

インストールに結構時間がかかった。これが一番長かった。
ボードを選択
    ツール→ボード→M5Stack-Unit-CAM
    ツール→ポート→con3

#define CAMERA_MODEL_M5STACK_UNITCAM // No PSRAM

ライブラリマネージャーからArduino_ESP32_OTA by Arduino(0.1.0)をインストール

書き込み実行

.............
WiFi connected
Camera Ready! Use 'http://192.168.1.16' to connect

http://192.168.1.16にアクセス。

問題:動画の遅延がひどい

解決策:

ESP32 camera deviceでのWifi問題まとめ
XCLK(master clock)を20 → 8MHz等にする
https://sohtamei.github.io/docs/ESP32CameraIssue.html