ESP32 開発環境まとめ2
インターフェース オフ会 @ CQ出版
2019/01/21
Kenta IDA (@ciniml)
自己紹介
•井田 健太 (@ciniml)
•仕事:FPGAの論理設計
•使用言語:Verilog
HDL,SystemVerilog,C++,Python
• 元は組み込み?ソフト屋
• 最近はなぜかGoのコードを書いている…
2019/1/21ESP32 開発環境まとめ2 2
最近執筆した記事
•インターフェース2018年9月号 ESP32特集
• 第3部
• 第2章 ESP32の主な開発環境
• Appendix2 純正ESP-IDFを導入する方法
• Appendix4 ESP32用Arduino開発環境を試す
• 第4部
• 第1章 [実験1]ESP32のWi-Fiをマスタする
• ESP32同士でWi-Fi経由で双方向通信する実験
2019/1/21ESP32 開発環境まとめ2 3
最近のESP32の開発環境
•ESP-IDF
•Arduino
•MicroPython
•その他
2019/1/21ESP32 開発環境まとめ2 4
ESP-IDF
2019/1/21ESP32 開発環境まとめ2 5
ESP-IDF (ESP-IoT Development
Framework)
• Espressif公式開発環境
• 言語:C/C++
• GCC toolchain + ESP32用ドライバ + 各種ライブラリ
• crosstool-NG (クロスコンパイル用ツールチェイン・ジェネレータ)を使
用
• ESP32用ドライバは一部はバイナリで提供される
(無線に関する部分など)
• 各種ライブラリにはオープンソースのライブラリが含まれる
• 例:lwip (TCP/IPスタック), mbedtls(TLSライブラリ) 2019/1/21ESP32 開発環境まとめ2 6
ESP-IDFの更新状況
•現時点のバージョン
• Toolchain: crosstool-NG 1.22.0-80 (GCC 5.2.0)
• ESP-IDF: v3.1.2 (release)
2019/1/21ESP32 開発環境まとめ2
バージョン リリース日 差分 (リビジョン数)
3.0 2018年4月24日
3.1 2018年8月31日 1793
3.1.1 2018年11月1日 142
3.1.2 2019年1月2日 82
7
ESP-IDFの最近の更新
• 現時点のバージョン
• Toolchain: crosstool-NG 1.22.0-80 (GCC 5.2.0)
• ESP-IDF: v3.1.2 (release)
• v3.0→v3.1の変更点
• Automatic Light Sleep
• 実行状態のタスクが無いときに自動的にLight Sleepする機能
• Modem Sleepと比べて平均消費電流が1/10くらいになるらしい (30mA→3.1mA)
• Bluetooth Classic: シリアルポート・プロファイル(SPP)のサポート
• 詳細は公式GitHubリポジトリのReleaseを参照
• https://github.com/espressif/esp-idf/releases
2019/1/21ESP32 開発環境まとめ2 8
ESP-IDFの最近の更新
•v3.1→v3.1.2の変更点
• バグ修正のみ
• いろいろ修正が入っている
• 定期的に気になるところを確認した方がよい
•詳細は公式GitHubリポジトリのReleaseを参照
• https://github.com/espressif/esp-idf/releases
2019/1/21ESP32 開発環境まとめ2 9
Arduino
2019/1/21ESP32 開発環境まとめ2 10
Arduino (Arduino core for the ESP32)
•Arduino core for the ESP32
• https://github.com/espressif/arduino-esp32
• ESP32をArduinoとして使えるようにするもの
• ESP-IDFを使って作られている
2019/1/21ESP32 開発環境まとめ2 11
Arduino core for the ESP32の更新状況
•現在の最新
• v1.0.1
• この前更新された
2019/1/21ESP32 開発環境まとめ2
バージョン リリース日 IDFのリビジョン
1.0 2018年7月28日 aaf12390 (v3.2-
dev)
1.0.1 2019年1月11日 e931fe9 (v3.3-
dev)
12
Arduino (Arduino core for the ESP32)
• けっこうバグがあるので、最新版推奨
• Arduino coreのバグ修正 + ESP-IDFのバグ修正
• Wi-Fi, BLE, I2C周りが多い印象
• BLE周りはBLEライブラリを個別に入れた方がいい
• Arduino coreについてくるものは古い
• ライブラリマネージャ→ESP32 BLE Arduino
• ただし、最新版でもわりとバグがある
• 特にGATT Client周り
• BLEデバイスにConnectしただけでpanicなど。
• 正直つらいので筆者はあきらめたが、パッチを送っている人がいる模様
2019/1/21ESP32 開発環境まとめ2 13
MicroPython
2019/1/21ESP32 開発環境まとめ2 14
MicroPython
• 組み込み向けのPython実装
• CPython 3.4 + 3.5の一部の言語機能
• 3.5の機能:type hintsなど
• もともとはSTM32向け
• 公式のPyBoardはSTM32F405 (Arm Cortex-M4F)
• 複数のマイコンに移植されている
• Nordic nRF51822 (Arm Cortex-M0) → micro:bit
• ESP8266
• ESP32
2019/1/21ESP32 開発環境まとめ2 15
ESP32用のMicroPython
• 主に2つある
• MicroPython公式
• MicroPythonのports/esp32以下にある
• LoBo版
• 公式ESP32ポートをベースにいろいろ機能追加されたもの
• https://github.com/loboris/MicroPython_ESP32_psRAM_LoB
o
• コミットログを見る限り個人開発っぽい
• M5Stack用はこれがベース
2019/1/21ESP32 開発環境まとめ2 16
MicroPython公式
•現在のバージョン: 1.9.4 (2018年5月11日)
• IDFのバージョン: 3.0開発版 (3ede9f0)
•月数回くらいのESP32ポート固有の変更頻度
• MicroPython全体では週数回
2019/1/21ESP32 開発環境まとめ2 17
LoBo版
• ベースのMicroPython: v1.9.4より少し新しい (v1.9.4-29-g1b7487e51)
• IDF: v3.0開発版
• ESP-IDFでビルドしやすいようにディレクトリ構成を調整
• MicroPythonがIDFのcomponentになっている
• いろいろモジュールが追加されている
• ハードウェアI2C (公式はソフトウェアI2C)
• ネットワークサーバー (TELNET, FTP)
• Wi-Fi経由でREPLにアクセス可能
• FTP経由でファイルをアップロード可能
• threadモジュールにスレッド間通信の機能追加
2019/1/21ESP32 開発環境まとめ2 18
LoBo版の利点・欠点
• 利点
• 機能が豊富
• 欠点
• 開発者が一人なのでどうなるのかわからない
• あまり手を入れてほしくないところに修正が入っている
• MicroPythonのコア周りの排他制御部分など
• ESP-IDFにも変更が加えられている
• ESP-IDFの最新版に追従するのが難しくなっている
• M5Stack用MicroPythonもLoBo版がベースなので同様
2019/1/21ESP32 開発環境まとめ2 19
どちらを選ぶべきか?
•LoBo版にしかない機能が必要ならLoBo版
• ただし、IDFのバグなどにより安定動作しない可能性があることを
念頭に
•そうでないなら公式版
• Release版がだめならmasterブランチを試す
•M5Stack用は、公式のアップデートを待つか自前でビルド
• 筆者はIDFのバグ回避のためにM5Stack用のコードを修正して
v3.1.1のIDFを使えるようにした
2019/1/21ESP32 開発環境まとめ2 20
その他
2019/1/21ESP32 開発環境まとめ2 21
その他の開発環境
• Moddableがおもしろそう
• JavaScript (ECMAScript 2018)
• ECMAScript 2018の99%くらいの言語機能が使えるJSエンジン (XS)
• ランタイムはLGPLv3ライセンス
• Windows/Linux/MacOSで動作
• ただし、ビルド済みバイナリは配布されていないので、ビルドが必要
• Windowsでのビルドは割と難しい (筆者はうまくいっていない)
• Linux (Ubuntu 16.04)では手順通りでビルドに成功
• 昨日ビルドしたばかりなのでまだ試せていない
2019/1/21ESP32 開発環境まとめ2 22
おしまい
2019/1/21ESP32 開発環境まとめ2 23

ESP32開発環境まとめ2