安価な Wi-Fi 搭載 TTGO T-Camera が、まれに起動しないことやファームウェアの書き込みに失敗することがあったので、その対策方法について、説明します。
目次
症状
起動時に「flash read err, 1000」が繰り返しシリアル出力されて起動できない場合や、ファームウェアの書き込み時に「Could not auto-detect Flash size」と表示される場合があります。
起動時: rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT) flash read err, 1000 ets_main.c 371 ets Jun 8 2016 00:22:57
ファーム書き込み時: Warning: Could not auto-detect Flash size (FlashID=0xffffff, SizeID=0xff), defaulting to 4MB Compressed 8192 bytes to 47...
電源が不安定な時にも似たような症状が発生しますが、ログの内容が異なるので、上記のログで見分けることが出来ます。
原因
起動時に、ノイズなどの影響で、GPIO12 (14番ピン)が Highレベルを検知し、ESP32-WROOVER-B モジュール内部の動作電圧が1.8Vとなり、SPI接続フラッシュメモリへのアクセスが出来なくなることが原因だと思います。
本GPIO12 (14番ピン)は、カメラ・モジュールに接続されているほか、データシートでは内部プルアップされていることになっているので、Highレベルに遷移しやすい可能性も考えられます。
少なくとも本機の起動後にファームウェアを書き込むときは、一度、USBを抜いて、カメラの電源を落としておくと良いでしょう。
なお、ファームウェア書き込みモードに設定するには、IO0ボタンを押しながらRSTボタンを押下してください。
対策方法
プルダウン抵抗を追加することで対策が可能です。抵抗値に悩むところですが、テスターで確認したところ、起動直後は内部プルアップされている様子もなかったので、100kΩで試してみました。※起動後は3.3Vに遷移します。
ちょうど、GPIO12(14番ピン)の右側が、GND(15番ピン)なので、下図のように見た目を(あまり)損なわずに抵抗を追加することが出来ます。
ただし、GND(15番ピン)の端子にハンダ付けする際、ハンダの熱が逃げやすいので、ハンダ付け作業としては少し難し目です。アナログ回路や高周波回路のハンダ付けに慣れていない方は、外部コネクタ部のGNDに抵抗器を取り付けて、GPIO12(14番ピン)まで配線したほうが、より簡単かもしれません。
この対策(100kΩ)で、数10回ほど試していますが、少なくともUSBを抜き差ししてから実行すれば、一度も失敗することがありませんでした。
もしプルダウン抵抗が不十分なようであれば、並列に100kΩを付与するか47kΩなどに抵抗値を下げてみると良いでしょう。10kΩ以下にするのは、カメラ動作などに影響を及ぼす可能性があるので、お奨めしません。
関連記事
by bokunimo.net
「TTGO T-Camera の起動時 flash error やファームウェアの書き込み時 Could not auto-detect Flash size で失敗するときの対策方法」への1件の返信
[…] TTGO T-Camera の起動時 flash error やファームウェアの書き込み時 Could not auto… エレキジャックIoT No.2にM5Stack×Ambientの記事と、TTGO T-Cameraの記事の2件が掲載されました IoT Express × TTGO Camera 玄関カメラで0.8fpsパラパラ漫画表示 M5Stack×TTGO Camera 玄関カメラ用デモの高速化 投稿者 wataru投稿日: 2019年2月22日2020年5月29日カテゴリー ESP8266+ESP32 […]