概要
前回で下準備が済んだので今回は製作です。
回路図と実装
- 前回の回路にプッシュスイッチをGPIO2に追加しています。機能は後ほど説明します。
- ピン配置
ピン 用途 GPIO13 サーボモータ(上下用) GPIO15 サーボモータ(左右用) GPIO14 人感センサ GPIO02 モードスイッチ GPIO04 フラッシュ(内蔵)
以下が組み上がり。
- 100円ショップで買った瓶に砂を入れ土台にしています。
- 瓶の蓋にSG90のステーションをねじ止めして固定
- ステーションの先端にESP32-CAMを固定
- カメラの横に人感センサを配置
- 電源はDC 5V 2A を供給。(3.3VはESP32-CAMが作成)
- 追加したモードスイッチはESP32-CAMの裏に配置しました。
コンパイル前の設定
ファイルの修正
このファイルをダウンロードし解凍して下さい。ー>"ESP32_net_camera.zip"
解凍後ファイルの構成は以下の様になります。この中で、 "wifi_config.txt" と "ESP32_net_camera.ino" を コンパイル前に修正します。
- "wifi_config.txt"
- このファイルをエディターで開くと下記の様になっています。
- 6個のパラメタをカンマ "," で区切った文字列。各パラメタに下記の値をセットします。
パラメタ 説明 SSID ルータのSSID PASSWORD ルータのパスワード aaa Gatewayアドレス3番めの値 例:192.168.aaa.bbb bbb Gatewayアドレス4番めの値 例:192.168.aaa.bbb xxx カメラアドレス4番めの値 例:192.168.aaa.xxx mail_addr メールの送り先アドレス - Gatewayアドレスはルータの機種で違いますが、192.168.aaa.bbbでカバーできるはずです。
- カメラのハンドリングを考えてIPアドレスを固定します。IPアドレスは "192.168.aaa.xxx" になります。
- プログラムで改行を目印にこの文字列を読み込んでいます。必ず改行を入れてファイルを保存して下さい。
SSID,PASSWORD,aaa,bbb,xxx,mail_addr
- "ESP32_net_camera.ino"
- 78行:#define AUTHOR_EMAIL "xxxxxxxx@gmail.com" //Gmail 貴方のメールアドレス
- ここに自分のGメールアドレスを指定
- 79行:#define AUTHOR_PASSWORD "yyyyyyyyyyyyyyyy" //16桁のアプリパスワード
- ここにGmailで取得した16桁のアプリパスワードを指定
- 211行:WiFi.softAP("ESP32CAM-SETUP", "abcdefg"); // SSID & Passowrd
- ESP32-CAMがAPとして立ち上がる時のSSIDとPassowrdを指定します
- SSID:"ESP32CAM-SETUP" と設定していますが、必要に応じて変更下さい。
- Passowrd:"abcdefg" と設定していますが、必要に応じて変更下さい。
ESP32_net_camera.ino arduino// --- Gmail設定 --- #define SMTP_HOST "smtp.gmail.com" #define SMTP_PORT 465 /* The sign in credentials */ #define AUTHOR_EMAIL "xxxxxxxx@gmail.com" //Gmail 貴方のメールアドレス #define AUTHOR_PASSWORD "yyyyyyyyyyyyyyyy" //16桁のアプリパスワード /* Recipient's email*/ String recipient_email;ESP32_net_camera.ino arduinoif(digitalRead(mode_pin)){ Serial.println("Starting in AP Mode..."); WiFi.softAP("ESP32CAM-SETUP", "abcdefg"); // SSID & Passowrd Serial.print("AP IP Address: "); Serial.println(WiFi.softAPIP()); httpd_handle_t wifi_server = NULL; - 78行:#define AUTHOR_EMAIL "xxxxxxxx@gmail.com" //Gmail 貴方のメールアドレス
├── ESP32_net_camera.ino
├── data
│ ├── ESP32_net_camera.html
│ ├── file_list.html
│ ├── photo
│ ├── recipient.html
│ ├── take_preview.html
│ └── wifi_config.txt
└── regist.h
Arduino IDEの設定
- ボード: ”AI Thinker ESP32-CAM
- Partition Scheme:”No OTA(2MB APP/ 2MB SPIFFS)
これでコンパイル実行出来ます。
使い方の説明
スケッチをコンパイル実行後、固定したアドレスにブラウザでアクセスすると下記の画面になります。 これが今回のスケッチのホーム画面です。 ESP32にとってStreamingはかなり負担が大きくStreaming中は他の処理を行う事が困難だった為、 管理をStreaming中とその他い分けています。
Streaming停止時
- 機能するボタン
- Startボタン:これを押すと中央の窓でStreamingが開始します。
- Fileボタン:これを押すとFile Manegerのポップアップ画面が表示されます
- カメラに保存されているファイルを管理します。
- Read:選択されたファイルを読み込んで表示します。
- Download:選択したファイルをPCにダウンロードします。
- Delete:選択したファイルを削除します。
- ALLのDownloadとDelete:ファイルすべてをダウンロードまたは削除します。(ちょっと調子が悪い)
- カメラに保存されているファイルを管理します。
- Recipient:メール宛先変更。
- 人感センサが動体を感知した時にメールと写真を送信します。
- ここで宛先を変更出来ます。
- フラッシュ用チェックボックス
- チェックでフラッシュオンです。
- メール用チェックボックス
- 動体検知のオンオフ
- STREAM RESOLUTION
- ここで画面の解像度を設定出来ます
- 無効なボタン
- "Stop", "Take" キーパッドとその表示
Streaming時
"Start"ボタンを押すとStreamingが始まります
- 機能するボタン
- Stop:Streamingを停止して最初の画面に戻る
- Take:Captured Previewのポップアップが表示。写真撮影と管理
- Save:写真をカメラに保存
- 写真の容量は、解像度が800x600で一枚10数mB
- SPISTFFとして2mB確保しているので、100数十枚保存出来る。
- 今回はMAX30枚とし、超えた場合は古い物から順に新しい物に書き変わる。
- "ESP32_net_camera.ino" 37行:"define photo_max 30" でMAX枚数を規定しています。
- ここの値を変えるとMAX枚数を変更出来ます。
- Download:写真をPCにダウンロードする。
- Save:写真をカメラに保存
- カメラ移動パッド:カメラを移動させる
- カメラの移動はStreaming中のみ。
- U:Up D:Down L:Left R:Right H:Hom に移動
- 移動に合わせてカメラ位置が U/D, L/R に表示される
- "Frash", "STREAM RESOLUTION" はStreaming時でも機能します。
- 無効なボタン
- "Mail", "File", "Recipient" はStreaming中は無効
ESP32にとってStreamingは負担が大きいので必要時以外は停止するよう設定しています。
- 開始
- HPにアクセスし "Start" ボタンが押された時。それ以外は停止しています。
- 停止
- ”Stop"ボタンを押す、ブラウザを閉じる、規定時間(4分)になる の3パターン
- 規定時間
- "ESP32_net_camera.html" 293行:"timerId = setTimeout(stream_stop, 240000);" で設定
- setTimeout()の第2引数で時間を設定します。(時間の単位はmsec)
- またこの行をコメントにすると停止すること無くStreamingを続けます。
モード設定ボタン
このカメラを幾つか作って家の中に配置しそれらをPCで一括管理したいと思っています。 これらのカメラはIPアドレスを変えてコンパイルする必要が有りますが、コンパイル後にWiFi関係を セット出来たらその必要がなくなります。それを実現するためにこのボタンを使います。
このボタンを押しながらカメラの電源を入れると ESP32-CAM は AP モードで立ち上がります。 セットしたSSID(今回は "ESP32CAM-SETUP")をスマホで探し、パスワード(今回は "abcdefg")を入力すると、下記の画面が表示されます。
- 必要事項を入力後 ”Register & Restart" ボタンを押すと値がセットされカメラがRestart。
- 注意
- "wifi_config.txt" が無かったり、内容が間違っていたりすると機能しません。
- 一度STAモードで正しく立ち上がる事を確認してからこの機能を使用して下さい。
これでコンパイルせずに設定を変更出来ます。
終わりに
安価に期待以上の性能の監視カメラが出来ました。今後は
- カメラを複数にしてPCでそれらを一括管理
- 管理しているPCにTailscaleを使って外部からアクセス。=>カメラに外部からアクセス出来る
を目指します。今回はここまで。