Kanade Labo

かなで研究所

ESP32-WROOM-32Dサンプルを動かす

こんにちは かなで です。

今回はLチカのつもりでしたが、ただLチカをさせても面白くありません(悪い癖

そんなわけで比較的簡単そうで、かつWifi機能を生かしたLチカとしてサンプルの中のあるSimpleWifiServerを動かしてみようと思います。

外部から本ESP32-WROOM-32Dにhttpでアクセスし、Lチカ点灯/消灯を操作できるもののようです。

では早速ですが、「ファイル」→「スケッチ例」→「Wifi」→「SimpleWiFiServer」を選択します。

const char* ssid     = "yourssid";
const char* password = "yourpasswd";

こちらの部分に、接続したいSSIDと、そのパスワードを入れます。

暗号化方式とか入れる場所がないのが気になりますが、とりあえず入力してみます。

入力したら、スケッチに異常がないか検証をクリック→ここは問題ありませんでした。

一応「シリアルモニタ」を開いておいて…

いざ「マイコンボードに書き込む」を実行!!

Arduino:1.8.19 (Windows 10), ボード:"ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, Core 1, Core 1, None"

最大1310720バイトのフラッシュメモリのうち、スケッチが653561バイト(49%)を使っています。

最大327680バイトのRAMのうち、グローバル変数が37296バイト(11%)を使っていて、ローカル変数で290384バイト使うことができます。

C:\Users\Kanade\AppData\Local\Arduino15\packages\esp32\tools\esptool_py\3.3.0/esptool.exe --chip esp32 --port COM4 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x1000 C:\Users\Kanade\AppData\Local\Temp\arduino_build_452242/SimpleWiFiServer.ino.bootloader.bin 0x8000 C:\Users\Kanade\AppData\Local\Temp\arduino_build_452242/SimpleWiFiServer.ino.partitions.bin 0xe000 C:\Users\Kanade\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.3/tools/partitions/boot_app0.bin 0x10000 C:\Users\Kanade\AppData\Local\Temp\arduino_build_452242/SimpleWiFiServer.ino.bin 

esptool.py v3.3

Serial port COM4

Connecting.....................................スケッチの書き込み中にエラーが発生しました

.



A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.

For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html



「ファイル」メニューの「環境設定」から
「より詳細な情報を表示する:コンパイル」を有効にすると
より詳しい情報が表示されます。

はい、エラーになりました。

「スケッチの書き込み中にエラーが発生しました」との事。

いいですね。エラーが出ると俄然やる気が出てきますね!

A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.

まずは怪しげなこの単語を翻訳してみます。

致命的なエラーが発生しました:ESP32への接続に失敗しました:間違ったブートモードが検出されました(0x13)!チップはダウンロードモードである必要があります。

うむ…ブートモードが間違っていると。

ブートモードとブートローダってなんか関係あるのかな?と思いつつ、「書込装置」を眺めてみます。

ツール→書込装置 あれ?ここって「書込装置」の文字の後に何か書いてなかったっけな?と思いつつ

選択肢が1つしかないので「Esptool」を選択してみます。

よし、変わりました。

トライアンドエラー!という事で再度書込みを試してみます。

A fatal error occurred: Failed to connect to ESP32: Wrong boot mode detected (0x13)! The chip needs to be in download mode.

ダメでした。

次は、ググってみます。

「ESP32-WROOM-32D」の「Boot」ボタンを押してみよ。とのご助言がありましたので試してみます。

Bootボタンはこれですね。

ポチッ

見た目は何にも変化なしでした。

リトライ→NG

更にググると…Bootボタンを押し続けろと書いてました。

ってことで、Bootボタンを押したまま、書込み実行!

さっきは「・・・・」がずっと続いてたのに、今回はここで止まりました。

すぐに違う文字が画面に!

進んだみたいです。

さらに進むと

書込みを始めたような表示に変わったので、ここで「Boot」ボタンから手を放しました。

結果的にはこれで書き込みができたようです。

一応全体ログはこちら

esptool.py v3.3
Serial port COM4
Connecting....
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 30:c6:f7:0b:5d:70
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
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 0x000b0fff...
Compressed 18560 bytes to 12759...
Writing at 0x00001000... (100 %)
Wrote 18560 bytes (12759 compressed) at 0x00001000 in 0.5 seconds (effective 322.0 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...
Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.1 seconds (effective 186.1 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.2 seconds (effective 420.0 kbit/s)...
Hash of data verified.
Compressed 659328 bytes to 427744...
Writing at 0x00010000... (3 %)
Writing at 0x0001bb02... (7 %)
Writing at 0x00029d22... (11 %)
Writing at 0x0002f7ba... (14 %)
Writing at 0x00035011... (18 %)
Writing at 0x0003a860... (22 %)
Writing at 0x0003fda6... (25 %)
Writing at 0x00044e77... (29 %)
Writing at 0x0004a092... (33 %)
Writing at 0x0004f3d6... (37 %)
Writing at 0x00054525... (40 %)
Writing at 0x00059839... (44 %)
Writing at 0x0005e9f3... (48 %)
Writing at 0x0006409f... (51 %)
Writing at 0x00069399... (55 %)
Writing at 0x0006e6da... (59 %)
Writing at 0x000739be... (62 %)
Writing at 0x00079058... (66 %)
Writing at 0x0007e734... (70 %)
Writing at 0x0008415a... (74 %)
Writing at 0x00089e77... (77 %)
Writing at 0x0008f61b... (81 %)
Writing at 0x0009864c... (85 %)
Writing at 0x0009fe9a... (88 %)
Writing at 0x000a55da... (92 %)
Writing at 0x000aaa87... (96 %)
Writing at 0x000b0519... (100 %)
Wrote 659328 bytes (427744 compressed) at 0x00010000 in 7.9 seconds (effective 664.2 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

そして忘れてましたが、シリアルモニタを確認します。

見事に文字化け?ってます。

しかし!これは想像がついてるんです!

「9600 bps」を「115200 bps」に変更すればいいんですよ!

という事で変更したところ…

赤矢印が変更したタイミング。ここから「・」が徐々に増えるという状況になりました。

恐らくこの「・」が正解で、通信が来る前の待機状態である予想…

したのですが、スケッチを見ると、まだsetupの途中みたいでした。

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }

「WL_CONNECTED」になるのを待ってる状況みたいです。

話がそれるので割愛しますが、無線ルータ側に新規端末のアクセスがあったか確認したのですが、新規端末は見つかりませんでした。

つまり、Wifiの接続に失敗しているという事ですね。

調べてみると、2.4Gしか掴めないようです。

一応無線ルータは2.4Gも5Gも使えるので問題ないはずです。

えっと…

SSIDを間違ってました(汗

大文字小文字はちゃんと区別して入力しましょう!

ちょっと加工してますが、正常な場合、こんな感じで表示されました。

では、ここで上記に表示されている「192.168.0.111」にChromeでアクセスしてみます。

このような文字が表示されました。

シリアルモニタには以下の通り。

New Client.
GET / HTTP/1.1
Host: 192.168.0.111
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.62 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: ja,en-US;q=0.9,en;q=0.8

Client Disconnected.
New Client.
GET /favicon.ico HTTP/1.1
Host: 192.168.0.111
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.62 Safari/537.36
Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
Referer: http://192.168.0.111/
Accept-Encoding: gzip, deflate
Accept-Language: ja,en-US;q=0.9,en;q=0.8

Client Disconnected.

今のところ、何を書いてあるかはあまり気にする必要はなさそうですが、

とりあえず「Webブラウザでアクセスすると、ちゃんとESP32-WROOM-32Dが反応している(ログが出る)」という事がわかったのでOKです。

あとは、Chromeに表示されている通り、

Click here to turn the LED on pin 5 on.     ←LEDが点く
Click here to turn the LED on pin 5 off.     ←LEDが消える

という動きをするはずです。

きっと動くはずなのですが…まだLED配線してないので、今回はここで区切りたいと思います(笑

最後までお読みいただきありがとうございました。
気になることがあったら、コメント頂けると嬉しいです。
自主学習も兼ねて記事にするかもしれません。

-Arduino/ATMega328P