最近暑い日が多い。大学がオンライン授業なので通学しなくていいのがうれしい。
ESP32-CAMの特徴
ESP32-CAMはWi-fiとBluetoothが使える無線モジュールとカメラモジュールがセットになった製品だ。240MHzのCPU(Arduinoは16MHz)と4MBのメモリ(ArduinoUnoは2kB)を搭載している。これだけの機能がありながら1000円しないというコスパの良さに惹かれてつい買ってしまった。
日本で使っても大丈夫なものをAliexpressで頼んで約1ヶ月後に届いた。だがUSB-シリアル変換器がまだ届いていなかったのでしばらく置いていた。後日、変換器が届いたので早速ESP32-CAMを使ってみようと考えた。

ESP32-CAM にプログラムを書き込めない
USB-シリアル変換モジュールとESP32を線で繋ぎ、サンプルファイル(CameraWebServwe.ino)を書き込もうとした。だがうまくいかない。(スケッチのはじめの方の#define CAMERA_MODEL_AI_THINKERのコメントアウトは外しておく)
次のようなエラーが発生した
A fatal error occurred: Failed to connect to ESP32: Invalid head of packet (0x00)
が!、試行錯誤を繰り返し、無事動作するようになった。
USB電圧計のモードを変える
これはほとんどの人は関係ないと思う。
私はUSBから電源を取ってマイコンなどを動かすときにUSB電圧計を挟んで使っている。そうすることで異常に電流が流れている場合にすぐに気づくことができる。また、ケータイの充電のときは電流を見て何分で充電が終わるのか見積もることもできる。そんなわけでシリアルコンバーターに繋ぐのもこれを介してPCと繋いでいた。

7セグの左側にスライドスイッチがある。3段階ありそれぞれサムスン、D何ちゃら、Appleの頭文字SDAとある。これは会社ごとに最適化された充電をするみたいなことが説明書に書いてあった。実際何も変わらなかったので無視していた。
だが、スライドをDにするとシリアルコンバーターが動作し、それ以外だと動作しないことがわかった。おそらく信号線に何か干渉していたのであろう。
これでプログラムの送信を試行しているときにシリアルコンバーターの緑のLEDがチカチカと光るようになった。
コードを短いものに変える
直接の原因かわからないが。
シリアル変換モジュールとESP32の間の接続はブレッドボードを介して行っていた。よって接触不良の可能性が上がり線も長くなった。ちょうど仮組みのDA変換器に大量に使っていたジャンパワイヤーが必要なくなったのでそれを使った。
Before
After
電源の電圧を確認する
シリアルコンバーターのVCC端子の電圧を測ったところ4.79Vだった。ここで電源が弱いと気づいた。
電源を別系統からとる
プログラムの書き込みには電力を多く必要とするらしい。なのでシリアルコンバーター内蔵の電源では電源容量が足りなかったようだ。試しにArduinoから3.3Vを引いて3v3ピンに繋いだところあっさり成功した。
このとき5Vから取って5vに繋いだら成功しなかった。
上記のことを行うことで書き込みに成功した。
次回 ESP32-CAMのカメラが動かない!

コメント