ESP32 Audinoで使ってみる

これは楽だわ。便利を使わない手はないな。小生組み込み屋だったから意地を見せてIDEネーティブ環境でと思ったけど最初はこれでいい。
マイコンが電子屋以外で活用できると電子系の輩でない人達の感性が反映されていいものできるチャンスは沢山ありかなと期待。久々にmac mini の出番があっていい。だいぶご無沙汰なのでいい機会だ。

int led = 14;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(led, OUTPUT);
  Serial.println("LED Test Start");
}
 
void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(led, HIGH);
  delay(500);
  digitalWrite(led, LOW);
  delay(500);
}

ピン配置


●考察
これをやるともうPCのWIFIにESP32というWIFI名がが出てこなくなる。初期のファームでコマンドラインのときには出ていた。そういうことだね。プログラムで指定しない限りはということだ。ライブラリのインクルードが必要だ。

ESP32 ESP-IDFでプログラム作成

環境構築でだいぶ手間取った。まだ不足はあると思うけど。まずはESP-IDFで開発することにしよう。一通り動作させたら micro Pythonもやってみる。気になっていたキットに入っていたファームのバイナリも吸い上げた。まだ再書き込みやってないけど。大丈夫ということで。GitHubにもおいてあるだろし。

ここが参考になった(多謝)

まず、
$>cd hello_world
$>make menuconfig でシリアルポートを設定(tty.SLAB_USBtoUART)しておくとのこと。save しないで抜けるとエラーでる。再度やって確認して save で抜けるとOKだった。

$>make
エラーがでた。pythonの版が云々だ。

Mac-mini:hello_world m_kurosaki$ make
Toolchain path: /Users/m_kurosaki/esp/xtensa-esp32-elf/bin/xtensa-esp32-elf-gccToolchain version: crosstool-ng-1.22.0-80-g6c4433a
Compiler version: 5.2.0
The following Python requirements are not satisfied:
future>=0.15.2
Please refer to the Get Started section of the ESP-IDF Programming Guide for setting up the required packages. Alternatively, you can run “/Users/m_kurosaki/anaconda/bin/python -m pip install –user -r /Users/m_kurosaki/esp/esp-idf/requirements.txt” for resolving the issue.
make: *** [check_python_dependencies] Error 1

ということで素直にanaconda/bin/で以下実行
$>python -m pip install –user -r /Users/m_kurosaki/esp/esp-idf/requirements.txt
successとでたので再度
$>make
buildできたということなので書き込み。
※ここまで長いことかかった(youtubeのフラメンコギターがいい旋律だな)。
BGMないと眠くなってしまうのでアグレシブな曲で!

$>make flash
書き込まれた。make flash でmake と flash 書き込みまでやってくれる。
$>make flash monitor
これだと一気に確認表示まで行ける。CTRL+] 停止できる。

$>screen /dev/tty.SLAB_USBtoUART 115200
で表示させる。これはCTRL+] では止められない。

本日はここまでとしよう。いい終わり方というのも大事だからね。
参考にしたサイトの解説にあったけどプロトタイプはAuduinoで楽しろとある。なるほどな話だな。pythonもやってみる。対話型ってのが安心できいていい。

ESP IDF開発環境を整える〜Mac編〜

こちらが本命かな

●参考(感謝)ESP IDF開発環境を整える〜Mac編〜

●参考での不足事項
macはBSD系だからね。相変わらずあれこれとすんなりとは行かないね。

macに .profileはなかった。作成したが読み込まれなかった。
$>source .profile で有効になるが、再度ターミナルを立ち上げると反映されない。
これはmacが bashだからだ。
そこで.bash_profile にと思ったが、vimで覗いてみると自分で追加した
alias cls =’clear’
が記載されていない。
よく見ると、.bash_prifileの中に、「.bashrc」の起動記述があった。
.bashrcを見ると、alias cls が記述されていた。久々なので忘れていることばかりだ。
ということで .bashrc でパスを通す下記記述を行った。ターミナルを一度終了して起動で反映されれいる。

export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin
export IDF_PATH=$HOME/esp/esp-idf

$>printenv <– でPATHが表示される。
$>$PATH <— だと見えない・・・。
$>echo $PAT <— 見えた!!

●キットとの接続
キットのシリアルに関するドライバはAuduinoで組み入れられてる。これでターミナルから接続できる。
$>ls /devtty* <–でリストに出てくるか見る。以下表示されれば存在する。
/dev/tty.SLAB_USBtoUART    /dev/ttyt0

存在しても screen で接続できないときには、このシリアル通信のリソースが開放されないで残っているようだ。シリアルポートクローズしてないような感じだ。ターミナルを終了して再度接続コマンドを実行してもはじかれる。こういう場合は、一度キットのUSBコネクタ挿し直す。

$>screen /dev/tty.SLAB_USBtoUART 115200
ESP32のリセットボタンで基本機能の表示とコマンドの受付状態となれば成功。

●開発へ
これが昨日はうまく行かなかった。本日はコピーできてカレントディレクトリに「hello_world」のディレクトリが作成されている。

cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .

●make
下記のディレクトリに入らないと make menuconfig は有効ではなかった。

cd ~/esp/hello_world
make menuconfig

●悩む
さて、方針を決める必要があるなと悩み。 micro Python での開発は楽ちんそうだから・・・・。Auduino のプロトタイプを利用も楽そうだ。
makeとかでネーティブな開発は何だかな。このところラズベリーパイは Python でやってるからね。さてさて・・・。

●esptoolトールを見つけた
esptoolのインストール
esptoolはESP-WROOM-02にコマンドラインからアクセスするツール

$ sudo pip install esptool

※以下実行できないときにはリソースが使用されている可能性がある。ESP32のUSBを抜き挿ししてリソースを初期化する必要がある。

$>esptool.py –port=/dev/tty.SLAB_USBtoUART –baud 115200 chip_id
以下表示されればトールは生きている。
esptool.py v2.5.1
Serial port /dev/tty.SLAB_USBtoUART
Connecting……..__
Detecting chip type… ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
MAC: 3c:71:bf:0c:50:54
Uploading stub…
Running stub…
Stub running…
Warning: ESP32 has no Chip ID. Reading MAC instead.
MAC: 3c:71:bf:0c:50:54
Hard resetting via RTS pin…
Mac-mini:~ m_kurosaki$

$>esptool.py –port=/dev/tty.SLAB_USBtoUART –baud 115200 flash_id

esptool.py v2.5.1
Serial port /dev/tty.SLAB_USBtoUART
Connecting…….._
Detecting chip type… ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
MAC: 3c:71:bf:0c:50:54
Uploading stub…
Running stub…
Stub running…
Manufacturer: c8
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin…

●やりたかったのは初期ファームのバックアップとリカバリー
以下エラーが出て読め出せない。

$>esptool.py --port=/dev/tty.SLAB_USBtoUART --baud 921600 read_flash 0 0x400000 original_contents.bin

esptool.py v2.5.1
Serial port /dev/tty.SLAB_USBtoUART
Connecting……..____
Detecting chip type… ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
MAC: 3c:71:bf:0c:50:54
Uploading stub…
Running stub…
Stub running…
Changing baud rate to 921600
Changed.

A fatal error occurred: Invalid head of packet (0xFF)

baud rateを115200bps でやってみる。超遅い!そして・・・おお!うまく行った!!(こういうときの自分の推測なんて当てにならないな。やるだけなのだとしみじみ思う)しかし開発で書き込みが遅いのは・・・。実際に書き込んでみないと分からないか。

$>esptool.py --port=/dev/tty.SLAB_USBtoUART --baud 115200 read_flash 0 0x400000 original_contents.bin

$>esptool.py –port=/dev/tty.SLAB_USBtoUART –baud 115200 read_flash 0 0x400000 original_contents.bin

esptool.py v2.5.1
Serial port /dev/tty.SLAB_USBtoUART
Connecting…….._
Detecting chip type… ESP32
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse
MAC: 3c:71:bf:0c:50:54
Uploading stub…
Running stub…
Stub running…
4194304 (100 %)
4194304 (100 %)
Read 4194304 bytes at 0x0 in 380.1 seconds (88.3 kbit/s)…
Hard resetting via RTS pin…
この後screenでターミナルでつながってプロンプトが表示されてるから問題ない。当たり前だがまだまだ色々不安な旅は続く。