« ESP32開発ボード用に830穴ブレッドボードをカット | トップページ | ESP32 EEPROMサイズとTinyBasicのSIZE_LIST上限値が判明 »

2024年4月23日 (火)

ESP32 Builtin Basic を期待した衝動買いは失敗で分解してみた

気にAmazonでマイコンボードを検索していたら、以下のお買い得品を見つけました。
ESP32開発ボードに、IO拡張ボードもついて、何と1180円。
Amazonの取り扱い開始が2018/1/8だし、古くて売れず、安売りみたいな感じかな。
古そうならと、以前起動できたBuiltinBasicを期待したがFuseで禁止され起動不可が判明。
おまけに普通のスケッチの書き込みもできず、使えずじまい。
悔しいので、最後はモジュールの蓋を外して中を覗いてみました。
 Img_0309_20240502162001

以下、詳細です。

 


った物は以下です。
Amazon | waves NodeMCU-32 デュアルコア 開発ボード ESP32 WiFi Bluetooth Type-C ワイドバージョン I/O拡張ボード 付き | waves | マザーボード 通販

Photo_20240423194601

ビューを見ていると、古いチップのため、EN端子とGND間に1uFを付けると書き込みが安定するとか、書き込み時はBOOTを押しながらとか記載があります。ESP32を調べ始めた頃にはそんな記事を幾つか見ていたので、古いチップならもしかしてBuiltinBasicが走るかもしれないとの期待が高まりました。2018年度頃のレビューが見当たらないのが少し気になりますけど、まあいいや。
もしダメでも、拡張ボード(後で良く見たら30ピン、少し後悔。本体単体だと1080円だから、おまけだと思う事にします)が手に入るだけでも、まあお買い得だろうと自分を納得させ、衝動買い。

き込みを安定させる方法は、ESP32のプログラム書込みを安定させる #ESP32 - Qiita が参考になりそうです。
上記記事から拝借したEN-GND間への0.1uFコンデンサの取付例。
Photo_20240424165801
当時は、BOOTボタン(GPIO2とGNDをショートさせるSW)を押したまま、ENボタンを押して離し、EN端子に容量を付加して、ENボタンを離した後の時定数を十分に確保し、確実に書き込みモードに入る必要があった様に思えます。
2024-4-24追記 参考で、リセットタイミングの補足を末尾に記載しました。


宅してから、モジュールの写真をチェック、BuiltinBasicが走っていた古いものと、刻印がほぼ同じ。これは期待できるかも。
アマゾンプライム対象商品なので、明日到着予定。
なんか、ワクワクしてます。


なみに、上記のアマゾンの商品紹介のモジュール部分の拡大写真が以下。
Photo_20240423195201Photo_20240424113201

BuiltinBasicの記事の載っているESP32-WROOM-32 (ht-deko.com)の、esp32_rev.jpg (1200×900) (ht-deko.com)と見比べると、ESP-WROOM-32 Rev.1(以下) とそっくりです。文字・記号の配置が若干小さいようですが、文字・記号そのものは全く同じ。
Photo_202404231955012_20240424113201

し、BuiltinBasicが走ったら、幾つかの方法でGPIOのトグルをさせ、波形を見て速度の比較でもしてみようと思います。
Easter Egg of ESP32 | macsbug (wordpress.com) を参考に、レジスタ書き込みの場合、IOSETの場合と、豊四季TinyBasicの場合で、どの程度違うのかとか。

 


2024-4-25追記
手後早速IO12を10KΩでPullUpして、ENを押してみました。
下は、実験の様子。
Img_0266

果は残念、BuiltinBasicの起動のための "Falling back to built-in command interpreter.メッセージは出ず、以下のメッセージが繰り返されるだけ。

rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT)
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
ets Jul 29 2019 12:21:46

これが、エンターキーを連打しても、ただただ流れるだけ。

BOOTボタンを押すと、以下のダウンロードの待機メッセージが出て止まります。

rst:0x10 (RTCWDT_RTC_RESET),boot:0x23 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V ))
waiting for download

IO15をPullDownしても、IO12とIO15に何も繋がなくてもENを押して離すと最初のメッセージの繰り返し
途中、エンターキーを連打しても、BOOTとENの押し方を変えても、BuiltinBasicの起動なんてできそうにない感じです。

ESP32-WROVER-E/ESP32-DevKitC-VE ● Disable ROM Basic の件 - CT5002    dellbee's blog (fc2.com)
を参照すると、全く同じ状況の様ですので、Fuseで禁止されているのでしょう

、アマゾンの取り扱い開始日とパッケージの記号・文字を頼りに、衝動買いしてしまいましたが、空振りでした。

 


2024-4-27追記

き込みが失敗するので、EN-GND間に1uFの容量を半田付けしましたが、結果は変わらず失敗。書き込み中ずっとBOOTボタンを押し続けてもダメ。USBケーブルを幾つか変えてもダメ。
Img_0267

買った物に同梱されていた、拡張ボードに刺して、何をやってもダメ。
Img_0268


ENを押すと、以下のメッセージの繰り返し
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
invalid header: 0xffffffff

invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
invalid header: 0xffffffff
ets Jul 29 2019 12:21:46

上記をずっと繰り返すだけ。


BOOTを押すと、以下のダウンロード待ちのメッセージが出るので、この状態で書き込んでも、失敗してしまう。

rst:0x10 (RTCWDT_RTC_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
waiting for download

上記のダウンロード待ち状態で書き込んでも、以下のメッセージが出て失敗。


最大1310720バイトのフラッシュメモリのうち、スケッチが292953バイト(22%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が26900バイト(8%)を使っていて、ローカル変数で300780バイト使うことができます。
esptool.py v4.5.1
Serial port COM3
Connecting....
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 省略
Uploading stub...
Running stub...
Stub running...
WARNING: Failed to communicate with the flash chip, read/write operations will fail. Try checking the chip connections or removing any other hardware connected to IOs.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00005fff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x0000e000 to 0x0000ffff...
Flash will be erased from 0x00010000 to 0x00057fff...
Compressed 18992 bytes to 13110...

A fatal error occurred: Packet content transfer stopped (received 8 bytes)
Failed uploading: uploading error: exit status 2

いろいろと調べて、パーテーションを変えてみるとかしても、ダメですね。

れ、もしかして不良品なんでしょうかね。

ちょっとお手上げ、安物買いの銭失いか。


2024-4-29追記
Arduino IDE ツール で Erase All Flash Before Sketch Upload をEnableしても、Flash Frequency を40MHzに落としても、ダメ。
アマゾンで買った物の品名は、waves nodeMCU-32 なので、これを頼りに、以下を参考にいろいろとやってみましたが、ダメ。
ArduinoIDEでNodeMCU-32を使えるようにする‼ – ど素人電子工作 (toccho.net)

いろいろと設定を変えても、EN押す→BOOT押す→EN離す→BOOT離すで、シリアルモニタ画面に以下出るものの、
何をやっても、画面の状態は変わらずそのまま。以下Node32sを選択した例。
Photo_20240429135501

出力画面では、いろいろ設定等変えながら書き込んでも、以下のFlashとの通信異常のメッセージが出るだけ。 Photo_20240429135301_20240501192101


最大1310720バイトのフラッシュメモリのうち、スケッチが292949バイト(22%)を使っています。
最大327680バイトのRAMのうち、グローバル変数が26900バイト(8%)を使っていて、ローカル変数で300780バイト使うことができます。
esptool.py v4.5.1
Serial port COM4
Connecting....
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 省略
Uploading stub...
Running stub...
Stub running...
WARNING: Failed to communicate with the flash chip, read/write operations will fail. Try checking the chip connections or removing any other hardware connected to IOs.
Configuring flash size...
Erasing flash (this may take a while)...

A fatal error occurred: Packet content transfer stopped (received 8 bytes)
Failed uploading: uploading error: exit status 2

NodeMCU-32Sで試してもだめ。
アマゾンの商品の詳細説明の、製造元リファレンス ‎ESP32-NM-W-NP を頼りに、選択するボードを探しましたが、該当しそうなものは見つからずです。困った。

以下、参照したネット情報。
Amazon | waves NodeMCU-32 デュアルコア 開発ボード ESP32 WiFi Bluetooth Type-C ワイドバージョン I/O拡張ボード 付き | waves | マザーボード 通販
 BOOTを押し続けるとか、1uFを付けるとか、10分放置するとか、記載があります。
ArduinoIDEでNodeMCU-32を使えるようにする‼ – ど素人電子工作 (toccho.net)
ESP32-WROOM32開発基板NODE MCU ESP-32Sを使う | たまねぎブログ (tamanegi.digick.jp)

Arduino IDEでESP-WROOM-02のボード設定について #Arduino - Qiita
DIO, DOUT, QIO, QOUTって、なんなん? #Arduino - Qiita

ESP32-WROOM-32U Program error - Using Arduino / Project Guidance - Arduino Forum
Boot Mode Selection - ESP32 - — esptool.py latest documentation (espressif.com)
Parts:DevBoard:ESP32-DevKitC-32D - robot-jp wiki

 



2024-4-29追記
のは試しで、以下を参照しesptoolでFLASHの様子を覗いて見ました。
ESP32でesptool.pyの使い方 | Lang-ship
esptoolによるESP32のMicroPythonファームウェアの書き込み – マイクロファン ラボ (microfan.jp)

有益なヒントが見つかるかと期待するも、実行結果は以下です。

Flashとの通信がFail、read/writeは失敗するだろう。Flashサイズも不明。
これじゃーねー。Arduino IDEのメッセージと変わらないし、ヒントも何もなし。


C:\Users\username\esptool-master\esptool-master>esptool.py flash_id
esptool.py v4.7.0
Found 1 serial ports
Serial port COM3
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting......
Detecting chip type... ESP32
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 省略
Uploading stub...
Running stub...
Stub running...
WARNING: Failed to communicate with the flash chip, read/write operations will fail. Try checking the chip connections or removing any other hardware connected to IOs.
Manufacturer: ff
Device: ffff
Detected flash size: Unknown
Flash voltage set by a strapping pin to 3.3V
Hard resetting via RTS pin...

C:\Users\username\esptool-master\esptool-master>

もしかしてFlashを積んでいない、偽物だったりして。
モジュールの蓋を剥がして中を覗いて見たくなってきました。
その前にやれることはないか、考え中。

...数時間後...

っかくesptoolが使える様にしたので、以下を参照して、efuseの状態を見てみました。

ESP32-WROVER-E/ESP32-DevKitC-VE ● Disable ROM Basic の件 - CT5002    dellbee's blog (fc2.com)

ESP32がCOM3割り当てとなっている事を確認し、以下のコマンドを実行。

>py -m espefuse -p COM3 summary

結果のレポートを見ると、BuiltinBasicの起動を禁止のefuse値がTrue R/W(0b1)
CONSOLE_DEBUG_DISABLE (BLOCK0) Disable ROM BASIC interpreter fallback = True R/W (0b1)

れじゃーBuiltinBasicが走る訳がないですね。
Esp32_efuse_result

回の衝動買いは、BuiltinBasicは起動不可が確認できて完全に失敗書き込みもできないので、普通に使う事もできない状態。
どうしましょう。

 



2024-4-30追記
esptoolが使えるので、flash関係のコマンドを2つ実行してみました。ステータスのリードと消去です。
共に、実効結果は、esptool flash_id 実行時のメッセージと最後の方だけしか変わらないので、最初と最後の方だけのピックアップです。

ステータスのリードの結果


C:\Users\username\esptool-master\esptool-master>esptool.py read_flash_status
esptool.py v4.7.0

Found 1 serial ports
Serial port COM3
Connecting......

省略

WARNING: Failed to communicate with the flash chip, read/write operations will fail. Try checking the chip connections or removing any other hardware connected to IOs.
Status value: 0xffff

続いて消去の結果


C:\Users\username\esptool-master\esptool-master>esptool.py erase_flash
esptool.py v4.7.0
Found 1 serial ports
Serial port COM3
Connecting....

省略

WARNING: Failed to communicate with the flash chip, read/write operations will fail. Try checking the chip connections or removing any other hardware connected to IOs.
Erasing flash (this may take a while)...

A fatal error occurred: Packet content transfer stopped (received 8 bytes)

何をやっても、だめ。本当にFLASH積んでるのって感じです。

うなったら、FLASHを積んでるのか確かめるため、モジュールの蓋を開けてみますかね。


2024-5-1追記
いに決断、モジュールの蓋を開けて、中を覗いて見ました。
確かハンズで以前買っていた、円盤形ダイアモンドリュータービットをドリルチャックに付け、ドリルをゆっくり回しながら押し付け、金属板を少しずつ削りながら、ところどころ穴が貫通気味になったところで、カッターで切れ目を広げ、蓋を剥がす感じで進めました。
Img_0281

30分程格闘し、何とか蓋を切り取りました。
Img_0307

ジュール部分の拡大写真です。文字・数字は写真から読んだので正確ではないかもしれませんが、
ESP32チップがEspressif ESP32-D0WD V3 372023 UGOOMAHO51、
FlashチップがPUYA PY25Q32HB 3E1P83A、
40MHzクリスタルがJWT 40.000CT2、
かな、他チップ部品が多数があります。
一応Flashは積んでいる様ですね。Flash未実装を疑ったが、そこまでひどくはなかったかな。
Img_0297
向きを変えた写真。
Img_0296

側面の金属板は基板に半田付けされているだけなので、ニッパーで一カ所切り、ニッパーで挟んでゴリゴリすれば、簡単に外せました。
Img_0309
Img_0312
Flashメモリ Puya Semiconductor社 PY25Q32HBに関する情報
PY25Q32HB Datasheet V1.3_pdf (puyasemi.com)
普冉半导体(上海)股份有限公司 (puyasemi.com)

Espressif純正ではないコピー品で、最悪Flash無しの偽物商品かと疑いましたが、そこまでひどい状況ではありませんでした。
ですが、スケッチの書き込みもできませんでしたし、分解までしたので電源は危険なのでもう入れません。
単なるモジュール内の観賞用に取っておくだけかな。


続報あればまた。

 



ESP32のリセットタイミングの補足

最新のESP32-WROOM-32Eのデータシートにも、以下の記載がありますね。回路図では0.1uFがENに繋がっていますが、説明文では1uFが推奨の様です。推奨のRC時定数は、RCdelay=10KΩ×1uF=10msになります。
Img_0263
左上EN端子のR1とC3はTBDのままだし、右下R2は0Ω、C4は0.1uFで、ENのスイッチを押して離した際の時定数が重要なのでしょうが、EN端子の内蔵PullUp抵抗値など情報がありません。しょうがないので手持ちのESP32-DevkitC-32EのEN端子を押した後の立ち上がりをシングルトリガーにしてオシロで観測してみました。約100us程度の時定数の様です。
Img_0264
τ=RCの関係からR=τ/C=100us/0.1uF=1KΩとなるので、約1KΩのPullUp抵抗があるように見えました。ボードを良く見たら、R1が1KΩで実装されているのかもしれませんが、プリントパターンも見えないし、チップ部品も小さ過ぎて見えないしシルク印刷も無しで未確認。推奨の時定数に対しては、1/100程度とかなり小さくてすむ理由は分かりません。
Schematic Checklist - ESP32 - — ESP Hardware Design Guidelines latest documentation (espressif.com)を見ると、Chip Power-up and Reset Timing に以下の記載があります。ここで言うCHIP_PUはEN端子の事と思いますが、50usのリセット時間が必要とあり、10KΩと1uFのRC Delayの記載があります。
BOOT Option JP2とありますが、IO0とGNDを接続する、BOOTスイッチかな。

Photo_20240424201301

Photo_20240424201501

 


続報あればまた。

 

« ESP32開発ボード用に830穴ブレッドボードをカット | トップページ | ESP32 EEPROMサイズとTinyBasicのSIZE_LIST上限値が判明 »

電子工作:ESP32」カテゴリの記事

電子工作:ESP32 TinyBasic」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« ESP32開発ボード用に830穴ブレッドボードをカット | トップページ | ESP32 EEPROMサイズとTinyBasicのSIZE_LIST上限値が判明 »