Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。cocoon ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /var/www/html/itoho/wp-includes/functions.php on line 6121
ESP32ーCAMに書き込めないエラーを解決する

ESP32-CAMへの書き込みが失敗する時の対処法

ESP32-CAMの画像 ESP-32
ESP32-CAMの画像

最近暑い日が多い。大学がオンライン授業なので通学しなくていいのがうれしい。

ESP32-CAMの特徴

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

ESP32-CAMの画像
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と繋いでいた。

USB電流電圧計
こいつはUSB電圧電流計ンゴ

7セグの左側にスライドスイッチがある。3段階ありそれぞれサムスン、D何ちゃら、Appleの頭文字SDAとある。これは会社ごとに最適化された充電をするみたいなことが説明書に書いてあった。実際何も変わらなかったので無視していた。
だが、スライドをDにするとシリアルコンバーターが動作し、それ以外だと動作しないことがわかった。おそらく信号線に何か干渉していたのであろう。
これでプログラムの送信を試行しているときにシリアルコンバーターの緑のLEDがチカチカと光るようになった。

コードを短いものに変える

直接の原因かわからないが。
シリアル変換モジュールとESP32の間の接続はブレッドボードを介して行っていた。よって接触不良の可能性が上がり線も長くなった。ちょうど仮組みのDA変換器に大量に使っていたジャンパワイヤーが必要なくなったのでそれを使った。

電源の電圧を確認する

シリアルコンバーターのVCC端子の電圧を測ったところ4.79Vだった。ここで電源が弱いと気づいた。

電源を別系統からとる

プログラムの書き込みには電力を多く必要とするらしい。なのでシリアルコンバーター内蔵の電源では電源容量が足りなかったようだ。試しにArduinoから3.3Vを引いて3v3ピンに繋いだところあっさり成功した。
このとき5Vから取って5vに繋いだら成功しなかった。

上記のことを行うことで書き込みに成功した。

次回 ESP32-CAMのカメラが動かない!

成功!

コメント

タイトルとURLをコピーしました