ESP32 開発キット開発ボード
製品情報
仕様
- 製品: ESP32
- プログラミングガイド: ESP-IDF
- リリースバージョン: v5.0.9
- メーカー: Espressif Systems
- 発売日: 16年2025月XNUMX日
製品使用説明書
1. 始めましょう
ESP32を使い始める前に、
続く:
1.1 はじめに
の基本的な機能と性能について学びます
ESP32。
1.2 必要なもの
必要なハードウェアとソフトウェアがあることを確認してください。
- ハードウェア: 必要なハードウェアのリストを確認する
コンポーネント。 - ソフトウェア: 必要なソフトウェアをインストールする
コンポーネント。
1.3 インストール
IDEをインストールしてセットアップするには、以下の手順に従ってください。
環境:
- IDE: 推奨IDEをインストールする
ESP32 をプログラミングします。 - 手動インストール: 手動で設定する
必要に応じて環境を変更します。
1.4 最初のプロジェクトを構築する
ESP32 を使用して最初のプロジェクトを作成し、ビルドします。
1.5 ESP-IDFをアンインストールする
必要に応じて、ESP-IDFをアンインストールする方法を学びます
システム。
2. APIリファレンス
詳細についてはAPIドキュメントを参照してください。
アプリケーションプロトコル、エラー処理、および構成
構造。
よくある質問(FAQ)
Q: ESP32 の一般的な問題をトラブルシューティングするにはどうすればよいですか?
A: プログラミングガイドのトラブルシューティングセクションを参照してください。
または製造元にアクセスしてください webサポート リソースのサイト。
Q: ESP-IDF を他のマイクロコントローラで使用できますか?
A: ESP-IDFはESP32用に特別に設計されていますが、
他の Espressif マイクロコントローラとの互換性。
ESP32
ESP-IDFプログラミングガイド
リリース v5.0.9 Espressif Systems 2025年5月16日
目次
目次
i
1はじめに
3
1.1 はじめに . ...
1.2 必要なもの . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 ハードウェア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.2 ソフトウェア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 インストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3.1 IDE 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 14
1.3.2 手動インストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 最初のプロジェクトを構築する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.5 ESP-IDF のアンインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2 APIリファレンス
45
2.1 API 規約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.1 エラー処理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.2 構成構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.1.3 プライベート API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.4 exのコンポーネントample プロジェクト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.1.5 API の安定性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.2 アプリケーションプロトコル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.1 ASIO ポート。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 48
2.2.2 ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.2.3 ESP-MQTT . ...
2.2.4 ESP-TLS . ...
2.2.5 ESP HTTP クライアント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
2.2.6 ESP ローカル制御 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.2.7 ESP シリアルスレーブリンク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
2.2.8 ESP x509 証明書バンドル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
2.2.9 HTTP サーバー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2.2.10 HTTPS サーバー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
2.2.11 ICMPエコー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
2.2.12 mDNS サービス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.13 Mbed TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
2.2.14 IP ネットワーク層 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3 Bluetooth API . ...
2.3.1 Bluetooth® 共通 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
2.3.2 Bluetooth® 低エネルギー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
2.3.3 Bluetooth® クラシック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
2.3.4 コントローラと HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485
2.3.6 NimBLE ベースのホスト API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
2.4 エラーコードリファレンス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
2.5 ネットワーク API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
2.5.1 Wi-Fi 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 776
2.5.2 イーサネット . ...
2.5.3 スレッド . ...
i
2.5.4 ESP-NETIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 IP ネットワーク層 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 アプリケーション層 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 周辺機器 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 アナログ-デジタル コンバーター (ADC) ワンショット モード ドライバー。 . . . . . . . . . . . . . . . . 977 2.6.2 アナログ-デジタルコンバーター(ADC)連続モードドライバー。 . . . . . . . . . . . . . . 986 2.6.3 アナログ-デジタルコンバーター(ADC)キャリブレーションドライバー。 . . . . . . . . . . . . . . . . . . 993 2.6.4 クロックツリー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 デジタル-アナログコンバーター(DAC) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO と RTC GPIO 。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 汎用タイマー (GPTimer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 インターインテグレーテッドサーキット(I2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 IC間サウンド(I2S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 LCD 。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 LED制御(LEDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 モーター制御パルス幅変調器(MCPWM) . . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 パルスカウンタ(PCNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 リモートコントロールトランシーバー(RMT) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 SDプルアップ要件。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 SDMMC ホスト ドライバー。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 SD SPI ホスト ドライバー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 SDIO カード スレーブ ドライバー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 シグマデルタ変調(SDM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 SPI マスター ドライバー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 SPI スレーブ ドライバー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (セキュアエレメント) . . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 タッチセンサー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 2線式自動車用インターフェース(TWAI) . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 ユニバーサル非同期送受信機(UART) . . . . . . . . . . . . . . . . . . 1317 2.7 プロジェクト構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 プロジェクト構成メニュー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 sdkconfig.defaults の使用。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Kconfig フォーマット規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Kconfig オプションの下位互換性。 . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 設定オプションリファレンス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 プロビジョニング API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 プロトコル通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 統合プロビジョニング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Wi-Fi プロビジョニング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 ストレージ API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fileシステム サポート . ... 1703 2.9.4 NVS パーティション ジェネレーター ユーティリティ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 SD/SDIO/MMC ドライバー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 SPI フラッシュ API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 スピッフ Fileシステム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 仮想 fileシステム コンポーネント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 ウェア レベリング API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 システム API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 アプリ イメージ形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 アプリケーション レベルのトレース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 外部スタックを使用した関数の呼び出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813 2.10.4 チップリビジョン . ... 2.10.7 エラーコードとヘルパー関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii
2.10.8 ESP HTTPS OTA . ...view) . ... . . . 1988 2.10.13 ヒープ メモリの割り当て . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 ヒープ メモリのデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2021 2.10.15 高解像度タイマー (ESP タイマー) . . . . . . . . . . . . . . . . . . . . 2.10.16 内部および不安定な API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 プロセッサ間呼び出し . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2040 2.10.18 割り込み割り当て . . . . . . . . . . . . . . . . . . . 2.10.19 ログライブラリ . ... 2073 2.10.22 パフォーマンス モニター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2084 2.10.23 電源管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2087 2.10.24 POSIX スレッドのサポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 乱数生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2097 2.10.26 スリープ モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2099 2.10.27 SoC 機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 システム時間 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2121 2.10.29 himem 割り当て API . . . . . . . 2.10.30 ULP コプロセッサ プログラミング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2129 2.10.31 ウォッチドッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2161
3ハードウェアリファレンス
2167
3.1 チップシリーズの比較 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167
3.1.1 関連文書 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170
4つのAPIガイド
2171
4.1 アプリケーションレベルトレースライブラリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.1オーバーview 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2171
4.1.2 動作モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171
4.1.3 構成オプションと依存関係 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172
4.1.4 このライブラリの使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173
4.2 アプリケーションの起動フロー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2181
4.2.1 最初のtage ブートローダー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.2秒tage ブートローダー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182
4.2.3 アプリケーションの起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183
4.3 Bluetooth® クラシック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184
4.3.1オーバーview 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2184
4.4 Bluetooth® 低エネルギー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186
4.4.1オーバーview 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2186
4.4.2 開始する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191
4.4.3プロfile 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2240
4.5 ブートローダー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284
4.5.1 ブートローダの互換性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.2 ログレベル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285
4.5.3 工場出荷時設定へのリセット . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.4 テストファームウェアからの起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286
4.5.5 ロールバック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.6 ウォッチドッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.7 ブートローダのサイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.8 ディープスリープからの高速起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.5.9 カスタム ブートローダ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287
4.6 ビルドシステム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288
4.6.1オーバーview 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2288
4.6.2 ビルド システムの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289
iii
4.6.3例ample プロジェクト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 プロジェクト CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 コンポーネント CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 コンポーネント構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.7 プリプロセッサ定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.8 コンポーネント要件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 プロジェクトの一部のオーバーライド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 構成専用コンポーネント . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 CMake のデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 Example コンポーネント CMakeLists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 カスタム sdkconfig デフォルト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.14 フラッシュ引数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2305 4.6.15 ブートローダーの構築 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 純粋な CMake コンポーネントの記述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 コンポーネントを使用したサードパーティの CMake プロジェクトの使用 . . . . . . . . . . . . . . . . . 2306 4.6.18 コンポーネントでのビルド済みライブラリの使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 カスタム CMake プロジェクトで ESP-IDF を使用する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 ESP-IDF CMake ビルド システム API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File グロブと増分ビルド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 ビルド システムのメタデータ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.23 ビルド システムの内部 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2313 4.6.24 ESP-IDF GNU Make システムからの移行 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 コアダンプ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.1 以上view 2316 4.7.2 設定 . ... 4.7.4 コア ダンプを UART に出力する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 バックトレース内の ROM 関数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.6 オンデマンドで変数をダンプする . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.7 espcoredump.py の実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 ディープ スリープ ウェイク スタブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.1 ウェイク スタブのルール . . . . . . . . . . . . . . 4.8.2 スタブの実装 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.3 RTC メモリへのコードのロード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.4 RTC メモリへのデータのロード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 ウェイク スタブの CRC チェック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.6 Example . ...view 2324 4.9.2 エラー コード . ... . . . 2324 4.9.4 ESP_ERROR_CHECK マクロ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 ESP_ERROR_CHECK_WITHOUT_ABORT マクロ . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 ESP_RETURN_ON_ERROR マクロ . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.7 ESP_GOTO_ON_ERROR マクロ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 ESP_RETURN_ON_FALSE マクロ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 ESP_GOTO_ON_FALSE マクロ . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 マクロのチェック Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 エラー処理パターン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.12 C++ 例外 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10 ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.1 以上view 2327 4.10.2 はじめに . ... 4.10.4 ネットワークの構築 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 ネットワークの管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 データ転送 . . . . . . . . . . . . . . . 4.10.7 チャネル切り替え . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2344
iv
4.10.8 パフォーマンス . ... 4.11.1 Wi-Fi、イーサネット、および IP イベント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.2 メッシュ イベント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2349 4.11.3 Bluetooth イベント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12 致命的なエラー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.1 以上view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 パニックハンドラ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 レジスタダンプとバックトレース。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 GDB スタブ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 RTC ウォッチドッグ タイムアウト。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 グル瞑想の誤り。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 その他の致命的なエラー。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 フラッシュ暗号化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 はじめに . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 関連するeFuses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 フラッシュ暗号化プロセス。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 フラッシュ暗号化設定。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 起こりうる障害 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 ESP32 フラッシュ暗号化ステータス。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 暗号化されたフラッシュのデータの読み取りと書き込み。 . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 暗号化されたフラッシュを更新しています。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 フラッシュ暗号化を無効にする . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 フラッシュ暗号化に関する重要なポイント。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 フラッシュ暗号化の制限事項。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 フラッシュ暗号化とセキュアブート。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 高度な機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 技術詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 ハードウェア抽象化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 アーキテクチャ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 LL(低レベル)レイヤー。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (ハードウェア抽象化レイヤー) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 高レベル割り込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 割り込みレベル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 注記 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG デバッグ . ... . . . . . . . . . . . . . . . . . . 2379 4.16.3 Jの選択TAG アダプタ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 OpenOCD のセットアップ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.5 ESP32 ターゲットの設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.6 デバッガの起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 Ex のデバッグamples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 ソースからの OpenOCD のビルド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.9 ヒントと注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2391 4.16.10 関連ドキュメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 リンカースクリプトの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.1 以上view 4.17.2 クイックスタート . ... . . . . . . . . 2424 4.18 lwIP . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 Netconn API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.4 lwIP FreeRTOS タスク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.5 IPv6 サポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 esp-lwip のカスタム変更 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2436
v
4.18.7 パフォーマンスの最適化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 メモリの種類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439
4.19.1 DRAM (データ RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (命令 RAM) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (フラッシュから実行されるコード) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (フラッシュに保存されたデータ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 RTC 低速メモリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.6 RTC 高速メモリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.7 DMA 対応要件 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 スタック内の DMA バッファー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . 4.20.1 OpenThread スタックのモード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 OpenThread アプリケーションの記述方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 OpenThread 境界ルーター . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 パーティション テーブル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21.1 以上view 4.21.2 組み込みパーティション テーブル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.3 カスタム テーブルの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.21.4 バイナリ パーティション テーブルの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 パーティション サイズのチェック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.6 パーティション テーブルのフラッシュ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.21.7 パーティション ツール (parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 パフォーマンス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.1 パフォーマンスを最適化する方法 . . . . . . . . . 2450 4.22.2 ガイド . ... . 2468 4.23.1 部分キャリブレーション . ... . . . . . . . . . . . . . . . . . . . . 2469 4.23.4 PHY 初期化データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 API リファレンス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.24 セキュア ブート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.2 セキュア ブート プロセス終了view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 キー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.4 ブートローダのサイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.24.5 セキュア ブートを有効にする方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 再フラッシュ可能なソフトウェア ブートローダー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 セキュア ブート署名キーの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 イメージのリモート署名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 セキュア ブートのベスト プラクティス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.10 技術的な詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . 2476 4.24.11 セキュア ブートとフラッシュ暗号化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 ハードウェア セキュア ブートを使用しない署名付きアプリの検証 . . . . . . . . . . . . . . . . . . . . . . 2478 4.24.13 高度な機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 セキュア ブート V2 . ...tages . ... . . . . . . . . 2480 4.25.5 セキュア パディング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 署名ブロックの検証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.7 イメージの検証 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 ブートローダのサイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.9 eFuse の使用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.10 セキュア ブート V2 を有効にする方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 セキュア ブートを有効にした後の制限 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 セキュア ブート署名キーの生成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482
vi
4.25.13 イメージのリモート署名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 セキュア ブートのベスト プラクティス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.15 技術的な詳細 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.16 セキュア ブートとフラッシュ暗号化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 ハードウェア セキュア ブートを使用しない署名付きアプリの検証 . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.18 高度な機能 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26 外部 RAM のサポート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.2 ハードウェア . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.3 外部 RAM の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 制限事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2487 4.26.5 初期化の失敗 . . . . . . . . 2488 4.26.6 チップリビジョン . ... . . 2488 4.27.1 以上view 2488 4.27.2 FreeRTOS ネイティブ API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.3 Pthread API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.27.4 C11 標準 . ... 2489 4.28.1 IDF フロントエンド – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 IDF Docker イメージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 IDF Windows インストーラー . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 IDF コンポーネント マネージャー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang Tidy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2497 4.28.6 ダウンロード可能なツール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 ESP32 での単体テスト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.1 通常のテストケース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2512 4.29.2 マルチデバイステストケース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 マルチtage テストケース。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 異なるターゲットに対するテスト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 ユニットテストアプリケーションの構築。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 ユニットテストの実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 キャッシュ補正タイマーを使用したタイミング コード。 . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 モック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Linux でのユニットテスト。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 組み込みソフトウェアテスト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Linux ホスト上の IDF ユニット テスト。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 Wi-Fi ドライバー。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 ESP32 Wi-Fi 機能リスト。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Wi-Fi アプリケーションの記述方法。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 ESP32 Wi-Fi API エラー コード。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 ESP32 Wi-Fi API パラメータの初期化。 . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 ESP32 Wi-Fi プログラミング モデル。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 ESP32 Wi-Fi イベントの説明。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 ESP32 Wi-Fi ステーションの一般的なシナリオ。 . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 ESP32 Wi-Fi AP の一般的なシナリオ。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 ESP32 Wi-Fi スキャン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 ESP32 Wi-Fi ステーション接続シナリオ。 . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 複数の AP が見つかった場合の ESP32 Wi-Fi ステーションの接続。 . . . . . . . . . . . . 2543 4.31.12 Wi-Fi 再接続 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Wi-Fi ビーコン タイムアウト。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 ESP32 Wi-Fi 構成。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy ConnectTM (DPP) 。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 ワイヤレスネットワーク管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 無線リソース測定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 高速 BSS 遷移 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 ESP32 Wi-Fi 省電力モード。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 ESP32 Wi-Fi スループット。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
七
4.31.21 Wi-Fi 80211 パケット送信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 Wi-Fi スニファー モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2554 4.31.23 Wi-Fi 複数アンテナ . . . . . . . . . . . . . . . . . . . . 2554 4.31.24 Wi-Fi チャネル状態情報 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Wi-Fi チャネル状態情報の構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . . . 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2557 4.31.27 Wi-Fi QoS 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2557 4.31.28 Wi-Fi AMSDU 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2558 4.31.29 Wi-Fi フラグメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 WPS 登録者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.31 Wi-Fi バッファー使用量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Wi-Fi パフォーマンスを向上させる方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Wi-Fi メニュー構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2562 4.31.34 トラブルシューティング . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 Wi-Fi セキュリティ . ... 2568 4.32.2 保護された管理フレーム (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi エンタープライズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3 パーソナル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 RF 共存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33.1 以上view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 ESP32 でサポートされている共存シナリオ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 共存のメカニズムとポリシー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 共存機能の使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 再現可能なビルド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.2 ビルドが再現できない理由 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 ESP-IDF で再現可能なビルドを有効にする . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.4 再現可能なビルドを実現する方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.5 再現可能なビルドとデバッグ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 再現可能なビルドに影響する要因 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 低電力モードユーザーガイド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578
5つの移行ガイド
2579
5.1 ESP-IDF 5.x 移行ガイド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
5.1.1 4.4 から 5.0 への移行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579
6つのライブラリとフレームワーク
2611
6.1 クラウド フレームワーク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.1 ESP レインメーカー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.2 AWS IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.3 Azure IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.4 Google IoT コア . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.5 アリユンIoT。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2611
6.1.6 ジョイリンク IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611
6.1.7 テンセント IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.1.8 テンセンチュン IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.1.9 百度 IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2 Espressifns フレームワーク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.1 Espressif オーディオ開発フレームワーク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.3 Espressif DSP ライブラリ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612
6.2.4 ESP-WIFI-MESH 開発フレームワーク . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.5 ESP-WHO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.6 ESP レインメーカー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.7 ESP-IoT ソリューション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
6.2.8 ESP プロトコル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613
八
6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614
7 貢献ガイド
2615
7.1 貢献方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.2 貢献する前に . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.3 プルリクエストプロセス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615
7.4 法的部分 . ...
7.5 関連文書 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5.1 Espressif IoT 開発フレームワーク スタイルガイド . . . . . . . . . . . . . . . . . . . . . . . 2616
7.5.2 ESP-IDF プロジェクトの pre-commit フックをインストールする . . . . . . . . . . . . . . . . . . . . . . . . . . 2623
7.5.3 コードのドキュメント化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624
7.5.4 Exの作成ampレ。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2629
7.5.5 API ドキュメントテンプレート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630
7.5.6 貢献者契約 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632
7.5.7 著作権ヘッダーガイド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634
7.5.8 Pytest を使用した ESP-IDF テスト ガイド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635
8 ESP-IDFのバージョン
2645
8.1 リリース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.2 どのバージョンから始めるべきですか? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.3 バージョン管理スキーム . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645
8.4 サポート期間 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2646
8.5 現在のバージョンの確認 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647
8.6 Git ワークフロー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7 ESP-IDF の更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648
8.7.1 安定版リリースへのアップデート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.2 プレリリースバージョンへの更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.3 マスターブランチへの更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649
8.7.4 リリースブランチへの更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2650
9 リソース
2651
9.1 プラットフォームIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.1 PlatformIO とは何ですか? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.2 インストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651
9.1.3 構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.4 チュートリアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.5 プロジェクト例ampレ。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.1.6 次のステップ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
9.2 便利なリンク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652
10 著作権とライセンス
2653
10.1 ソフトウェアの著作権 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.1 ファームウェアコンポーネント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653
10.1.2 ドキュメント . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.2 ROM ソースコードの著作権 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654
10.3 Xtensa libhal MIT ライセンス。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2655
10.4 TinyBasic Plus MIT ライセンス。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 2655
10.5 TJpgDec ライセンス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655
11 について
2657
12 言語を切り替える
2659
索引
2661
索引
2661
ix
x
目次
これはEspressif IoT開発フレームワーク(esp-idf)のドキュメントです。ESP-IDFは、ESP32、ESP32-S、ESP32-CシリーズSoCの公式開発フレームワークです。このドキュメントでは、ESP32 SoCでESP-IDFを使用する方法について説明します。
始める
APIリファレンス
APIガイド
エスプレシフ システムズ
1 ドキュメントのフィードバックを送信
リリース v5.0.9
目次
エスプレシフ システムズ
2 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章
始める
このドキュメントは、Espressif社のESP32チップをベースにしたハードウェア用のソフトウェア開発環境の構築を支援することを目的としています。その後、簡単な例題を実行します。ample では、ESP-IDF (Espressif IoT Development Framework) を使用してメニューを構成し、ESP32 ボードにファームウェアをビルドしてフラッシュする方法を説明します。
注: これはESP-IDFの安定バージョンv5.0.9に関するドキュメントです。他のESP-IDFバージョンも利用可能です。
1.1 はじめに
ESP32は、以下の機能を統合したシステムオンチップです。 · Wi-Fi(2.4 GHz帯域) · Bluetooth · デュアル高性能Xtensa® 32ビットLX6 CPUコア · 超低消費電力コプロセッサ · 複数の周辺機器
40nmテクノロジーを採用したESP32は、堅牢で高度に統合されたプラットフォームを提供し、効率的な電力使用、コンパクトな設計、セキュリティ、高性能、そして信頼性に対する継続的な要求に応えます。Espressifは、アプリケーション開発者がESP32シリーズのハードウェアを使用してアイデアを実現できるよう、基本的なハードウェアおよびソフトウェアリソースを提供しています。Espressifのソフトウェア開発フレームワークは、Wi-Fi、Bluetooth、電源管理、その他複数のシステム機能を備えたIoT(モノのインターネット)アプリケーションの開発を目的としています。
1.2 必要なもの
1.2.1 ハードウェア
· ESP32 ボード。 · USB ケーブル – USB A / micro USB B。 · Windows、Linux、または macOS を実行しているコンピューター。
注:現在、一部の開発ボードはUSB Type Cコネクタを使用しています。ボードを接続するための適切なケーブルをご用意ください。
以下にリストされている ESP32 公式開発ボードのいずれかをお持ちの場合は、リンクをクリックしてハードウェアの詳細を確認できます。
3
第1章 はじめに
ESP32-開発キットS(-R)
このユーザーガイドでは、Espressif社製のESP32ベースのフラッシュボードであるESP32-DevKitS(-R)に関する情報を提供します。ESP32-DevKitS(-R)は、ESP32-DevKitSとESP32-DevKitS-Rという2つのボード名を組み合わせたものです。Sはスプリング、RはWROVERを表します。
ESP32開発キット
ESP32-開発キットS-R
この文書は、以下の主要なセクションで構成されています。 · はじめに:view ESP32-DevKitS(-R) の概要と、開始するためのハードウェア/ソフトウェアのセットアップ手順を示します。 · ハードウェアリファレンス: ESP32-DevKitS(-R)ns ハードウェアに関する詳細情報を提供します。 · 関連ドキュメント: 関連ドキュメントへのリンクを提供します。
入門 このセクションでは、ESP32-DevKitS(-R) の使い方を説明します。まず、ESP32-DevKitS(-R) に関するいくつかの入門セクションから始まり、「ボードへの書き込み方法」セクションでは、ESP32-DevKitS(-R) にモジュールをマウントし、準備を整え、ファームウェアを書き込みます。
以上view ESP32-DevKitS(-R)は、ESP32専用に設計されたEspressifnsのフラッシュボードです。ESP32モジュールを電源や信号線にはんだ付けすることなく、フラッシュ書き込みが可能です。モジュールを装着すれば、ESP32-DevKitCと同様にミニ開発ボードとしても使用できます。
ESP32-DevKitS および ESP32-DevKitS-R ボードは、次の ESP32 モジュールに適合するようにスプリング ピンのレイアウトのみが異なります。
· ESP32-開発キット: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER (PCB & IPEX) ESP32-WROVER-B (PCB & IPEX) ESP32-WROVER-E ESP32-WROVER-IE
上記モジュールの詳細については、ESP32 シリーズ モジュールを参照してください。
コンポーネントの説明
エスプレシフ システムズ
4 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
図1: ESP32-DevKitS – 前面
エスプレシフ システムズ
図2:ESP32-DevKitS-R – 前面5
ドキュメントのフィードバックを送信する
リリース v5.0.9
第1章 はじめに
主要コンポーネント スプリングピン 2.54 mm メスヘッダー
USB-UARTブリッジLDOマイクロUSBコネクタ/マイクロUSBポートENボタンブートボタン
電源オンLED
説明:モジュールをカチッと押し込んでください。ピンはモジュールのキャスタレーション穴に収まります。これらのメスヘッダーは、このボードに実装されたモジュールのピンに接続されます。メスヘッダーの説明については、ヘッダーブロックを参照してください。シングルチップUSB-UARTブリッジは、最大3Mbpsの転送速度を提供します。
5V~3.3V低ドロップアウト電圧tage レギュレータ (LDO)。
USBインターフェース。ボードへの電源供給、およびコンピューターとボード間の通信インターフェース。
リセットボタン。
ダウンロードボタン。Bootキーを押しながらENキーを押すと、シリアルポート経由でファームウェアをダウンロードするファームウェアダウンロードモードが開始されます。
USB または電源がボードに接続されると点灯します。
ボードのフラッシュ方法 ESP32-DevKitS(-R) の電源を入れる前に、明らかな損傷の兆候がなく良好な状態であることを確認してください。
必要なハードウェア · お好みの ESP32 モジュール · USB 2.0 ケーブル (Standard-A - Micro-B) · Windows、Linux、または macOS が動作するコンピューター
ハードウェアのセットアップ 以下の手順に従って、お好みのモジュールを ESP32-DevKitS(-R) にマウントしてください。
・モジュールをESP32-DevKitS(-R)ボードに慎重に置きます。モジュールのキャスタレーション穴がボードのスプリングピンと揃っていることを確認してください。
・カチッと音がするまでモジュールをボードに押し込みます。・すべてのスプリングピンが溝に正しく挿入されているか確認します。スプリングピンの位置がずれている場合は、
ピンセットを使って城郭状の穴に差し込みます。
ソフトウェア設定
推奨方法 ESP-IDF開発フレームワークは、ESP32-DevKitS(-R)にバイナリを書き込むための推奨方法を提供します。「Get Started」に進んでください。「Installation」セクションでは、開発環境のセットアップとアプリケーションのフラッシュ方法について簡単に説明します。ampESP32-DevKitS(-R) にインストールします。
代替方法:Windowsユーザーは、Flashダウンロードツールを使用してバイナリをフラッシュすることもできます。ダウンロードして解凍し、docフォルダ内の指示に従ってください。
注: 1. バイナリをフラッシュするには fileESP32はファームウェアダウンロードモードに設定する必要があります。これは、フラッシュツールによって自動的に実行されるか、ブートボタンを押しながらENボタンをタップすることで実行されます。2. バイナリをフラッシュした後 fileフラッシュ ダウンロード ツールは、ESP32 モジュールを再起動し、フラッシュされたアプリケーションをデフォルトで起動します。
ボード寸法 内容物と梱包
エスプレシフ システムズ
6 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに 図3: ESP32-DevKitSボードの寸法 – 背面
エスプレシフ システムズ
図4:ESP32-DevKitS-Rボードの寸法 – 背面7
ドキュメントのフィードバックを送信する
リリース v5.0.9
第1章 はじめに
小売注文 数個注文する場合ampESP32-DevKitS(-R)は、販売店の都合により、静電気防止袋または任意の包装で個別に梱包されて出荷されます。小売のご注文は、https://www.espressif.com/en/contact-us/get-s をご覧ください。ampレ。
卸売注文について 大量注文の場合、ボードは大きな段ボール箱でお届けします。卸売注文については、https://www.espressif.com/en/contact-us/sales-questions をご覧ください。
ハードウェアリファレンス
ブロック図 以下のブロック図は、ESP32-DevKitS(-R) のコンポーネントとそれらの相互接続を示しています。
図5:ESP32-DevKitS(-R)(クリックして拡大)
電源オプションボードに電源を供給するには、相互に排他的な3つの方法があります。·マイクロUSBポート、デフォルトの電源·5VとGNDヘッダーピン·3V3とGNDヘッダーピン
最初のオプションであるマイクロ USB ポートを使用することをお勧めします。
エスプレシフ システムズ
.
ラベル信号
L1 3V3 VDD 3V3
L2 EN チップ_PU
L3 VP センサー_VP
L4 VNセンサー_VN
L5 34
GPIO34
L6 35
GPIO35
L7 32
GPIO32
L8 33
GPIO33
次のページに続く
8 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
表1 前ページからの続き
.
ラベル信号
L9 25
GPIO25
L10 26
GPIO26
L11 27
GPIO27
L12 14
GPIO14
L13 12
GPIO12
L14 GND GND
L15 13
GPIO13
L16 D2 SD_DATA2
L17 D3 SD_DATA3
L18 コマンド SD_CMD
L19 5V
外部5V
R1 GND GND
R2 23
GPIO23
R3 22
GPIO22
R4 TX U0TXD
R5 RX U0RXD
R6 21
GPIO21
R7 GND GND
R8 19
GPIO19
R9 18
GPIO18
R10 5
GPIO5
R11 17
GPIO17
R12 16
GPIO16
R13 4
GPIO4
R14 0
GPIO0
R15 2
GPIO2
R16 15
GPIO15
R17 D1 SD_DATA1
R18 D0 SD_DATA0
R19 CLK SD_CLK
ヘッダー ブロック ヘッダー ブロックのイメージについては、「コンポーネントの説明」を参照してください。
関連文書
· ESP32-DevKitS(-R) 回路図 (PDF) · ESP32 データシート (PDF) · ESP32-WROOM-32 データシート (PDF) · ESP32-WROOM-32D & ESP32-WROOM-32U データシート (PDF) · ESP32-SOLO-1 データシート (PDF) · ESP32-WROVER データシート (PDF) · ESP32-WROVER-B データシート (PDF) · ESP 製品セレクター
ESP32-DevKitM-1
このユーザー ガイドは、ESP32-DevKitM-1 の使用を開始する際に役立ち、より詳細な情報も提供します。
ESP32-DevKitM-1は、Espressif社製のESP32-MINI-1(1U)ベースの開発ボードです。ほとんどのI/Oピンは両側のピンヘッダーに分岐されており、インターフェースを容易にしています。ユーザーは、ジャンパーワイヤで周辺機器を接続するか、ESP32-DevKitM-1をブレッドボードに取り付けることができます。
エスプレシフ システムズ
9 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
ESP32-DevKitM-1 – フロント
ESP32-DevKitM-1 – アイソメトリック
この文書は、以下の主要なセクションで構成されています。 · はじめに:view ESP32-DevKitM-1 の概要と、開始するためのハードウェア/ソフトウェアのセットアップ手順を示します。 · ハードウェア リファレンス: ESP32-DevKitM-1ns ハードウェアに関する詳細情報を提供します。 · 関連ドキュメント: 関連ドキュメントへのリンクを示します。
はじめに このセクションでは、ESP32-DevKitM-1 の使い方を説明します。まず、ESP32-DevKitM-1 に関するいくつかの入門セクションから始まり、「アプリケーション開発の開始」セクションでは、ハードウェアの初期セットアップ方法と、ESP32-DevKitM-1 にファームウェアをフラッシュする方法を説明します。
以上view これは、次の機能を備えた小型で便利な開発ボードです。
· ESP32-MINI-1、または ESP32-MINI-1U モジュール · ボードの電源も供給する USB シリアルプログラミングインターフェース · ピンヘッダー · リセットおよびファームウェアダウンロードモードの起動用のプッシュボタン · その他のコンポーネント
内容物とパッケージ
小売注文 数個注文する場合ampただし、各 ESP32-DevKitM-1 は、販売店に応じて、静電気防止用バッグまたはその他のパッケージに入った個別のパッケージで提供されます。
小売注文については、https://www.espressif.com/en/contact-us/get-s をご覧ください。ampレ。
卸売注文について 大量注文の場合、ボードは大きな段ボール箱でお届けします。卸売注文については、https://www.espressif.com/en/contact-us/sales-questions をご覧ください。
コンポーネントの説明 次の図と表は、ESP32-DevKitM-1ボードの主要なコンポーネント、インターフェース、およびコントロールについて説明しています。例として、ESP32-MINI-1モジュールを搭載したボードを取り上げます。amp以下のセクションでご確認ください。
エスプレシフ システムズ
10 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
図6: ESP32-DevKitM-1 – 前面
主要コンポーネントオンボードモジュール
5 V~3.3 V LDOブートボタン
リセットボタンマイクロUSBポート
USB-UART ブリッジ 3.3 V 電源オン LED
I/Oコネクタ
説明
ESP32-MINI-1モジュールまたはESP32-MINI-1Uモジュール。ESP32-MINI-1にはオンボードPCBアンテナが付属し、ESP32-MINI-1Uには外部アンテナコネクタが付属します。どちらのモジュールも、4MBのフラッシュメモリをチップに内蔵しています。詳細は、ESP32-MINI-1およびESP32-MINI-1Uのデータシートをご覧ください。
電源レギュレーターは 5 V を 3.3 V に変換します。
ダウンロードボタン。Bootを押したままResetを押すと、シリアルポート経由でファームウェアをダウンロードするファームウェアダウンロードモードが開始されます。
リセットボタン
USBインターフェース。 ボードの電源、およびコンピューターと ESP32 チップ間の通信インターフェイス。
シングル USB-UART ブリッジ チップは、最大 3 Mbps の転送速度を提供します。
USBがボードに接続されると点灯します。詳細は関連ドキュメントの回路図をご覧ください。利用可能なすべてのGPIOピン(フラッシュ用のSPIバスを除く)は、ボード上のピンヘッダーに分割されています。ユーザーはESP32チップをプログラムすることで、複数の機能を有効にすることができます。
アプリケーション開発を開始する ESP32-DevKitM-1 の電源を入れる前に、明らかな損傷の兆候がなく良好な状態であることを確認してください。
必要なハードウェア · ESP32-DevKitM-1 · USB 2.0 ケーブル (Standard-A to Micro-B) · Windows、Linux、または macOS が動作するコンピューター
ソフトウェアのセットアップ「はじめに」に進んでください。「インストール」セクションでは、開発環境をセットアップし、アプリケーションをフラッシュする方法をすぐに説明します。ampESP32-DevKitM-1 にファイルを追加します。
エスプレシフ システムズ
11 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
注意:2021年12月2日より前に製造されたESP32-DevKitM-1ボードには、シングルコアモジュールが搭載されています。搭載されているモジュールを確認するには、PCN-2021-021のモジュールマーキング情報をご確認ください。ボードにシングルコアモジュールが搭載されている場合は、アプリケーションをフラッシュする前に、menuconfigでシングルコアモード(CONFIG_FREERTOS_UNICORE)を有効にしてください。
ハードウェア リファレンス ブロック図 以下のブロック図は、ESP32-DevKitM-1 のコンポーネントとそれらの相互接続を示しています。
図7: ESP32-DevKitM-1
電源の選択ボードに電源を供給するには、相互に排他的な3つの方法があります。 · マイクロUSBポート、デフォルトの電源 · 5VとGNDヘッダーピン · 3V3とGNDヘッダーピン
警告: · 電源は、上記のオプションのいずれか 1 つだけを使用して供給する必要があります。そうしないと、ボードや電源が損傷する可能性があります。 · マイクロ USB ポートによる電源供給が推奨されます。
ピンの説明 以下の表は、ボード両面のピンの名称と機能を示しています。ペリフェラルのピン構成については、ESP32データシートを参照してください。
いいえ。
名前
タイプ
1
グランド
P
2
3V3
P
機能グランド 3.3 V電源
次のページに続く
エスプレシフ システムズ
12 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
表2 前ページからの続き
いいえ。
名前
タイプ
関数
3
I36
I
GPIO36、ADC1_CH0、RTC_GPIO0
4
I37
I
GPIO37、ADC1_CH1、RTC_GPIO1
5
I38
I
GPIO38、ADC1_CH2、RTC_GPIO2
6
I39
I
GPIO39、ADC1_CH3、RTC_GPIO3
7
RSTP ...
I
リセット; 高: 有効; 低: 電源オフ
8
I34
I
GPIO34、ADC1_CH6、RTC_GPIO4
9
I35
I
GPIO35、ADC1_CH7、RTC_GPIO5
10
IO32
入出力
GPIO32、XTAL_32K_P(32.768 kHz水晶発振器入力)、
ADC1_CH4、TOUCH9、RTC_GPIO9
11
IO33
入出力
GPIO33、XTAL_32K_N(32.768 kHz水晶発振器出力)、
ADC1_CH5、TOUCH8、RTC_GPIO8
12
IO25
入出力
GPIO25、DAC_1、ADC2_CH8、RTC_GPIO6、EMAC_RXD0
13
IO26
入出力
GPIO26、DAC_2、ADC2_CH9、RTC_GPIO7、EMAC_RXD1
14
IO27
入出力
GPIO27、ADC2_CH7、TOUCH7、RTC_GPIO17、EMAC_RX_DV
15
IO14
入出力
GPIO14、ADC2_CH6、TOUCH6、RTC_GPIO16、MTMS、HSPICLK、
HS2_CLK、SD_CLK、EMAC_TXD2
16
5V
P
5V電源
17
IO12
入出力
GPIO12、ADC2_CH5、TOUCH5、RTC_GPIO15、MTDI、HSPIQ、
HS2_DATA2、SD_DATA2、EMAC_TXD3
18
IO13
入出力
GPIO13、ADC2_CH4、TOUCH4、RTC_GPIO14、MTCK、HSPID、
HS2_DATA3、SD_DATA3、EMAC_RX_ER
19
IO15
入出力
GPIO15、ADC2_CH3、TOUCH3、RTC_GPIO13、MTDO、HSPICS0、
HS2_CMD、SD_CMD、EMAC_RXD3
20
IO2
入出力
GPIO2、ADC2_CH2、TOUCH2、RTC_GPIO12、HSPIWP、
HS2_DATA0、SD_DATA0
21
IO0
入出力
GPIO0、ADC2_CH1、TOUCH1、RTC_GPIO11、CLK_OUT1、
EMAC_TX_CLK
22
IO4
入出力
GPIO4、ADC2_CH0、TOUCH0、RTC_GPIO10、HSPIHD、
HS2_DATA1、SD_DATA1、EMAC_TX_ER
23
IO9
入出力
GPIO9、HS1_DATA2、U1RXD、SD_DATA2
24
IO10
入出力
GPIO10、HS1_DATA3、U1TXD、SD_DATA3
25
IO5
入出力
GPIO5、HS1_DATA6、VSPICS0、EMAC_RX_CLK
26
IO18
入出力
GPIO18、HS1_DATA7、VSPICLK
27
IO23
入出力
GPIO23、HS1_STROBE、VSPID
28
IO19
入出力
GPIO19、VSPIQ、U0CTS、EMAC_TXD0
29
IO22
入出力
GPIO22、VSPIWP、U0RTS、EMAC_TXD1
30
IO21
入出力
GPIO21、VSPIHD、EMAC_TX_EN
31
TXD0
入出力
GPIO1、U0TXD、CLK_OUT3、EMAC_RXD2
32
RXD0
入出力
GPIO3、U0RXD、CLK_OUT2
ハードウェア リビジョンの詳細 以前のバージョンはありません。
関連文書
· ESP32-MINI-1 & ESP32-MINI-1U データシート (PDF) · ESP32-DevKitM-1 回路図 (PDF) · ESP32-DevKitM-1 PCBレイアウト (PDF) · ESP32-DevKitM-1 レイアウト (DXF) – view オートデスクと Viewer online · ESP32 データシート (PDF) · ESP 製品セレクター
ボードのその他の設計ドキュメントについては、sales@espressif.com までお問い合わせください。
エスプレシフ システムズ
13 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
1.2.2ソフトウェア
ESP32でESP-IDFを使用するには、次のソフトウェアをインストールします。 · ESP32のコードをコンパイルするためのツールチェーン · ビルドツール - ESP32用の完全なアプリケーションをビルドするためのCMakeとNinja · 基本的にESP32のAPI(ソフトウェアライブラリとソースコード)とツールチェーンを操作するためのスクリプトを含むESP-IDF
1.3 インストール
必要なソフトウェアをすべてインストールするには、いくつかの方法があります。利用可能なオプションから1つお選びください。
1.3.1 IDE
注意: お気に入りの IDE を通じて ESP-IDF をインストールすることを強くお勧めします。
· Eclipseプラグイン · VSCode拡張機能
1.3.2 手動インストール
手動の手順については、ご使用のオペレーティング システムに応じて選択してください。
エスプレシフ システムズ
14 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
Windows用ツールチェーンの標準セットアップ
はじめに ESP-IDF では、サポートされているチップのファームウェアをビルドできるように、いくつかの必須ツールをインストールする必要があります。必須ツールには、Python、Git、クロスコンパイラ、CMake、および Ninja ビルドツールが含まれます。この入門ガイドではコマンドプロンプトを使用しますが、ESP-IDF をインストールした後は、Eclipse プラグインまたは CMake をサポートする他のグラフィカル IDE を使用できます。注: 制限事項: – ESP-IDF および ESP-IDF ツールのインストール パスは、90 文字以下にする必要があります。インストール パスが長すぎると、ビルドが失敗する可能性があります。 – Python または ESP-IDF のインストール パスには、空白や括弧を含めることはできません。 – オペレーティング システムが Unicode UTF-8 をサポートするように構成されていない限り、Python または ESP-IDF のインストール パスに特殊文字 (非 ASCII) を含めることはできません。システム管理者は、コントロール パネルの「日付、時刻、または数値の形式の変更」>「管理タブ」>「システム ロケールの変更」で「ベータ版: 世界中の言語サポートに Unicode UTF-8 を使用する」オプションをオンにして「OK」をクリックし、コンピューターを再起動してサポートを有効にできます。
ESP-IDF ツール インストーラー ESP-IDFns の前提条件をインストールする最も簡単な方法は、ESP-IDF ツール インストーラーの 1 つをダウンロードすることです。
Windowsインストーラーのダウンロード
オンラインインストーラーとオフラインインストーラーのユースケースは何ですか?オンラインインストーラーは非常に小さく、ESP-IDFのすべてのリリースをインストールできます。インストーラーはインストールプロセス中に、Git For Windowsを含む必要な依存関係のみをダウンロードします。インストーラーはダウンロードしたファイルを保存します。 fileキャッシュディレクトリ内の %userprofile%. エスプレッシフ
オフラインインストーラーはネットワーク接続を必要としません。インストーラーには、Git For Windows を含む必要な依存関係がすべて含まれています。
インストールのコンポーネント インストーラーは次のコンポーネントを展開します。
· 組み込み Python · クロスコンパイラ · OpenOCD · CMake および Ninja ビルドツール · ESP-IDF
インストーラーは、ESP-IDFで既存のディレクトリを再利用することもできます。推奨ディレクトリは%userproです。file%Desktopesp-idf (%userpro)file% はホームディレクトリです。
エスプレシフ システムズ
15 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
ESP-IDF環境の起動 インストールプロセスの最後に、「ESP-IDF PowerShell環境の実行」または「ESP-IDFコマンドプロンプト(cmd.exe)の実行」オプションを選択できます。インストーラーは、選択したプロンプトでESP-IDF環境を起動します。ESP-IDF PowerShell環境の実行:
図8: ESP-IDF PowerShell環境の実行によるESP-IDFツールセットアップウィザードの完了
ESP-IDF コマンド プロンプト (cmd.exe) を実行します。
コマンドプロンプトの使用 残りの「はじめに」の手順では、Windowsのコマンドプロンプトを使用します。ESP-IDFツールインストーラーは、スタートメニューにESP-IDFコマンドプロンプトを起動するためのショートカットを作成します。このショートカットはコマンドプロンプト(cmd.exe)を起動し、環境変数(PATH、IDF_PATHなど)を設定するためのexport.batスクリプトを実行します。このコマンドプロンプト内では、インストールされたすべてのツールが利用可能です。このショートカットは、ESP-IDFツールインストーラーで選択されたESP-IDFディレクトリに固有のものであることに注意してください。コンピュータ上に複数のESP-IDFディレクトリがある場合(例:ampたとえば、異なるバージョンの ESP-IDF で作業する場合、次の 2 つの使用方法があります。
1. ESP-IDF ツールインストーラーによって作成されたショートカットのコピーを作成し、新しいショートカットの作業ディレクトリを使用する ESP-IDF ディレクトリに変更します。
2. または、cmd.exe を実行し、使用する ESP-IDF ディレクトリに移動して export.bat を実行します。前のオプションとは異なり、この方法では Python と Git が PATH に含まれている必要があります。Python または Git が見つからないというエラーが発生する場合は、最初のオプションを使用してください。
ESP-IDF の最初のステップ すべての要件が満たされたので、次のトピックでは最初のプロジェクトを開始する方法について説明します。
エスプレシフ システムズ
16 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに 図9: ESP-IDF PowerShell
図10: ESP-IDFコマンドプロンプト(cmd.exe)を実行してESP-IDFツールセットアップウィザードを完了する
エスプレシフ システムズ
17 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
図11: ESP-IDFコマンドプロンプト
エスプレシフ システムズ
18 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
このガイドは、ESP-IDF を使い始める際に役立つ情報を提供します。このガイドに従って、ESP32 で新しいプロジェクトを開始し、ビルド、フラッシュ書き込み、デバイス出力のモニタリングを行ってください。注: ESP-IDF をまだインストールしていない場合は、「インストール」に進み、手順に従ってこのガイドの使用に必要なすべてのソフトウェアを入手してください。
プロジェクトを開始する これで、ESP32用のアプリケーションを準備する準備が整いました。例: getstarted/hello_world プロジェクトから開始できます。ampESP-IDFのlesディレクトリ。
重要: ESP-IDF ビルド システムは、ESP-IDF またはプロジェクトへのパス内のスペースをサポートしていません。
プロジェクト get-started/hello_world を ~/esp ディレクトリにコピーします: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedhello_world hello_world
注: さまざまな例がありますamp元のルプロジェクトampESP-IDFのlesディレクトリ。 上記と同じ方法で任意のプロジェクトをコピーして実行できます。 exを構築することも可能ですampファイルを最初にコピーせずにその場で読み込みます。
デバイスを接続する ESP32ボードをコンピューターに接続し、どのシリアルポートにボードが表示されているかを確認してください。Windowsでは、シリアルポート名はCOMで始まります。シリアルポート名の確認方法がわからない場合は、「ESP32とのシリアル接続の確立」を参照してください。
注: 次の手順で必要になるので、ポート名を手元に置いておきます。
プロジェクトを構成する hello_world ディレクトリに移動し、ESP32 をターゲットとして設定し、プロジェクト構成ユーティリティ menuconfig を実行します。
Windows cd %userprofile%esphello_world idf.py ターゲット esp32 idf.py menuconfig
新しいプロジェクトを開いたら、まずidf.py set-target esp32でターゲットを設定する必要があります。プロジェクトに既存のビルドと設定がある場合は、このプロセスでクリアされ、初期化されることに注意してください。ターゲットを環境変数に保存することで、この手順を省略できます。詳細については、「ターゲットチップの選択: set-target」を参照してください。前の手順が正しく完了すると、次のメニューが表示されます。このメニューは、Wi-Fiネットワーク名とパスワード、プロセッサ速度など、プロジェクト固有の変数を設定するために使用します。ohello_wordpでは、menuconfigによるプロジェクトの設定は省略できます。これは、ample はデフォルト設定で実行されます。
注意: ESP32-DevKitCボードをESP32-SOLO-1モジュールと併用する場合、またはESP32-DevKitM-1ボードをESP32-MIN1-1(1U)モジュールと併用する場合は、exをフラッシュする前にmenuconfigでシングルコアモード(CONFIG_FREERTOS_UNICORE)を有効にしてください。ampレ。
エスプレシフ システムズ
19 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
図12: プロジェクト構成 – ホームウィンドウ
注: メニューの色はターミナルによって異なる場合があります。--style オプションで外観を変更できます。詳細については、idf.py menuconfig –help を実行してください。
サポートされている開発ボードをご利用の場合は、ボードサポートパッケージを使用することで開発をスピードアップできます。詳しくは「追加のヒント」をご覧ください。
プロジェクトのビルド 次のコマンドを実行してプロジェクトをビルドします。
idf.pyビルド
このコマンドは、アプリケーションとすべてのESP-IDFコンポーネントをコンパイルしてから、ブートローダー、パーティションテーブル、およびアプリケーションバイナリを生成します。
$ idf.py build ディレクトリ /path/to/hello_world/build で cmake を実行しています “cmake -G Ninja –warn-uninitialized /path/to/hello_world” を実行しています… 初期化されていない値について警告します。 — Git が見つかりました: /usr/bin/git (バージョン “2.17.0”) — 構成により空の aws_iot コンポーネントをビルドしています — コンポーネント名: … — コンポーネント パス: …
…(ビルドシステム出力のより多くの行)
[527/527] hello_world.bin esptool.py v2.3.1 を生成しています
プロジェクトのビルドが完了しました。フラッシュするには、次のコマンドを実行してください: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world. bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/ partition-table.bin または 'idf.py -p PORT flash' を実行してください
エラーがない場合、ビルドはファームウェアバイナリ.binを生成して終了します files.
エスプレシフ システムズ
20 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
デバイスにフラッシュする ビルドしたバイナリ(bootloader.bin、partition-table.bin、hello_world.bin)をESP32ボードにフラッシュするには、次のコマンドを実行します:idf.py -p PORT [-b BAUD] flash
PORTをESP32ボードのシリアルポート名に置き換えてください。また、BAUDを必要なボーレートに置き換えることで、フラッシャーのボーレートを変更することもできます。デフォルトのボーレートは460800です。idf.pyの引数の詳細については、idf.pyを参照してください。
注: オプション flash はプロジェクトを自動的にビルドしてフラッシュするため、idf.py build を実行する必要はありません。
フラッシュ中に問題が発生しましたか? 指定されたコマンドを実行して「Failed to connectp」などのエラーが表示される場合、いくつかの原因が考えられます。原因の一つとして、ビルドシステムによってチップのリセット、ROMブートローダーとのやり取り、ファームウェアのフラッシュのために呼び出されるユーティリティであるesptool.pyで問題が発生している可能性があります。簡単な解決策の一つとして、以下で説明する手動リセットをお試しください。それでも問題が解決しない場合は、トラブルシューティングで考えられる問題の詳細をご確認ください。
esptool.pyは、USBシリアル変換チップ(FTDIまたはCP210x)のDTRおよびRTS制御ラインをアサートすることで、ESP32を自動的にリセットします(詳細については、ESP32とのシリアル接続の確立を参照してください)。DTRおよびRTS制御ラインは、ESP32のGPIO0およびCHIP_PU(EN)ピンに接続され、これによりボリュームが変化します。tagDTRとRTSのレベルをeにすると、ESP32はファームウェアダウンロードモードで起動します。例としてample、ESP32 DevKitC 開発ボードの回路図を確認してください。
一般的に、公式のesp-idf開発ボードでは問題は発生しないはずです。ただし、以下の場合、esptool.pyはハードウェアを自動的にリセットできません。
· ハードウェアにGPIO0とCHIP_PUに接続されたDTRとRTSラインがありません · DTRとRTSラインの構成が異なります · そのようなシリアル制御ラインはまったくありません
使用しているハードウェアの種類によっては、ESP32 ボードを手動でファームウェア ダウンロード モード (リセット) にすることも可能です。
· Espressif社が製造する開発ボードについては、それぞれの入門ガイドまたはユーザーガイドに記載されています。例えば、ampたとえば、ESP-IDF 開発ボードを手動でリセットするには、Boot ボタン (GPIO0) を押したまま、EN ボタン (CHIP_PU) を押します。
· 他の種類のハードウェアの場合は、GPIO0 をプルダウンしてみてください。
通常操作 フラッシュすると、次のような出力ログが表示されます。
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev シリアルポート /dev/ttyUSB0 接続中……チップはESP32D0WDQ6(リビジョン0)です。機能:WiFi、BT、デュアルコア、コーディングスキームなし。水晶は40MHzです。MAC:24:0a:c4:05:b9:14 スタブをアップロードしています… スタブを実行しています… スタブを実行しています… ボーレートを460800に変更しています変更されました。
(次ページに続く)
エスプレシフ システムズ
21 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
(前のページからの続き) フラッシュ サイズを構成しています… 3072 バイトを 103 に圧縮しました… 0x00008000 に書き込み中… (100 %) 0.0 秒で 3072 バイト (103 圧縮) を 0x00008000 に書き込みました (実効 5962.8 kbit/s)… データのハッシュが検証されました。 26096 バイトを 15408 に圧縮しました… 0x00001000 に書き込み中… (100 %) 0.4 秒で 26096 バイト (15408 圧縮) を 0x00001000 に書き込みました (実効 546.7 kbit/s)… データのハッシュが検証されました。 147104 バイトを 77364 に圧縮しました… 0x00010000 に書き込み中… (20 %) 0x00014000 に書き込み中… (40 %) 0x00018000 に書き込み中… (60 %) 0x0001c000 に書き込み中… (80 %) 0x00020000 に書き込み中… (100 %) 147104 バイト (圧縮後 77364) を 0x00010000 に 1.9 秒で書き込みました (実効 615.5 kbit/s)… データのハッシュが検証されました。
離脱…RTSピンによるハードリセット…完了
フラッシュプロセスが完了するまでに問題がなければ、ボードが再起動し、ohello_worldpaアプリケーションが起動します。idf.pyを実行する代わりにEclipseまたはVS Code IDEを使用したい場合は、Eclipseプラグイン、VSCode拡張機能をご確認ください。
出力を監視します。ohello_worldpis が実際に実行されているかどうかを確認するには、「idf.py -p PORT monitor」と入力します (PORT をシリアル ポート名に置き換えることを忘れないでください)。
このコマンドは、IDFモニターアプリケーションを起動します。
$ idf.py -pモニター ディレクトリ […]/esp/hello_world/build で idf_monitor を実行しています “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf” を実行しています… — idf_monitor on 115200 —– 終了: Ctrl+] | メニュー: Ctrl+T | ヘルプ: Ctrl+T に続いて Ctrl+H –ets 2016年6月8日 00:22:57
rst:0x1 (POWERON_RESET)、boot:0x13 (SPI_FAST_FLASH_BOOT) ets 2016年6月8日 00:22:57 …
起動と診断ログが上にスクロールすると、アプリケーションによって「Hello world!」が出力されているのが確認できます。
… こんにちは、世界!10秒後に再起動します… これは、2つのCPUコア、WiFi/BT/BLE、シリコンリビジョン1、2MBの外部フラッシュを搭載したesp32チップです。最小空きヒープサイズ: 298968バイト。9秒後に再起動します… 8秒後に再起動します… 7秒後に再起動します…
IDFモニターを終了するには、ショートカットCtrl +]を使用します。
エスプレシフ システムズ
22 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
アップロード直後にIDFモニターが機能しなくなった場合、または上記のメッセージの代わりに下記のようなランダムなメッセージが表示される場合は、ボードに26MHzの水晶振動子が使用されている可能性があります。ほとんどの開発ボード設計では40MHzが使用されているため、ESP-IDFはこの周波数をデフォルト値として使用します。
このような問題が発生した場合は、次の操作を実行してください。1. モニターを終了します。2. menuconfig に戻ります。3. Component config > Hardware Settings > Main XTAL Config > Main XTAL frequency に移動し、CONFIG_XTAL_FREQ_SEL を 26 MHz に変更します。4. その後、アプリケーションを再度ビルドしてフラッシュします。
ESP-IDF の現在のバージョンでは、ESP32 でサポートされている主な XTAL 周波数は次のとおりです。
· 26 MHz · 40 MHz
注: ビルド、フラッシュ、モニタリングを 1 つのステップにまとめることができます: idf.py -p PORT flash monitor
参照: · IDF モニター : 便利なショートカットと IDF モニターの使用に関する詳細。 · idf.py : idf.py のコマンドとオプションの完全なリファレンス。
ESP32を始めるのに必要なのはこれだけです!さあ、他の例を試す準備ができました。amples を使用するか、独自のアプリケーションの開発に直接進んでください。
重要: 例の一部amplesはESP32をサポートしていません。必要なハードウェアがESP32に含まれていないため、サポートできません。exを構築する場合ampREADMEを確認してください file サポートされているターゲットの表を参照してください。ESP32ターゲットを含むこの表が存在する場合、または表がまったく存在しない場合は、exampleはESP32で動作します。
追加のヒント
/dev/ttyUSB0 の権限に関する問題 一部のLinuxディストリビューションでは、ESP32のフラッシュ時に「ポート /dev/ttyUSB0 を開けませんでした」というエラーメッセージが表示される場合があります。これは、現在のユーザーを dialout グループに追加することで解決できます。
Pythonとの互換性 ESP-IDFはPython 3.7以降をサポートしています。この要件を満たす最新バージョンにオペレーティングシステムをアップグレードすることをお勧めします。その他の選択肢としては、Pythonをソースからインストールするか、pyenvなどのPythonバージョン管理システムを使用する方法があります。
ボード サポート パッケージから始める 一部の開発ボードでのプロトタイピングを高速化するには、ボード サポート パッケージ (BSP) を使用できます。これにより、特定のボードの初期化が、いくつかの関数呼び出しと同じくらい簡単になります。
エスプレシフ システムズ
23 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
BSPは通常、開発ボードに搭載されているすべてのハードウェアコンポーネントをサポートします。ピン配置の定義と初期化関数に加え、BSPにはセンサー、ディスプレイ、オーディオコーデックなどの外部コンポーネント用のドライバも付属しています。BSPはIDFコンポーネントマネージャを介して配布されるため、IDFコンポーネントレジストリで見つけることができます。ampESP-WROVER-KIT BSPをプロジェクトに追加する方法のサンプル: idf.py add-dependency esp_wrover_kit
もっと元ampBSPの使用例についてはBSP exをご覧ください。ampレフォルダ。
関連ドキュメント インストールプロセスをカスタマイズしたい上級ユーザー向け: · Windows での ESP-IDF ツールの更新 · ESP32 とのシリアル接続の確立 · Eclipse プラグイン · VSCode 拡張機能 · IDF モニター
Windows での ESP-IDF ツールの更新
スクリプトを使用してESP-IDFツールをインストールする Windowsコマンドプロンプトから、ESPIDFがインストールされているディレクトリに移動し、次のコマンドを実行します。
インストール.bat
Powershellの場合は、ESP-IDFがインストールされているディレクトリに移動し、次のコマンドを実行します。
インストール.ps1
ESP-IDFを使用するために必要なツールをダウンロードしてインストールします。特定のバージョンのツールが既にインストールされている場合は、何も行われません。ツールは、ESP-IDFツールインストーラーのプロセス中に指定されたディレクトリにダウンロードされ、インストールされます。デフォルトでは、C:\Users\username.espressif です。
エクスポートスクリプトを使用してESP-IDFツールをPATHに追加します。ESP-IDFツールインストーラーは、ESP-IDFコマンドプロンプトのスタートメニューショートカットを作成します。このショートカットは、すべてのツールが既にインストールされているコマンドプロンプトウィンドウを開きます。
利用可能です。場合によっては、そのショートカットを使って起動していないコマンドプロンプトウィンドウでESP-IDFを操作したいことがあります。その場合は、以下の手順に従ってESP-IDFツールをPATHに追加してください。ESP-IDFを使用するコマンドプロンプトで、ESP-IDFがインストールされているディレクトリに移動し、export.batを実行します。
cd%userprofile%espesp-idf エクスポート.bat
あるいは、ESP-IDF を使用する必要がある Powershell で、ESP-IDF がインストールされているディレクトリに変更し、export.ps1 を実行します。
cd ~/esp/esp-idf export.ps1
これが完了すると、このコマンド プロンプトでツールが使用できるようになります。
ESP32 とのシリアル接続を確立する このセクションでは、ESP32 と PC 間のシリアル接続を確立する方法について説明します。
エスプレシフ システムズ
24 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
ESP32をPCに接続します。USBケーブルを使用してESP32ボードをPCに接続します。デバイスドライバーが自動的にインストールされない場合は、ESP32ボード(または外付けコンバータドングル)に搭載されているUSB-シリアル変換チップを確認し、インターネットでドライバーを検索してインストールしてください。以下は、Espressif社製のほとんどのESP32ボードに搭載されているUSB-シリアル変換チップのリストと、ドライバーへのリンクです。
· CP210x: CP210x USB to UART Bridge VCP ドライバ · FTDI: FTDI 仮想COMポートドライバ 使用するUSB-シリアル変換チップについては、ボードのユーザーガイドをご確認ください。上記のドライバは主に参考用です。通常、ドライバはオペレーティングシステムにバンドルされており、ボードをPCに接続すると自動的にインストールされます。
Windowsのポートを確認する Windowsのデバイスマネージャーで、認識されたCOMポートのリストを確認します。ESP32を取り外して再度接続し、リストから消えたポートと再び表示されるポートを確認します。下の図は、ESP32 DevKitCとESP32 WROVER KITのシリアルポートを示しています。
図13: WindowsデバイスマネージャーにおけるESP32-DevKitCのUSB-UARTブリッジ
LinuxおよびmacOSでポートを確認する ESP32ボード(または外部コンバータドングル)のシリアルポートのデバイス名を確認するには、このコマンドを2回実行します。1回目はボード/ドングルを取り外した状態で、2回目は接続した状態で実行します。2回目に表示されるポートが必要なポートです。Linux
ls / dev / tty *
macOS
エスプレシフ システムズ
25 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
図14: WindowsデバイスマネージャーにおけるESP-WROVER-KITの2つのUSBシリアルポート
エスプレシフ システムズ
26 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
ls /dev/cu.* 注:macOSユーザー:シリアルポートが表示されない場合は、USB/シリアルドライバーがインストールされていることを確認してください。ドライバーへのリンクについては、「ESP32をPCに接続する」セクションをご覧ください。macOS High Sierra (10.13) の場合は、ドライバーの読み込みを明示的に許可する必要がある場合があります。「システム環境設定」→「セキュリティとプライバシー」→「一般」を開き、「o開発元からのシステムソフトウェア」に関するメッセージ(開発元名がSilicon LabsまたはFTDI)が表示されているかどうかを確認してください。
Linuxでダイヤルアウトにユーザーを追加する 現在ログインしているユーザーには、USB経由のシリアルポートへの読み取りおよび書き込みアクセス権が必要です。ほとんどのLinuxディストリビューションでは、次のコマンドでユーザーをダイヤルアウトグループに追加することでこれが可能です。
sudo usermod -a -G ダイヤルアウト $USER
Arch Linux では、次のコマンドを使用してユーザーを uucp グループに追加することで実行されます。
sudo usermod -a -G uucp $USER
必ず再ログインして、シリアルポートの読み取りおよび書き込み権限を有効にしてください。
シリアル接続の確認 シリアル接続が正常に機能していることを確認してください。シリアルターミナルプログラムを使用して、ESP32をリセットした後にターミナルに出力があるかどうかを確認してください。ESP32のデフォルトのコンソールボーレートは115200です。
WindowsとLinux この例ampここでは、WindowsとLinuxの両方で利用可能なPuTTY SSHクライアントを使用します。他のシリアルプログラムを使用して、以下のように通信パラメータを設定することもできます。ターミナルを起動し、識別されたシリアルポートを設定します。ボーレートは115200(必要に応じて、使用しているチップのデフォルトのボーレートに変更してください)、データビットは8、ストップビットは1、パリティはNです。以下は例です。ampWindowsとLinuxでポートと送信パラメータ(115200-8-1-Nと略記)を設定するスクリーンショットです。上記の手順で確認したシリアルポートと全く同じポートを選択してください。ターミナルでシリアルポートを開き、ESP32によってログが出力されるかどうかを確認してください。ログの内容はESP32にロードされたアプリケーションによって異なります。例をご覧ください。ample 出力。
注:通信が機能していることを確認したら、シリアルターミナルを閉じてください。ターミナルセッションを開いたままにしておくと、後でファームウェアをアップロードする際にシリアルポートにアクセスできなくなります。
macOS シリアルターミナルプログラムをインストールする手間を省くため、macOS では screen コマンドが提供されています。 · 「Linux および macOS でのポートの確認」で説明したように、次のコマンドを実行します。
ls /dev/cu.* · 次のような出力が表示されるはずです:
/dev/cu.Bluetooth 受信ポート /dev/cu.SLAB_USBtoUART USBtoUART7
/dev/cu.SLAB_
· 出力は、PCに接続されているボードの種類と数によって異なります。ボードのデバイス名を選択して実行してください(必要に応じて、o115200pをチップのデフォルトのボーレートに変更してください)。
screen /dev/cu.device_name 115200 device_name を ls /dev/cu.* を実行して見つかった名前に置き換えます。
エスプレシフ システムズ
27 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
図15: Windows上のPuTTYでシリアル通信を設定する
エスプレシフ システムズ
28 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
図16: Linux上のPuTTYでのシリアル通信の設定
エスプレシフ システムズ
29 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
· 探しているのは画面に表示されるログです。ログの内容はESP32にロードされたアプリケーションによって異なります。例をご覧ください。ample 出力。screen セッションを終了するには、Ctrl-A + と入力します。
注:通信が機能していることを確認した後は、必ずscreenセッションを終了してください。これをせずにターミナルウィンドウを閉じると、後でファームウェアをアップロードする際にシリアルポートにアクセスできなくなります。
Example出力例ampログは以下に表示されます。何も表示されない場合はボードをリセットしてください。ets 2016年6月8日 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 2016年6月8日 00:22:57
rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0x00 clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0008,len:8 load:0x3fff0010,len:3464 load:0x40078000,len:7828 load:0x40080000,len:252 entry 0x40080034 I (44) boot: ESP-IDF v2.0-rc1-401-gf9fba35 2nd stage ブートローダ I (45) ブート: コンパイル時間 18:48:10
…
読み取り可能なログ出力が表示された場合、シリアル接続が機能しており、インストールを続行して最終的にアプリケーションを ESP32 にアップロードする準備ができていることを意味します。
注:一部のシリアルポート配線構成では、ESP32を起動してシリアル出力を生成する前に、ターミナルプログラムでシリアルRTSピンとDTRピンを無効にする必要があります。これはハードウェア自体に依存しますが、ほとんどの開発ボード(すべてのEspressifボードを含む)ではこの問題は発生しません。RTSピンとDTRピンがENピンとGPIO0ピンに直接配線されている場合、この問題が発生します。詳細については、esptoolのドキュメントを参照してください。
ESP32 開発用のソフトウェアをインストールするときに、ステップ 5. ESP-IDF の最初のステップからここまで来た場合は、ステップ 5. ESP-IDF の最初のステップに進むことができます。
IDFモニター IDFモニターは、主に対象デバイスのシリアルポートとの間でシリアルデータを中継するシリアルターミナルプログラムです。また、IDF固有の機能もいくつか備えています。IDFモニターは、IDFプロジェクトからidf.py monitorを実行することで起動できます。
キーボード ショートカット IDF モニターを簡単に操作するには、表に示すキーボード ショートカットを使用します。
エスプレシフ システムズ
30 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
キーボードショートカット Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (または A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (または I)
· Ctrl+H (または H)
· Ctrl+X (または X)
Ctrl+C
アクション
説明
プログラムを終了 メニューのエスケープキー メニュー文字自体をリモートに送信します
終了文字自体をリモートに送信する
RTS ライン経由でアプリを一時停止するには、ターゲットをブートローダにリセットします。
RTS経由でターゲットボードをリセットする
プロジェクトをビルドしてフラッシュする
アプリをビルドしてフラッシュするだけ
画面上のログ出力の印刷を停止/再開する
ログ出力の停止/再開は保存先 file
停止/再開時間tamps
印刷
すべてのキーボードショートカットを表示
押して、以下のいずれかのキーを押します。
RTSライン(接続されている場合)を介してターゲットをブートローダにリセットし、ボード上で何も実行されないようにします。他のデバイスの起動を待つ必要がある場合に便利です。ターゲットボードをリセットし、RTSライン(接続されている場合)を介してアプリケーションを再起動します。
idf_monitorを一時停止してプロジェクトのフラッシュターゲットを実行し、その後idf_monitorを再開します。変更されたソース filesは再コンパイルされ、その後再フラッシュされます。idf_monitorが引数-Eで起動された場合、ターゲットencrypted-flashが実行されます。idf_monitorを一時停止してapp-flashターゲットを実行し、その後idf_monitorを再開します。flashターゲットと似ていますが、メインアプリのみがビルドされ、再フラッシュされます。idf_monitorが引数-Eで起動された場合、ターゲットencrypted-app-flashが実行されます。アクティブ化中は、すべての受信シリアルデータを破棄します。モニターを終了せずに、ログ出力を素早く一時停止して確認することができます。 file プロジェクトディレクトリに出力が書き込まれます file 同じキーボードショートカットで無効にするか、IDFモニターを終了するまで、IDFモニターはtimestを印刷できます。amp 各行の先頭に。timestamp フォーマットは–timestで変更できるamp-format コマンドライン引数。
プログラムを終了します
実行中のアプリケーションを中断する
IDFモニターを一時停止し、GDBプロジェクトデバッガーを実行して実行時にアプリケーションをデバッグします。これには:ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIMEオプションを有効にする必要があります。
Ctrl-] と Ctrl-T 以外のキーが押された場合、そのキーはシリアル ポートを介して送信されます。
IDF固有の機能
自動アドレスデコード ESP-IDF が 0x4_______ 形式の 16 進コードアドレスを出力するたびに、IDF モニターは addr2line_ を使用してソースコード内の場所を検索し、関数名を見つけます。
ESP-IDF アプリがクラッシュしてパニックが発生すると、次のようなレジスタ ダンプとバックトレースが生成されます。
エスプレシフ システムズ
31 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
グル瞑想 コア0でStoreProhibitedエラーが発生しました。例外は
未処理。
レジスタダンプ:
PC
: 0x400f360d 追伸
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0x00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: 0x00000019 言い訳:
0x0000001d
EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:
0x00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90
IDF モニターはダンプにさらに詳細を追加します。
グル瞑想 コア0でStoreProhibitedエラーが発生しました。例外は
未処理。
レジスタダンプ:
PC
: 0x400f360d 追伸
: 0x00060330 A0
: 0x800dbf56 A1
:
0x3ffb7e00
0x400f360d: /home/gus/esp/32/idf/ex でクラッシュする何かを実行amples/始める/
hello_world/main/./hello_world_main.c:57
(インライン化) inner_dont_crash at /home/gus/esp/32/idf/examples/get-started/hello_
ワールド/メイン/./hello_world_main.c:52
A2
: 0x3ffb136c A3
: 0x00000005 A4
: 0x00000000 A5
:
0x00000000
A6
: 0x00000000 A7
: 0x00000080 A8
: 0x00000000 A9
:
0x3ffb7dd0
A10
: 0x00000003 A11
: 0x00060f23 A12
: 0x00060f20 A13
:
0x3ffba6d0
A14
: 0x00000047 A15
: 0x0000000f SAR
: 0x00000019 言い訳:
0x0000001d
EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT:
0x00000000
Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90 0x400f360d: do_something_to_crash at /home/gus/esp/32/idf/examples/get-started/ hello_world/main/./hello_world_main.c:57 (インライン化) inner_dont_crash at /home/gus/esp/32/idf/examples/get-started/hello_world/main/./hello_world_main.c:52 0x400dbf56: still_dont_crash は /home/gus/esp/32/idf/ex で発生していますamples/get-started/hello_world/main/./hello_world_main.c:47 0x400dbf5e: /home/gus/esp/32/idf/ex で dont_crash が発生しましたamples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: app_main は /home/gus/esp/32/idf/ex にありますamples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task は /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254 にあります
各アドレスをデコードするために、IDFモニターはバックグラウンドで次のコマンドを実行します: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS
注意: 環境変数 ESP_MONITOR_DECODE を 0 に設定するか、特定のコマンドラインで idf_monitor.py を呼び出します。
エスプレシフ システムズ
32 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
オプション: idf_monitor.py –disable-address-decoding はアドレスのデコードを無効にします。
接続時のターゲットのリセット:IDF Monitorはデフォルトで、ターゲットへの接続時にターゲットをリセットします。ターゲットチップのリセットは、DTRおよびRTSシリアルラインを使用して実行されます。IDF Monitorが接続時にターゲットを自動的にリセットしないようにするには、IDF Monitorを–no-resetオプション付きで呼び出します(例:idf_monitor.py –no-reset)。
注意: –no-reset オプションは、IDF モニターを特定のポートに接続する場合でも同じ動作を適用します (例: idf.py monitor –no-reset -p [PORT])。
GDBStubでGDBを起動する GDBStubは、ターゲット上で実行され、シリアルポートを介してホストに接続してデバッグコマンドを受信する便利なランタイムデバッグ機能です。GDBStubは、メモリや変数の読み取り、コールスタックフレームの検査などのコマンドをサポートしています。GDBStubはJほど多機能ではありませんが、TAG デバッグには特別なハードウェア(JTAG 通信はすべてシリアルポート経由で行われるため、GDBStub は USB ブリッジに接続できません。実行時に CONFIG_ESP_SYSTEM_PANIC を GDBStub に設定することにより、GDBStub をバックグラウンドで実行するようにターゲットを設定できます。GDBStub は、Ctrl+C メッセージがシリアルポート経由で送信され、GDBStub がプログラムをブレーク (つまり、実行を停止) するまでバックグラウンドで実行され、デバッグ コマンドを処理できるようになります。さらに、パニック ハンドラーは、クラッシュ時に GDBStub を実行するように設定できます。クラッシュが発生すると、GDBStub は、実行中であることを示す特別な文字列パターンをシリアルポート経由で出力します。どちらの場合も (Ctrl+C メッセージを送信する場合も、特別な文字列パターンを受信する場合も)、IDF Monitor は自動的に GDB を起動し、ユーザーがデバッグ コマンドを送信できるようにします。GDB が終了した後、ターゲットは RTS シリアル ライン経由でリセットされます。この回線が接続されていない場合、ユーザーはターゲットをリセットできます (ボードのリセット ボタンを押して)。
注: バックグラウンドでは、IDF モニターは次のコマンドを実行して GDB を起動します。
xtensa-esp32-elf-gdb -ex “シリアルボーレートBAUDを設定” -ex “ターゲットリモートポート” -ex interrupt build/PROJECT.elf :idf_target:`Hello NAME chip`
出力フィルタリング IDFモニターは、idf.py monitor –print-filter=”xyz” として呼び出すことができます。–print-filter は出力フィルタリングのパラメータです。デフォルト値は空文字列で、すべての出力が行われます。
印刷内容の制限は、一連のtag>:アイテムがtag>は tag 文字列とログ記録のレベルを示す {N、E、W、I、D、V、*} のセットからの文字です。
例えばample、PRINT_FILTER=”tag1:W”はESP_LOGW(“で書き込まれた出力のみに一致して出力しますtag1”、…)またはより低い詳細レベル、つまりESP_LOGE(“tag1″、…)。または * を使用すると、デフォルトで詳細レベルになります。
注: コンパイル時にログライブラリを介した不要な出力を無効にするには、プライマリログを使用してください。IDFモニターによる出力フィルタリングは、アプリケーションを再コンパイルせずにフィルタリングオプションを調整できる二次的なソリューションです。
あなたのアプリ tags 出力フィルタリング機能との互換性を保つために、スペース、アスタリスク *、またはコロン : を含めることはできません。
アプリの出力の最終行に改行がない場合、出力フィルタリングが誤動作する可能性があります。つまり、モニターがその行の出力を開始した後に、その行が本来出力されるべきではなかったことに気付くのです。これは既知の問題であり、常に改行を追加することで回避できます(特に直後に出力がない場合)。
エスプレシフ システムズ
33 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
Exampフィルタリングルールのリスト:
· *は任意のものにマッチするために使用できます tagsただし、文字列PRINT_FILTER=”*:I tag1:Eに関して tag1はエラーのみを出力します。 tag1 は * のルールよりも優先されます。
· デフォルト(空)のルールは*:Vと同等です。 tag 詳細レベル以下ではすべてが一致することを意味します。
· “*:N” は、ログ関数からの出力だけでなく、printf などによる出力も抑制します。これを回避するには、*:E またはより高い詳細レベルを使用します。
· ルールtag1:V」、tag1:v」、tag1:」、tag1:*」および「tag1”は同等です。 · ルール「tag1:W tag1:E”は「tag1:E」は、同じ事象が tag
名前は以前のものを上書きします。 · ルール「tag1:私 tag2:W”のみ印刷 tag情報詳細度レベルが1以下で、 tag警告の2
冗長レベル以下。 · ルール「tag1:私 tag2:W tag3:Nは基本的に前のものと同等である。 tag3:Nは指定する
それ tag3は印刷しないでください。 · tag3:Nのルール「tag1:私 tag2:W tag3:N *:V”の方が意味が深い。 tag3:N ザ
tag3つのメッセージが印刷される可能性があります。 tag1と tag2 は指定された(またはそれ以下の)詳細レベルで印刷され、その他はすべてデフォルトで印刷されます。
より複雑なフィルタリングの例ample 次のログ スニペットは、フィルタリング オプションなしで取得されました。
load:0x40078000、len:13564 エントリ 0x40078d4c E (31) esp_image: 0x30000 のイメージに無効なマジック バイトがあります W (31) esp_image: 0x30000 のイメージに無効な SPI モード 255 があります E (39) boot: ファクトリー アプリ パーティションは起動できません I (568) cpu_start: Pro CPU が起動しています。 I (569) heap_init: 初期化しています。 動的割り当てに使用可能な RAM: I (603) cpu_start: Pro CPU がユーザー コードを開始します D (309) light_driver: [light_init、74]:ステータス: 1、モード: 2 D (318) vfs: esp_vfs_register_fd_range は範囲 <54 に対して成功しました。 64)およびVFS ID 1 I (328) wifi: wifiドライバータスク: 3ffdbf84、prio:23、スタック:4096、コア=0
フィルタリング オプション PRINT_FILTER=”wifi esp_image:E light_driver:I” のキャプチャ出力は次のとおりです。
E (31) esp_image: 0x30000のイメージに無効なマジックバイトがあります I (328) wifi: wifiドライバタスク: 3ffdbf84、prio:23、スタック:4096、コア=0
オプション「PRINT_FILTER=”light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V”」は、次の出力を表示します。
load:0x40078000,len:13564 エントリ 0x40078d4c I (569) heap_init: 初期化中。動的割り当てに使用可能なRAM: D (309) light_driver: [light_init, 74]:ステータス: 1, モード: 2
IDFモニターの既知の問題
Windowsで観察された問題
· Windows コンソールの制限により、矢印キーやその他のキーは GDB では機能しません。 · oidf.pyp が終了すると、IDF モニターが再開するまでに最大 30 秒間停止する場合があります。 · ogdbpis が実行されると、GDBStub との通信を開始する前に短時間停止する場合があります。
エスプレシフ システムズ
34 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 LinuxおよびmacOSの標準ツールチェーンのセットアップを始める
インストール手順 これは、インストール プロセスを段階的に説明する詳細なロードマップです。
開発環境の設定 ESP32 用の ESP-IDF を設定する手順は次のとおりです。 · ステップ 1. 前提条件のインストール · ステップ 2. ESP-IDF の取得 · ステップ 3. ツールのセットアップ · ステップ 4. 環境変数のセットアップ · ステップ 5. ESP-IDF の最初の手順
ステップ1. 前提条件のインストール ESP32でESP-IDFを使用するには、お使いのオペレーティングシステムに応じていくつかのソフトウェアパッケージをインストールする必要があります。このセットアップガイドは、LinuxおよびmacOSベースのシステムにすべてをインストールする方法を説明します。
Linuxユーザー向け:ESP-IDFを使用してコンパイルするには、以下のパッケージを入手する必要があります。実行するコマンドは、使用しているLinuxディストリビューションによって異なります。
· Ubuntu および Debian: sudo apt-get install git wget flex bison gperf python3 python3-pip python3venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
· CentOS 7 & 8: sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 はまだサポートされていますが、より良いユーザーエクスペリエンスのために CentOS バージョン 8 の使用をお勧めします。 · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
注意: · ESP-IDFを使用するには、CMakeバージョン3.16以降が必要です。お使いのOSに適切なバージョンがインストールされていない場合は、otools/idf_tools.py install cmakepを実行してインストールしてください。 · 上記のリストにLinuxディストリビューションが表示されない場合は、そのドキュメントを参照して、パッケージのインストールに使用するコマンドを確認してください。
macOS ユーザーの場合、ESP-IDF は macOS にデフォルトでインストールされている Python のバージョンを使用します。 · CMake と Ninja ビルドをインストールします。HomeBrew をお持ちの場合は、次を実行できます: brew install cmake ninja dfu-util MacPorts をお持ちの場合は、次を実行できます: sudo port install cmake ninja dfu-util それ以外の場合は、CMake および Ninja のホームページで macOS インストールのダウンロードを参照してください。
エスプレシフ システムズ
35 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
· ビルドを高速化するために、ccache もインストールすることを強くお勧めします。HomeBrew をお使いの場合は、brew install ccache または MacPorts の場合は sudo port install ccache でインストールできます。
注意: いずれかのステップで次のようなエラーが表示された場合: xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
続行するには、XCode コマンドラインツールをインストールする必要があります。xcode-select –install を実行することでインストールできます。
Apple M1 ユーザーの皆様へ Apple M1 プラットフォームをご利用の場合、次のようなエラーが表示される場合があります: 警告: ツール xtensa-esp32-elf バージョン esp-2021r2-patch3-8.4.0 のディレクトリは存在しますが、ツールが見つかりません。エラー: ツール xtensa-esp32-elf のバージョンがインストールされていません。「install.sh」を実行してインストールしてください。
または: zsh: 実行可能ファイルの CPU タイプが間違っています: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
次に、/usr/sbin/softwareupdate –install-rosetta –agree-to-license を実行して Apple Rosetta 2 をインストールする必要があります。
Python 3のインストール macOS Catalina 10.15のリリースノートによると、Python 2.7の使用は推奨されておらず、将来のmacOSバージョンではPython 2.7はデフォルトで含まれません。現在インストールされているPythonのバージョンを確認してください: python –version
出力がPython 2.7.17のような場合、デフォルトのインタープリターはPython 2.7です。もしそうなら、Python 3がまだコンピュータにインストールされていないかどうかも確認してください:python3 –version
上記のコマンドでエラーが返された場合は、Python 3がインストールされていないことを意味します。以下はview Python 3 をインストールする手順。
· HomeBrewでのインストールは次のように実行できます: brew install python3
· MacPorts をお持ちの場合は、次のコマンドを実行できます: sudo port install python38
ステップ2. ESP-IDFの入手 ESP32向けアプリケーションをビルドするには、Espressifが提供するESP-IDFリポジトリのソフトウェアライブラリが必要です。ESP-IDFを入手するには、インストールディレクトリに移動し、git cloneコマンドでリポジトリをクローンしてください。以下の手順に従ってください。ターミナルを開き、以下のコマンドを実行してください。
エスプレシフ システムズ
36 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDFは〜/ esp / esp-idfにダウンロードされます。 特定の状況で使用するESP-IDFバージョンについては、ESP-IDFバージョンを参照してください。
ステップ3. ツールのセットアップ ESP-IDFに加えて、ESP32をサポートするプロジェクトでは、コンパイラ、デバッガ、Pythonパッケージなど、ESP-IDFで使用されるツールもインストールする必要があります。cd ~/esp/esp-idf ./install.sh esp32
または Fish シェルで cd ~/esp/esp-idf ./install.fish esp32
上記のコマンドはESP32用のツールのみをインストールします。他のチップターゲット向けのプロジェクトを開発する場合は、すべてのチップをリストして実行してください。例:ample: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
または Fish シェルで cd ~/esp/esp-idf ./install.fish esp32,esp32s2
サポートされているすべてのターゲット用のツールをインストールするには、次のコマンドを実行してください: cd ~/esp/esp-idf ./install.sh all
またはFishシェルでcd ~/esp/esp-idf ./install.fish all
注: macOS ユーザーの場合、いずれかの手順で次のようなエラーが表示された場合は、urlオープンエラー [SSL: CERTIFICATE_VERIFY_FAILED] 証明書の検証に失敗しました: ローカル発行者の証明書を取得できません (_ssl.c:xxx)
証明書をインストールするには、コンピュータのPythonフォルダにあるInstall Certificates.commandを実行してください。詳細については、「ESP-IDFツールのインストール中にダウンロードエラーが発生する」を参照してください。
代替 File ダウンロード ツールインストーラーはいくつかの fileGitHubリリースに添付されているs。GitHubへのアクセスが遅い場合は、GitHubアセットのダウンロードにEspressifnsダウンロードサーバーを優先するように環境変数を設定できます。
注: この設定はGitHubリリースからダウンロードされた個々のツールのみを制御し、 URL任意の Git リポジトリにアクセスするために使用されます。
ツールをインストールするときに Espressif ダウンロード サーバーを優先するには、install.sh を実行するときに次のコマンド シーケンスを使用します。
エスプレシフ システムズ
37 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
cd ~/esp/esp-idf で IDF_GITHUB_ASSETS=”dl.espressif.com/github_assets” をエクスポートします。./install.sh
ツールのインストールパスのカスタマイズ この手順で紹介するスクリプトは、ESP-IDFに必要なコンパイルツールをユーザーのホームディレクトリ(Linuxの場合は$HOME/.espressif)にインストールします。ツールを別のディレクトリにインストールする場合は、インストールスクリプトを実行する前に環境変数IDF_TOOLS_PATHを設定してください。ユーザーアカウントにこのパスの読み取りと書き込みに必要な権限があることを確認してください。IDF_TOOLS_PATHを変更する場合は、インストールスクリプト(install.bat、install.ps1、またはinstall.sh)とエクスポートスクリプト(export.bat、export.ps1、またはexport.sh)を実行するたびに、IDF_TOOLS_PATHが同じ値に設定されていることを確認してください。
ステップ4. 環境変数を設定する インストールされたツールは、まだPATH環境変数に追加されていません。コマンドラインからツールを使用できるようにするには、いくつかの環境変数を設定する必要があります。ESP-IDFには、そのための別のスクリプトが用意されています。ESP-IDFを使用するターミナルで、以下を実行してください。
。 $ HOME / esp / esp-idf / export.sh
または fish の場合 (fish バージョン 3.0.0 以降でのみサポートされます):
. $HOME/esp/esp-idf/export.fish
先頭のドットとパスの間のスペースに注意してください。esp-idfを頻繁に使用する場合は、export.shを実行するためのエイリアスを作成できます。
1. 次のコマンドをコピーして、shellns proに貼り付けます。file (.profile、.bashrc、.zprofileなど)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. ターミナルセッションを再起動するか、source [エクスポート先のパス] を実行して設定を更新します。file],
例えばample、source ~/.bashrc。これで、get_idf を実行して、任意のターミナルセッションで esp-idf 環境を設定または更新できます。技術的には、shellns の pro に export.sh を追加することで実現できます。file 直接実行することは推奨されません。これを行うと、すべてのターミナルセッション(IDFが不要なセッションも含む)でIDF仮想環境が有効化され、仮想環境の目的が損なわれ、他のソフトウェアにも影響が及ぶ可能性があります。
ステップ5. ESP-IDFの最初の手順 これですべての要件が満たされました。次のトピックでは、最初のプロジェクトを開始する方法について説明します。このガイドは、ESP-IDFの最初の手順に役立ちます。このガイドに従って、ESP32で新しいプロジェクトを開始し、ビルド、フラッシュ、デバイス出力のモニタリングを行ってください。
注: ESP-IDF をまだインストールしていない場合は、「インストール」に進み、手順に従ってこのガイドの使用に必要なすべてのソフトウェアを入手してください。
プロジェクトを開始する これで、ESP32用のアプリケーションを準備する準備が整いました。例: getstarted/hello_world プロジェクトから開始できます。ampESP-IDFのlesディレクトリ。
重要: ESP-IDF ビルド システムは、ESP-IDF またはプロジェクトへのパス内のスペースをサポートしていません。
プロジェクト get-started/hello_world を ~/esp ディレクトリにコピーします。
エスプレシフ システムズ
38 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
cd〜 / esp cp -r $ IDF_PATH / examples / get-started / hello_world。
注: さまざまな例がありますamp元のルプロジェクトampESP-IDFのlesディレクトリ。 上記と同じ方法で任意のプロジェクトをコピーして実行できます。 exを構築することも可能ですampファイルを最初にコピーせずにその場で読み込みます。
デバイスを接続する ESP32ボードをコンピューターに接続し、どのシリアルポートにボードが表示されているかを確認します。シリアルポートの命名規則は以下のとおりです。
· Linux: /dev/tty から始まる · macOS: /dev/cu から始まる。シリアルポート名の確認方法がわからない場合は、「ESP32 とのシリアル接続の確立」を参照してください。
注: 次の手順で必要になるので、ポート名を手元に置いておきます。
プロジェクトを構成する hello_world ディレクトリに移動し、ESP32 をターゲットとして設定し、プロジェクト構成ユーティリティ menuconfig を実行します。cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
新しいプロジェクトを開いたら、まず idf.py set-target esp32 でターゲットを設定する必要があります。プロジェクトに既存のビルドと設定がある場合は、このプロセスでクリアされ、初期化されることに注意してください。ターゲットを環境変数に保存することで、この手順を省略できます。詳細については、「ターゲットチップの選択: set-target」を参照してください。前の手順が正しく実行されていれば、次のメニューが表示されます。
図17: プロジェクト設定 – ホームウィンドウ このメニューを使用して、Wi-Fiネットワーク名とパスワード、プロセッサ速度など、プロジェクト固有の変数を設定します。ohello_worldpでは、この例のようにmenuconfigを使用してプロジェクトを設定することは省略できます。ampleは走る
エスプレシフ システムズ
39 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
デフォルトの設定。
注意: ESP32-DevKitCボードをESP32-SOLO-1モジュールと併用する場合、またはESP32-DevKitM-1ボードをESP32-MIN1-1(1U)モジュールと併用する場合は、exをフラッシュする前にmenuconfigでシングルコアモード(CONFIG_FREERTOS_UNICORE)を有効にしてください。ampレ。
注: メニューの色はターミナルによって異なる場合があります。--style オプションで外観を変更できます。詳細については、idf.py menuconfig –help を実行してください。
サポートされている開発ボードをご利用の場合は、ボードサポートパッケージを使用することで開発をスピードアップできます。詳しくは「追加のヒント」をご覧ください。
プロジェクトのビルド 次のコマンドを実行してプロジェクトをビルドします。
idf.pyビルド
このコマンドは、アプリケーションとすべてのESP-IDFコンポーネントをコンパイルしてから、ブートローダー、パーティションテーブル、およびアプリケーションバイナリを生成します。
$ idf.py build ディレクトリ /path/to/hello_world/build で cmake を実行しています “cmake -G Ninja –warn-uninitialized /path/to/hello_world” を実行しています… 初期化されていない値について警告します。 — Git が見つかりました: /usr/bin/git (バージョン “2.17.0”) — 構成により空の aws_iot コンポーネントをビルドしています — コンポーネント名: … — コンポーネント パス: …
…(ビルドシステム出力のより多くの行)
[527/527] hello_world.bin esptool.py v2.3.1 を生成しています
プロジェクトのビルドが完了しました。フラッシュするには、次のコマンドを実行してください: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world. bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/ partition-table.bin または 'idf.py -p PORT flash' を実行してください
エラーがない場合、ビルドはファームウェアバイナリ.binを生成して終了します files.
デバイスにフラッシュする 次のコマンドを実行して、ビルドしたバイナリ (bootloader.bin、partition-table.bin、hello_world.bin) を ESP32 ボードにフラッシュします。
idf.py -p PORT [-bBAUD]フラッシュ
PORTをESP32ボードのシリアルポート名に置き換えてください。また、BAUDを必要なボーレートに置き換えることで、フラッシャーのボーレートを変更することもできます。デフォルトのボーレートは460800です。idf.pyの引数の詳細については、idf.pyを参照してください。
注: オプション flash はプロジェクトを自動的にビルドしてフラッシュするため、idf.py build を実行する必要はありません。
エスプレシフ システムズ
40 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
フラッシュ中に問題が発生しましたか? 指定されたコマンドを実行して「Failed to connectp」などのエラーが表示される場合、いくつかの原因が考えられます。原因の一つとして、ビルドシステムによってチップのリセット、ROMブートローダーとのやり取り、ファームウェアのフラッシュのために呼び出されるユーティリティであるesptool.pyで問題が発生している可能性があります。簡単な解決策の一つとして、以下で説明する手動リセットをお試しください。それでも問題が解決しない場合は、トラブルシューティングで考えられる問題の詳細をご確認ください。
esptool.pyは、USBシリアル変換チップ(FTDIまたはCP210x)のDTRおよびRTS制御ラインをアサートすることで、ESP32を自動的にリセットします(詳細については、ESP32とのシリアル接続の確立を参照してください)。DTRおよびRTS制御ラインは、ESP32のGPIO0およびCHIP_PU(EN)ピンに接続され、これによりボリュームが変化します。tagDTRとRTSのレベルをeにすると、ESP32はファームウェアダウンロードモードで起動します。例としてample、ESP32 DevKitC 開発ボードの回路図を確認してください。
一般的に、公式のesp-idf開発ボードでは問題は発生しないはずです。ただし、以下の場合、esptool.pyはハードウェアを自動的にリセットできません。
· ハードウェアにGPIO0とCHIP_PUに接続されたDTRとRTSラインがありません · DTRとRTSラインの構成が異なります · そのようなシリアル制御ラインはまったくありません
使用しているハードウェアの種類によっては、ESP32 ボードを手動でファームウェア ダウンロード モード (リセット) にすることも可能です。
· Espressif社が製造する開発ボードについては、それぞれの入門ガイドまたはユーザーガイドに記載されています。例えば、ampたとえば、ESP-IDF 開発ボードを手動でリセットするには、Boot ボタン (GPIO0) を押したまま、EN ボタン (CHIP_PU) を押します。
· 他の種類のハードウェアの場合は、GPIO0 をプルダウンしてみてください。
通常操作 フラッシュすると、次のような出力ログが表示されます。
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev シリアルポート /dev/ttyUSB0 接続中……チップはESP32D0WDQ6(リビジョン0)です。機能:WiFi、BT、デュアルコア、コーディングスキームなし。水晶は40MHzです。MAC:24:0a:c4:05:b9:14 スタブをアップロードしています… スタブを実行しています… スタブを実行しています… ボーレートを460800に変更しています変更されました。フラッシュ サイズを構成しています…3072 バイトを 103 に圧縮しました…0x00008000 に書き込み中…(100 %) 0.0 秒で 3072 バイト (103 圧縮) を 0x00008000 に書き込みました (実効 5962.8 kbit/s)… データのハッシュを検証しました。26096 バイトを 15408 に圧縮しました…0x00001000 に書き込み中…(100 %) 0.4 秒で 26096 バイト (15408 圧縮) を 0x00001000 に書き込みました (実効 546.7 kbit/s)… データのハッシュを検証しました。 147104 バイトを 77364 に圧縮しました… 0x00010000 に書き込み中… (20 %) 0x00014000 に書き込み中… (40 %) 0x00018000 に書き込み中… (60 %) 0x0001c000 に書き込み中… (80 %)
(次ページに続く)
エスプレシフ システムズ
41 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
(前のページからの続き) 0x00020000 に書き込み中… (100 %) 0x00010000 に 1.9 秒で 147104 バイト (圧縮時 77364) を書き込みました (実効 615.5 kbit/s)… データのハッシュが検証されました。
離脱…RTSピンによるハードリセット…完了
フラッシュプロセスが完了するまでに問題がなければ、ボードが再起動し、ohello_worldpaアプリケーションが起動します。idf.pyを実行する代わりにEclipseまたはVS Code IDEを使用したい場合は、Eclipseプラグイン、VSCode拡張機能をご確認ください。
出力を監視する ohello_worldpis が実際に実行されているかどうかを確認するには、「idf.py -p PORT monitor」と入力してください(PORT をシリアルポート名に置き換えてください)。このコマンドは IDF Monitor アプリケーションを起動します。
$ idf.py -pモニター ディレクトリ […]/esp/hello_world/build で idf_monitor を実行しています “python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_world/build/hello_world.elf” を実行しています… — idf_monitor on 115200 —– 終了: Ctrl+] | メニュー: Ctrl+T | ヘルプ: Ctrl+T に続いて Ctrl+H –ets 2016年6月8日 00:22:57
rst:0x1 (POWERON_RESET)、boot:0x13 (SPI_FAST_FLASH_BOOT) ets 2016年6月8日 00:22:57 …
起動と診断ログが上にスクロールすると、アプリケーションによって「Hello world!」が出力されているのが確認できます。
… こんにちは、世界!10秒後に再起動します… これは、2つのCPUコア、WiFi/BT/BLE、シリコンリビジョン1、2MBの外部フラッシュを搭載したesp32チップです。最小空きヒープサイズ: 298968バイト。9秒後に再起動します… 8秒後に再起動します… 7秒後に再起動します…
IDFモニターを終了するには、ショートカットCtrl+]を使用してください。アップロード直後にIDFモニターが失敗する場合、または上記のメッセージの代わりに下記のようなランダムなメッセージが表示される場合は、ボードに26MHzの水晶振動子が使用されている可能性があります。ほとんどの開発ボード設計では40MHzが使用されているため、ESP-IDFはこの周波数をデフォルト値として使用します。
このような問題がある場合は、次の操作を行ってください。
1. モニターを終了します。2. メニュー設定に戻ります。3. コンポーネント設定 > ハードウェア設定 > メイン水晶振動子設定 > メイン水晶振動子設定に進みます。
周波数を変更するには、CONFIG_XTAL_FREQ_SEL を 26 MHz に変更します。4. その後、アプリケーションを再度ビルドしてフラッシュします。
エスプレシフ システムズ
42 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
ESP-IDF の現在のバージョンでは、ESP32 でサポートされている主な XTAL 周波数は次のとおりです。
· 26 MHz · 40 MHz
注: ビルド、フラッシュ、モニタリングを 1 つのステップにまとめることができます: idf.py -p PORT flash monitor
参照: · IDF モニター : 便利なショートカットと IDF モニターの使用に関する詳細。 · idf.py : idf.py のコマンドとオプションの完全なリファレンス。
ESP32を始めるのに必要なのはこれだけです!さあ、他の例を試す準備ができました。amples を使用するか、独自のアプリケーションの開発に直接進んでください。
重要: 例の一部amplesはESP32をサポートしていません。必要なハードウェアがESP32に含まれていないため、サポートできません。exを構築する場合ampREADMEを確認してください file サポートされているターゲットの表を参照してください。ESP32ターゲットを含むこの表が存在する場合、または表がまったく存在しない場合は、exampleはESP32で動作します。
追加のヒント
/dev/ttyUSB0 の権限に関する問題 一部のLinuxディストリビューションでは、ESP32のフラッシュ時に「ポート /dev/ttyUSB0 を開けませんでした」というエラーメッセージが表示される場合があります。これは、現在のユーザーを dialout グループに追加することで解決できます。
Pythonとの互換性 ESP-IDFはPython 3.7以降をサポートしています。この要件を満たす最新バージョンにオペレーティングシステムをアップグレードすることをお勧めします。その他の選択肢としては、Pythonをソースからインストールするか、pyenvなどのPythonバージョン管理システムを使用する方法があります。
ボードサポートパッケージから始めましょう。一部の開発ボードでは、プロトタイピングを高速化するために、ボードサポートパッケージ(BSP)を使用できます。これにより、特定のボードの初期化が数回の関数呼び出しで簡単に行えます。BSPは通常、開発ボードに搭載されているすべてのハードウェアコンポーネントをサポートします。ピン配置の定義と初期化関数に加えて、BSPにはセンサー、ディスプレイ、オーディオコーデックなどの外部コンポーネント用のドライバーが付属しています。BSPはIDFコンポーネントマネージャーを介して配布されるため、IDFコンポーネントレジストリで見つけることができます。ampESP-WROVER-KIT BSPをプロジェクトに追加する方法のサンプル: idf.py add-dependency esp_wrover_kit
もっと元ampBSPの使用例についてはBSP exをご覧ください。ampレフォルダ。
ヒント: ESP-IDF の更新 ESP-IDF は定期的に更新することをお勧めします。新しいバージョンではバグが修正され、新機能が追加される可能性があるためです。ESP-IDF の各メジャーリリースバージョンとマイナーリリースバージョンにはサポート期間が設定されており、リリースブランチのサポート終了 (EOL) が近づいた場合は、すべてのユーザーにプロジェクトをより新しい ESP-IDF リリースにアップグレードすることをお勧めします。サポート期間の詳細については、ESP-IDF のバージョンをご覧ください。
エスプレシフ システムズ
43 ドキュメントのフィードバックを送信
リリース v5.0.9
第1章 はじめに
更新を行う最も簡単な方法は、既存の esp-idf フォルダを削除し、手順 2. ESP-IDF の取得で説明した初期インストールを実行する場合と同様に、再度クローンを作成することです。もう 1 つの解決策は、変更された部分のみを更新することです。更新手順は、使用している ESP-IDF のバージョンによって異なります。ESP-IDF を更新した後、新しい ESP-IDF バージョンで異なるバージョンのツールが必要になる場合に備えて、インストール スクリプトを再度実行してください。手順 3. ツールのセットアップを参照してください。新しいツールがインストールされたら、エクスポート スクリプトを使用して環境を更新します。手順 4. 環境変数のセットアップを参照してください。
関連ドキュメント · ESP32とのシリアル接続の確立 · Eclipseプラグイン · VSCode拡張機能 · IDFモニター
1.4 最初のプロジェクトを構築する
ESP-IDF がすでにインストールされていて、IDE を使用していない場合は、「Windows でプロジェクトを開始する」または「Linux および macOS でプロジェクトを開始する」に従って、コマンド ラインから最初のプロジェクトをビルドできます。
1.5 ESP-IDFをアンインストールする
ESP-IDF を削除する場合は、「ESP-IDF のアンインストール」に従ってください。
エスプレシフ システムズ
44 ドキュメントのフィードバックを送信
リリース v5.0.9
第2章
APIリファレンス
2.1 API規約
このドキュメントでは、ESP-IDF アプリケーションプログラミングインターフェース (API) に共通する規則と前提条件について説明します。ESP-IDF は、いくつかの種類のプログラミングインターフェースを提供します。
· パブリックヘッダーで宣言されたC関数、構造体、列挙型、型定義、およびプリプロセッサマクロ fileESPIDFコンポーネントのAPIリファレンスセクションの様々なページに、これらの関数、構造体、および型の説明が記載されています。
· ビルドシステムの関数、定義済み変数、およびオプション。これらはビルドシステムガイドに記載されています。· Kconfigオプションはコード内およびビルドシステム内で使用できます(CMakeLists.txt)。 files. · ホストツールとそのコマンドラインパラメータもESP-IDFインターフェースの一部です。ESP-IDFは、ESP-IDF専用に作成されたコンポーネントとサードパーティライブラリで構成されています。場合によっては、サードパーティライブラリにESP-IDF固有のラッパーが追加され、よりシンプルなインターフェース、または他のESP-IDF機能との統合性を高めたインターフェースが提供されます。また、サードパーティライブラリのオリジナルAPIがアプリケーション開発者に提供される場合もあります。以下のセクションでは、ESP-IDF APIのいくつかの側面とその使用方法について説明します。
2.1.1エラー処理
ほとんどのESP-IDF APIは、esp_err_t型で定義されたエラーコードを返します。エラー処理方法の詳細については、「エラー処理」セクションを参照してください。「エラーコードリファレンス」には、ESP-IDFコンポーネントによって返されるエラーコードのリストが記載されています。
2.1.2 構成構造
重要: 構成構造を正しく初期化することは、アプリケーションを ESP-IDF の将来のバージョンと互換性を持たせる上で重要な部分です。
ESP-IDFのほとんどの初期化関数や設定関数は、設定構造体へのポインタを引数として受け取ります。例えばamp上:
45
第2章 APIリファレンス
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, .arg = callback_arg, .name = “my_timer”
}; esp_timer_handle_t my_timer; esp_err_t err = esp_timer_create(&my_timer_args, &my_timer);
初期化関数は構成構造体へのポインターを保存することはないため、構造体をスタック上に割り当てても安全です。
アプリケーションは構造体のすべてのフィールドを初期化する必要があります。以下は誤りです。
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* 誤り! フィールド .arg および .name は初期化されていません */ esp_timer_create(&my_timer_args, &my_timer);
ほとんどのESP-IDF examples は構造体の初期化に C99 指定初期化子を使用します。これは、フィールドのサブセットを設定し、残りのフィールドをゼロ初期化する簡潔な方法を提供するためです。
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* 正しい。フィールド .arg と .name はゼロ初期化される */
};
C++言語はC++20まで指定初期化子構文をサポートしていませんが、GCCコンパイラは拡張機能として部分的にサポートしています。C++コードでESP-IDF APIを使用する場合は、以下のパターンの使用を検討してください。
esp_timer_create_args_t my_timer_args = {}; /* すべてのフィールドはゼロで初期化されます */ my_timer_args.callback = &my_timer_callback;
デフォルトの初期化子
一部の構成構造では、ESP-IDF はフィールドのデフォルト値を設定するためのマクロを提供します。
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG は指定された初期化子に展開されます。
これですべてのフィールドがデフォルト値に設定されました。どのフィールドも変更可能です: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
特定の構成構造にデフォルトの初期化マクロが提供されている場合は、必ずそれを使用することをお勧めします。
2.1.3 プライベートAPI
特定のヘッダー fileESP-IDFのヘッダーには、ESP-IDFソースコード内でのみ使用され、アプリケーションでは使用されないことを意図したAPIが含まれています。このようなヘッダーは file多くの場合、コンポーネントの名前またはパスには private または esp_private が含まれます。hal などの特定のコンポーネントには、プライベートAPIのみが含まれます。プライベートAPIは、マイナーリリースまたはパッチリリース間で互換性のない方法で削除または変更される可能性があります。
2.1.4 exのコンポーネントampleプロジェクト
ESP-IDF exampファイルには、ESP-IDF APIの使用方法を示すさまざまなプロジェクトが含まれています。exでのコードの重複を減らすためにamplesでは、複数のexで使用されるコンポーネント内にいくつかの共通ヘルパーが定義されています。ampレ。
エスプレシフ システムズ
46 ドキュメントのフィードバックを送信
リリース v5.0.9
第2章 APIリファレンス
これには、
ドキュメント / リソース
![]() |
Espressif Systems ESP32 Dev Kitc 開発ボード [pdf] ユーザーガイド ESP32 Dev Kitc開発ボード、ESP32、Dev Kitc開発ボード、Kitc開発ボード、開発ボード、ボード |
