2021/07/11
今回もESP32ネタです。以前購入したESP32-CAMの設定をしていこうと思います!
やること
今回やることは、「ESP32-CAM」で調べたやり方を元にESP32-CAMを動かしてみるだけの記事です。
具体的には、ESP32-CAMを家にある無線LANルーターに接続して、作業用PCのwebブラウザからカメラの情報を表示させるという内容です。
他の方がやった事をまねるだけなのでサクッと終わるかと思ったのですが所々つまってしまったのでちょっとまとめてみました。
注意点
今回使うESP32-CAMは技適マークの印刷がされていない技適未取得品です。今回のように短期間の実験を目的とする場合は、総務省のホームページから技適未取得機器を用いた実験等の特例制度の手続(届出)を行う事で、特例を受ける事ができます。
今後、技適マーク付きのESP32-CAMが発売される可能性があるので、もしそちらが入手出来たら全力で遊ぼうと思います。
Arduino IDEのインストール
ESP32-CAMにファームウェアを書き込むため、作業用のPCに「Arduino IDE」をインストールする必要があります。
私のPCはWindows10なので、”Windows app”と書かれているものを選択します。
次の画面で”JUST DOWNLOAD”をクリックします。
Microsoft Storeのサイトに移動するため、右上にある「入手」ボタンをクリックします。
「インストール」ボタンを押下して、インストールを開始します。※今回の環境はWindows10Homeです。OSによって手順が変わる可能性があります。
インストールが完了すると、画面左上の表記が「この商品はインストール済みです。」に変わるため、画面右にある「起動」ボタンをクリックします。
問題が無ければArduino IDEが起動するはずです。
Arduino IDEの環境設定
Arduino IDEでESP32への書き込みを行う場合は、環境設定を行う必要があります。
画面上部にあるバーの中から「環境設定」を選択します。
環境設定ウィンドウが表示されます。「追加のボードマネージャーのURL:」の欄に、以下の値を入力します。
1 |
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json |
こんな感じです。入力が完了したら”OK”ボタンをクリックして、環境設定ウィンドウを閉じます。
次は、ボードマネージャーにESP32の情報を追加します。画面上部にあるバーの中から「ツール」→「ボード:”Arduiono Uno”」→「ボードマネージャー」の順番で選択していきます。
「ボードマネージャー」のウィンドウを開いたら、検索欄に”esp32″と入力し、esp32のパッケージを検索します。パッケージが見つかったらクリックしてインストールします。
インストールが完了したら「閉じる」ボタンをクリックしてボードマネージャーのウィンドウを閉じます。
ESP32のボード情報が追加されている事を確認します。画面上部にあるバーの中から「ツール」→「ボード:”Arduiono Uno”」の順番で選択し、ボード情報の一覧を確認すると、”ESP32 Wrover Module”が追加されているはずなので、それを選択します。
スケッチの修正
サンプルスケッチを開いてESP32-CAMを動かせるようにしていきます!
ESP32のCAMERAサンプルスケッチが既に用意されているので、そちらをありがたく使わせて頂こうと思います。「ファイル」→「スケッチ例」→”ESP32″→”Camera”→”CameraWebServer”の順番で開く事ができます。開くと、別ウィンドウでサンプルスケッチが表示されます。
では、家の無線LANルーターに接続させるために、スケッチの内容を書き換えて行こうと思います。書き換えるのは”CameraWebServer”スケッチの内容です。
と言っても書き換えるのは合計4か所だけで良いらしいです。ライブラリの有効無効を切り替えて、無線LANのルーターのSSIDとパスワードを入れるだけです!
ArduinoIDEでスケッチをコンパイル
ではコンパイルしていこうと思います!
ArduinoIDEで「検証」ボタンをクリックすると、スケッチのコンパイルが行われるのですが、エラーが発生してしまいました。
1 2 3 4 5 6 7 8 9 10 11 |
Arduino:1.8.12 (Windows Store 1.8.33.0) (Windows 10), ボード:"ESP32 Wrover Module, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), QIO, 80MHz, 921600, None" 最大1310720バイトのフラッシュメモリのうち、スケッチが2100663バイト(160%)を使っています。 text section exceeds available space in board最大327680バイトのRAMのうち、グローバル変数が53552バイト(16%)を使っていて、ローカル変数で274128バイト使うことができます。 スケッチが大きすぎます。http://www.arduino.cc/en/Guide/Troubleshooting#size には、小さくするコツが書いてあります。 ボードESP32 Wrover Moduleに対するコンパイル時にエラーが発生しました。 「ファイル」メニューの「環境設定」から 「より詳細な情報を表示する:コンパイル」を有効にすると より詳しい情報が表示されます。 |
こんなエラーメッセージが表示されました。何ぞや?と思ったら、設定を間違えていただけでした(笑)。
デフォルトでは、”Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)”という設定になっています。ESP32-CAMでカメラを動作させるスケッチはかなり重いので、OTA(Over-The-Air。無線ネットワークでファームウェアを更新できる機能の事)を無効にします。”Huge APP (3MB No OTA/1MB SPIFFS)”を選択して、アプリケーション領域のFlash容量に余裕を持たせれば問題ないはずです。
「検証」ボタンをクリックしたら、問題なくコンパイルできるようになりました!これで、ESP32-CAMのソフトウェア環境は整ったはずです。
ESP32-CAMへの書き込み
次はESP32-CAMにファームウェアを書き込んでいきます!
※今回書き込みに使う「USB-TTLシリアルコンソールのUSB変換COMケーブル」
こちら購入当時は312円でした。安くて使えるという評価から買いましたが、ドライバの導入で少し詰まりました。
PL2303ドライバをインストールするも書き込みに失敗する
Windows10の場合、ドライバは「PL2303_64bit_Installer.exe」を入れれば問題ないはずなのですが、ArduinoIDEの「マイコンボードに書き込む」ボタンをクリックしてもエラーが表示されて、書き込みができませんでした。
1 2 3 4 5 6 7 8 9 10 11 12 |
Traceback (most recent call last): Serial port COM3 File "esptool.py", line 2959, in <module> File "esptool.py", line 2952, in _main File "esptool.py", line 2652, in main File "esptool.py", line 222, in __init__ File "site-packages\serial\__init__.py", line 88, in serial_for_url File "site-packages\serial\serialwin32.py", line 62, in open serial.serialutil.SerialException: could not open port 'COM3': WindowsError(2, '\x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83t\x83@\x83C\x83\x8b\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\xe8\x82\xdc\x82\xb9\x82\xf1\x81B') Failed to execute script esptool シリアルポート「Failed to execute script esptool 」が選択されていますが、そのポートは存在しないか、ボードが接続されていません。 |
結論から言うと、USBコネクタにUSB-TTLシリアルコンソールのUSB変換ケーブルを挿しっぱなしで、ドライバをインストールした事が原因でした。なので、「PL2303_64bit_Installer.exe」をインストールされる方は、ケーブルを抜いた状態でインストールしてください。
問題なく変換ケーブルのドライバが認識されていれば、「ツール」→「シリアルポート」→「con*」(*の数値は環境によって変わります)で表示されるはずです。
書き込む時の配線
配線はこのようになっていれば大丈夫です。
ちょっとわかり辛いかも知れませんが、配線図も描いてみました。
書き込み時は、”GND”ピンと”IO0″ピンをジャンパでショートさせます。
書き込みを行う際は、ArduinoIDEの「マイコンボードに書き込む」ボタンをクリックするだけです。
使ってみた
という事で動作させてみようと思います!
動作させるには、先ほど取り付けていたジャンパを外して通常起動状態にする必要があります。また、ESP32-CAMを起動すると、起動中のログをシリアルに流してくれるので、そちらも表示させてみようと思います。
まず、Arduinoの「シリアルモニタ」を表示させます。シリアルモニタは「ツール」→「シリアルモニタ」の順番で表示させることが出来ます。
シリアルモニタが起動したら、右下に表示されるボーレートの値を”115200 bps”に変更します。これを行わないと、シリアル通信の周波数が合わないため、文字化けした状態で表示されてしまいます。
シリアルモニタ上に接続先のローカルIPアドレスが表示されるので、そのIPアドレスをwebブラウザで開いてみようと思います。
今回は”192.168.10.28″だったので、それをwebブラウザのURL入力領域に入力します。
このような画面が表示されました。この画面が表示されれば、ブラウザからESP32-CAMへの接続は成功しているはずです。画面左下にある”Start Stream”をクリックするとカメラが起動します。
“Start Stream”をクリックすると、シリアルモニタの表示が流れて”MJPG: ****B **ms (**.*fps), AVG: **ms (**.*fps), 0+0+0+0=0 0″みたいな表示がズラーっと流れます。
実際にカメラを表示された所はこんな感じです。それっぽく映ってますね!良かった!
ブラウザで表示した左側には、カメラの各種設定ができるボタンの領域があります。これで、カメラの反転やコントラスト、解像度、画質などの細かな設定ができるようです。
全体図はこんな感じです。多分固定IPアドレスにしたりとか色々できると思うのですが、やり方はわかっていません(笑)。あと、Raspberry Pi Zero HWとカメラの組み合わせの時もそうでしたが、カメラ本体が結構熱を持っていました。
動画のレスポンスはVGA(640×480)でも結構早いです。画質はそんなに良くないように見えるかも知れませんが、実用に耐えるくらいに動いてくれます。購入時の金額が1,200円くらい、買う場所によっては500円台だと考えると異常ですw。
やはり残念なのが、手持ちのESP32-CAMが技適未取得という事です。今後、技適取得済のESP32-CAMが出てくれる事を待つか、似たような技適取得済の別商品を購入してラジコンとか作ってみたいです。
さいごに
という訳で、今回はESP32-CAMの設定についての記事でした!
最近マークⅣの記事を書いている時に、思い出してまとめてみたのですが、思いのほか記事が長くなってしまいました。
多分間違い等があるかも知れませんが、その際はコメント頂けるとありがたいです。
今回はこれで終わりです!また何かあれば記事を更新しようと思います!ではでは~
コメント
ESP32-CAMを購入し、丁寧に説明されている貴サイトを参考に動作確認をさせていただきました。
技適については”技適未取得機器を用いた実験等の特例制度”を利用し、ネットで届け出を済ませて使用しています。
by koyama 2021年4月2日 11:58 AM
koyamaさん
コメント頂きありがとうございます!
※特例の記載がなかった為、「技適未取得機器を用いた実験等の特例制度」について記載を追加しました。
by shigeru-orikura 2021年4月6日 1:37 AM
うまく作動せず困ってます。超初心者ながらあと一歩みたいです。
シリアルモニターに出た Camera Redy! Use'http://192.168.179.7' to connect 後(次のMJPEG:****.B **msの行は出ません)、ブラウザーアドレス欄に192.168.179.7を入れても、WiFi通信モニターしてもwho has 192.168.179.7?で止まっており、ブラウザーが起動してくれません。もしかするとスケッチのCamera_index.hのgz[]をhtmlに変換したあとのhtmlのソースをどこかに記入するのでしょうか?
ご教授いただけると幸いです。
by Imai 2022年1月25日 1:38 PM
コメント頂いていたのに気が付いていませんでした。。ごめんなさい。。。
もしかしたら、既に問題解決されているかも知れませんが、分かる範囲で回答させて頂きますね。
> シリアルモニターに出た Camera Redy! Use’http://192.168.179.7′ to connect 後(次のMJPEG:****.B **msの行は出ません)、
すみません。手順が少し違っていました。webブラウザに表示された"Start Stream"ボタンを押す事で、MJPEG:****.B **msの行の表示がされるようです(記事の方も修正しました)。
> もしかするとスケッチのCamera_index.hのgz[]をhtmlに変換したあとのhtmlのソースをどこかに記入するのでしょうか?
Camera_index.hは特に修正していませんでした。
> ブラウザーアドレス欄に192.168.179.7を入れても、WiFi通信モニターしてもwho has 192.168.179.7?で止まっており、ブラウザーが起動してくれません。
Camera Redy! Use’http://192.168.179.7′ to connectが表示されているという事は、ESP32-CAMとWi-Fiルーターの接続は成功しているように思えます。
もしかしたら、webブラウザを起動している端末(PCかスマホですかね?)が、ESP32-CAMやWi-Fiルーターと別のネットワークに接続されている可能性はありませんか?
例えばPCで確認している場合、別のルーターに接続されていたり。または、スマホで確認されていた場合、Wi-Fi接続になっていなかったり、等が考えられそうなので、そちらを確認して頂けると何かわかるかも知れません。
by shigeru-orikura 2022年2月17日 11:36 PM
shigeru-orikura様へ
丁寧なご回答、誠にありがとうございました。原因は書くのも恥ずかしいバカな勘違いでした。
私が使用した基盤は某S社販売の「OV2640搭載 Unit Cam Wi-Fi Camera」で、「ESP32-CAM」ではありませんでした。
貴重なお時間を浪費させてしまい申し訳ありませんでした。
by Imai 2022年2月20日 10:43 AM
そうだったのですね!別の基板だったという事で了解致しました(`・ω・´)ゞ
私はこの「V2640搭載 Unit Cam Wi-Fi Camera」の存在を知りませんでした。
技適も取っていてかなり良さげなモジュールだったので、気になって私も買ってみました(笑)。
まだ、物は届いていませんが、おそらく以下の設定を行うだけで、本ブログでやっていた事と同等の事が出来るようになると思います。
・本ブログの項目「スケッチの修正」の”CameraWebServer”の無線LANのルーターのSSIDやパスワードを入れている所で、以下の修正を行う。
//#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 // ★コメントアウトする(初期状態と同じ)
上記の設定で、"camera_pins.h"ライブラリの設定が切り替わり、ピン配置が「ESP32-CAM」から「V2640搭載 Unit Cam Wi-Fi Camera」(ESP32-WROOM-32E)向けの物に変わるみたいです。
間違っていたらゴメンナサイ。物が届いたら私の方でも動作検証してみます!
by shigeru-orikura 2022年2月23日 5:20 AM
(以下独り言です)
本件、物が届いて確認してみた所、上にコメントした方法で問題無く動作できる事が確認できました(^^
やり方は別途記事にまとめようと思います。
by shigeru-orikura 2022年2月25日 11:26 PM
教えてください。 コンパイルでエラーが出ます
ーーーーーーーーーーーーー
Arduino:1.8.13 (Windows 10), ボード:"ESP32 Wrover Module, Huge APP (3MB No OTA/1MB SPIFFS), QIO, 80MHz, 921600, None, Disabled"
・
・
・
"@C:\\Users\\ryzen\\AppData\\Local\\Temp\\arduino_build_310156/build_opt.h" "@C:\\Users\\ryzen\\AppData\\Local\\Temp\\arduino_build_310156/file_opts" "C:\\Users\\ryzen\\AppData\\Local\\Temp\\arduino_build_310156\\sketch\\CameraWebServer.ino.cpp" -o "C:\\Users\\ryzen\\AppData\\Local\\Temp\\arduino_build_310156\\preproc\\ctags_target_for_gcc_minus_e.cpp" -DARDUINO_LIB_DISCOVERY_PHASE
xtensa-esp32-elf-g++: error: unrecognized command line option '-std=gnu++2b'; did you mean '-std=gnu++2a'?
exit status 1
ボードESP32 Wrover Moduleに対するコンパイル時にエラーが発生しました。
ーーーーーーーーーーーーーー
最後の方だけ、添付しました。
他のサンプルプログラムでも同じエラーです。
意味が分かりません。
アドバイスお願いいたします。
。
by 六楽内 彰次(ムラウチアキツグ) 2024年2月13日 9:15 PM