SlideShare a Scribd company logo
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

More Related Content

PPTX
ESP32開発環境まとめ
PPTX
ESP32特集の内容紹介
PPTX
M5StackにFPGAをつないでみた
PPTX
M5StackをRustで動かす
PDF
Rust で RTOS を考える
PDF
PDF
Takep lpc1114-190614
PDF
プログラマの為のESP-WROOM-02開発ボード組み立て
ESP32開発環境まとめ
ESP32特集の内容紹介
M5StackにFPGAをつないでみた
M5StackをRustで動かす
Rust で RTOS を考える
Takep lpc1114-190614
プログラマの為のESP-WROOM-02開発ボード組み立て

What's hot (18)

PPTX
Rclex: ElixirでROS!!
PDF
Esp8266でラジコン基板
PDF
Nervesが開拓する「ElixirでIoT」の新世界
PPTX
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
PPTX
PSoC4 BLEで作る簡単無線センサーユニット
PDF
Esp32でiot
PDF
GR-SAKURAでEtherCAT
PDF
Internet Week 2018 知っておくべきIPv6とセキュリティの話
PDF
QoS for ROS 2 Dashing/Eloquent
PDF
Big Raspberry JAM TOKYO 2013 Hardware
PDF
サーバー初心者のためのWordPressサイト構築手順〜付録〜 MacターミナルやTera Termを使用したSSH接続方法など
PPTX
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
PDF
関数型言語ElixirのIoTシステム開発への展開
PPTX
Osc2017 nagoya
PDF
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
PDF
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
PDF
20211023 node-red con 2021 kitazaki Japanese v1
PDF
Pythonにおけるデバッガツールpdbについて
Rclex: ElixirでROS!!
Esp8266でラジコン基板
Nervesが開拓する「ElixirでIoT」の新世界
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
PSoC4 BLEで作る簡単無線センサーユニット
Esp32でiot
GR-SAKURAでEtherCAT
Internet Week 2018 知っておくべきIPv6とセキュリティの話
QoS for ROS 2 Dashing/Eloquent
Big Raspberry JAM TOKYO 2013 Hardware
サーバー初心者のためのWordPressサイト構築手順〜付録〜 MacターミナルやTera Termを使用したSSH接続方法など
ElixirでIoT!?ナウでヤングでcoolなNervesフレームワーク
関数型言語ElixirのIoTシステム開発への展開
Osc2017 nagoya
つながるロボット 〜分散協調ロボットの開発を加速化するROSの紹介〜
03 第3.6節-第3.8節 ROS2の基本機能(2/2)
20211023 node-red con 2021 kitazaki Japanese v1
Pythonにおけるデバッガツールpdbについて
Ad

More from Kenta IDA (7)

PPTX
カスタムブロックで自作モジュールをUIFlow対応にする
PPTX
Using SORACOM 3G Module From MicroPython
PPTX
MicroPythonのCモジュールを作ってみる
PPTX
EC2 F1 Virtual JTAG
PPTX
PYNQ単体でUIを表示してみる(PYNQまつり)
PPTX
Windows10 IoT CoreとBLE
PPTX
おそらく明日から役にたつC++11新機能
カスタムブロックで自作モジュールをUIFlow対応にする
Using SORACOM 3G Module From MicroPython
MicroPythonのCモジュールを作ってみる
EC2 F1 Virtual JTAG
PYNQ単体でUIを表示してみる(PYNQまつり)
Windows10 IoT CoreとBLE
おそらく明日から役にたつC++11新機能
Ad

ESP32開発環境まとめ2