Aliexpressで昨年8月購入した5ドル+送料の激安 ESP32-CAMは放置したまま、冬休み期間テストしてみることに。
配線
ESP32-CAM自体シリアルーUSB通信機能がないので、プログラムを書き込んだりするためにはUSB/TTLシリアルコンバーターが必要になる。300円でAmazonから購入した、Raspberry Pi ラズベリーパイ用の USB-TTLシリアルコンソールのUSB変換COMケーブルモジュールのケーブル を使用した。黒い台はDonkeyCar 車台の不良品を利用。黄色テープも地面にDonkeyCarのトラックを作る際用意したもの。
配線部分を拡大した写真です。青い線は、書き込み時には、ESP32-CAMのIO0とGNDをショートして行う。
USB-TTL | ESP32-CAM |
---|---|
TXD ( 緑 ) | UOR |
RXD ( 白 ) | UOT |
– | ( IO0 – GND ) |
5V | 5V |
GND | GND |
プログラム
ボードマネージャーを使用してESP32ボードを追加する必要があります。
これを完了すると、Arduino IDEボードマネージャーにESP32ボードのリストが表示されます。このリストからA-Thinker ESP32-CAMボードを選択します。
使用するサンプルスケッチは、CameraWebServerスケッチです。次のようにロードできます。
- Arduino IDEを開きます
- トップメニューバーの[ファイル ]メニュー項目をクリックします。
- 下にスクロールして、[ 例 ]をクリックします。サブメニューが開きます。
- サブメニューを下にスクロールして、Example for A-Thinker ESP32-CAMを探します。
- この下には、ESP32のエントリが表示されます。それをクリックすると、別のサブメニューが開きます。
- このサブメニューからカメラを選択します。
- CameraWebServerを選択します
このスケッチはESPO32-CAMをフル機能のオンラインカメラに変え、顔検出機能と豊富なコントロールを完備しています。これは、ESP32-CAM機能の非常に印象的なデモです。
スケッチを使用する前に、ネットワークに合わせてスケッチを修正し、正しいESP32モジュールを選択する必要があります。
- 「カメラモデルの選択」という行の下で、ボードの正しいエントリを選択する必要があります。私が使用したもの(そして最も人気のあるもの)はCAMERA_MODEL_AI_THINKERです
- その下に、SSIDの行が表示されます。ここにネットワークのSSIDを入力します。
- SSIDの下の行にネットワークアクセスパスワードを入力します。
ESP32-CAMは2.4 GHz WiFiネットワークでのみ機能することに注意してください。
スケッチのコンパイルには時間がかかる場合がありますが、これは正常です。完了したら、USBケーブルを取り外し、ジャンパー線を取り外してから、USBケーブルを再接続して、ボードの電源を再びオンにします。
シリアルモニターを開き、ボーレートが115,200 bpsに設定されていることを確認します。次に、ESP32-CAMモジュールのリセットスイッチを押します。
初期化情報に続いて、ボードがネットワークに接続し、IPアドレスを取得したことを示すメッセージが表示されます。IPアドレスは、http://192.168.0.180などのURLの形式になります。
このアドレスをコピーして、Webブラウザーのアドレスバーに貼り付けます。Webブラウザーは、ESP32-CAMが接続されているのと同じネットワーク上にある必要があります。
操作
ブラウザで、いろいろ操作できそう。
これで、カメラのWebページが表示され、いくつかのコントロールが表示されます。
[ストリームの開始]ボタンをクリックして、ビデオをストリーミングします。画面上部のドロップダウンを使用して、ビデオのサイズとフレームレートを変更できます。
一応、顔の登録と認識までできたが、後日また補足する。
電源
ESP32は非常に低いスタンバイ電流で動作できますが、無線の動作時に大量の電流を消費するため、WiFiとBluetoothの両方のパフォーマンスに影響を与える可能性があります。
電源の問題があるかどうかを判断する1つの方法は、ESP32-CAMの起動時にシリアルモニターを観察することです。「ブラウンアウト状態」が検出されたというメッセージが表示された場合は、ESP32-CAMが供給できる電流よりも多くの電流を引き込もうとしている可能性があります。
参考
ESP32-CAM Video Streaming and Face Recognition with Arduino IDE