ESP32 を買って、 Windows 10 に開発環境(ESP-IDF)を構築し、ビルドして、書き込んで、Lチカを確認するまでの記録。
このエントリでは「詳細はいいから、とにかくはやく動かしてみたい!」という「せっかちで、めんどくさがりな人>わたし😋」に向けて記録しています。
ここ👇まで行く(はず)。
背景
なんか楽しそう。160MHz とか高速で、Wifiが付いてこの価格(1000円以下)だったら、かなり遊べるんじゃない?と思って。
Wifi経由でして、スマホのブラウザからコントロールするラジコンみたいなのが作れたらいいなぁ、、、なんて。
ESP32 とは
まず、ESP32 ってなに?なひとはここには来ないと思いますが、念の為。
Wi-FiとBluetoothを内蔵する低コスト、低消費電力なSoCのマイクロコントローラである
160MHzまたは240MHzプロセッサで動作するSoC(Systemon a Chip)です.
これを買いました。(2020/05/20時点の価格は 990円)
HiLetgo ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード
ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetooth
小さなボリューム、簡単に他の製品に埋め込まれる
LWIPプロトコル、Freertosをサポートした強力な機能
AP、STA、AP + STAの3つのモードをサポート
ESP32 ESP-32S NodeMCU開発ボード2.4GHz WiFi + Bluetoothデュアルモード
データシート:
http://wiki.ai-thinker.com/_media/esp32/docs/nodemcu-32s_product_specification.pdf
(プログラマな私が読んでも、実はよくわからない。😋)
ESP-IDF (Espressif IoT Development Framework)
ESP-IDF の詳細はここのページ↓に書いてある。このページを頼りにすすめます。
原文でおっけーなひとは以下は無視して、こちらへどうぞ。
開発環境(ESP-IDF)を構築
Arduino IDE でもビルド&書き込みが可能なため、ググると、そっちを使っているひとが多いような印象がある。
このエントリでは、Arduino IDE ではなく、ESP-IDF に挑戦する。
なぜなら、もしかしたら使い慣れているVSCode をそのまま利用できるかもしれない、と思って。
あと、短いお試しコードであれば問題は無さそうだけど、本格的な長いコードになると、Arduino IDE ではちょっと心細いかな、とも思った。
ちなみに、VSCode の拡張パックは公式のがあるみたい。
https://github.com/espressif/vscode-esp-idf-extension
で、軽い気持ちで、拡張パックを入れてみたのだけど、、、使い方がよくわからなかった。(ダメなやつ>😰)
なので、まずは、基本に返って、 Windowsコマンドプロンプトでのビルド&書き込み を目標としてみました。デバッガ接続はあとで考える。VSCode でデバッグできたら最高なんだけどね。
Arduino IDEや、VSCodeの拡張パックの情報が知りたいひとは、他のエントリを探してくださいませ🙇♂️。
1, Windows版 ESP-IDF はこのページから
2, これ↓をダウンロード&インストール
起動するとお約束の画面になり、
お試しなので、今回は安定していると思われる「v3.3.2」を選択してみた。
ちょっと待たされる
無事にインストール完了
で、こんな画面が出た。
ここまで、特に悩むことはない。
3, サンプルコードを準備
フォルダごとまるっとコピーしろって書いてあるのでやってみる。
> cd %userprofile%\esp
> xcopy /e /i %IDF_PATH%\examples\get-started\hello_world hello_world
わたしがやったのは、こんな感じ。
でも、Windows のエクスプローラーで、適当にフォルダを作って、そこにまるっとコピーして、再びコマンドラインに来ても問題無いと思った。
4, 謎の設定。set-target はスルー
公式サイトの STEP.7 には、以下のコマンドを入力、とあるが、
cd %userprofile%\esp\hello_world
idf.py set-target esp32
idf.py menuconfig
idf.py set-target esp32
でエラーになる。「Python のVersionが違うんじゃね」なメッセージにまぎれているが、よく読むと「set-target
というコマンドは無い」と言っている。
You are using Python 3.7.3. Python 3 support is new, please report any problems you encounter. Search for 'Setting the Python Interpreter' in the ESP-IDF docs if you want to use Python 2.7.
エラーになったら、install.bat
とか、export.bat
を起動してみて、という記述を見かけたので、やってみたけど、set-target
は相変わらずでした。
公式ページの情報が古いのかな。ということで、set-target はスルー。
idf.py menuconfig
は日本語環境だといろいろアレだけど、なんとか動くみたい。
設定を変えるコマンドなので、ビルドしてみるだけなら、起動しなくてもいける模様。ということで、こちらもスルー。
5, ビルド
いきなりこのコマンドでいいみたい。
> idf.py build
でビルドできたっぽい。最初は、ファイルが多いのか、それなりに時間がかかります。
6, 書き込み
まず、ESP32 を USB に接続すると、Windows10 が認識して、「COM5 に接続しました!」なメッセージが右下に一瞬表示される。
見逃しても、「デバイスマネージャー」で確認できます。
COMポートの番号が確認できたら書き込みます。
> idf.py -p COM5 flash
わたしの環境ではこんな感じ。
書き込みできたっぽい。
7, 動いた?
ちなみに。Hello World のコードは「Lチカ」しません。あたりまえですが。
コードを読むと、どうやらシリアルポートになにやらLOGを出しているように読めます。
TeraTerm を起動して。COM5 に接続。なんか出てる。
文字化けしてるね。通信速度が合っていないようなので、合わせる。
Setup > Serial port ... > Speed: 115200
やったね。無事に動いたっぽい。😀👍
どうでもいいけど、TeraTermって、GitHub に置かないんですかね。
目標は Lチカ!
1, サンプルコードはこれ
LED をチカチカさせるには、こっちのコードです。
examples > get-started > blink
これをフォルダごと適当な場所にまるっとコピーする。
2, コードをちょっと直して
LEDのGPIO番号を確認して修正。
デフォルトは5番PINになっているが、付属の回路図を見るとわたしが買ったものは2番PINにLEDがつながっていた。
#define BLINK_GPIO CONFIG_BLINK_GPIO
↓
#define BLINK_GPIO 2
ちなみに、CONFIG_BLINK_GPIO は idf.py menuconfig
で変更できるようになっているらしい。おそらく、そっちが正式ルート。
3, ビルド
デフォルトのコマンドプロンプトではなくてこっち「ESP-IDF Command Prompt」を起動。
起動後、カレントディレクトリを blink に移動してビルド。
> idf.py build
4, 書き込み
> idf.py -p COM5 flash
失敗する場合は、USBを抜き差ししてみるといい。
5, 動いた?
Lチカ、できました???
できたら、点滅速度を変えたり、他のサンプルコードをビルドしたり、たっぷりたのしみましょー。