ESP32
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* ESP32(ESP-WROOM32)のTips [#m08c9183]
筆者は純粋なハードウエアエンジニアです。~
ソフトウエア開発はほとんどしたことがなく、ソフト屋からし...
そういったハード屋視線でのソフト開発のTipsを記録していま...
** 開発環境は2通りある [#y0dab866]
*** Arduino IDE [#l3c9af36]
Arduinoの開発環境にボードデータを追加することで、ATMEL AV...
現在主流と思われる開発環境で、Arduino Uno等の経験がある人...
*** ESP-IDF [#g60263b0]
こちらが公式な開発環境。~
昔ながらのLinuxを知っている人なら入りやすい。~
>make config, make all と、コマンドライン操作でビルドす...
** 使うと填まるIOポート(実質的に使用禁止) [#ab9c8207]
- IO-0/2:boot modeを確定するピン
- IO6/7/8/9/10/11:Serial FLASHに接続されている
- IO-12:Serial FLASHの電圧を確定するピン(Reset時にOpen...
- IO-34/35/36/39:IN専用ピン(OUT出来ない)
- ADC8-15(WiFi使用時のみ使用不可)
これらは起動時や動作時に特殊な機能をもっているピンもある...
例えばIO-12はプルアップしておくと起動に失敗する。起動後に...
しかしそれでも割り込み動作に不安定さが残るため(例えばIO-...
ArduinoではIO-12とIO-13が割り込みピンなので、それを使用し...
** 外部割り込み [#nd7dbb21]
ESP32はIO-0からIO-15が外部割り込みのピンに使用できるとい...
ほぼすべてのデジタルピンが割り込みに使えるように見える。~
公式に使用できるIOピンは不明。~
** 割り込みピンの初期化 [#jb0c3d3e]
attachInterrupt(割り込み番号, 呼び出す関数, ピン状態)
ピン状態は次の種類がある~
- LOW:ピンがLOWのとき
- CHANGE:ピンの状態が変化したとき(L→HまたはH→Lのエッジ)
- RISING:ピンの状態がLOWからHIGHに変わったとき(L→Hの立...
- FALLING:ピンの状態がHIGHからLOWに変わったとき(H→Lの立...
*** 割り込み番号はチップ依存があるので、関数を使って置き...
attachInterrupt(digitalPinToInterrupt(ENC_A), ENC_READ, ...
attachInterrupt(digitalPinToInterrupt(ENC_B), ENC_READ, ...
ENC_AはデジタルピンのIO番号。ここに繋いだスイッチの変化で...
ENC_READは割り込みが入ったときに実行したい関数名。~
CHANGEはピンに変化したときに割り込みを発生させる指定。~
これはロータリーエンコーダーを読み込むときの例で、ENC_A(...
** ADC2_n(ADC8-15)はWiFi使用時は使えない [#d4976cb7]
ESP32には2個のADCを搭載しており、それぞれADC1とADC2となっ...
また、それぞれのADCはMUXを通して各8chに拡張されていて、合...
しかしADC2側のポートはWiFiと排他になっており、WiFI使用時...
したがって、WiFiと同時に使用できるADCチャンネルは下記の通...
- ADC0 IO36
- ADC1 --
- ADC2 --
- ADC3 IO39
- ADC4 IO32
- ADC5 IO33
- ADC6 IO34
- ADC7 IO35
** プラットホームの種類と特徴 [#nfb4c001]
*** ESP32-DevKitC [#zc123fb1]
スイッチサイエンスや秋月で買えるリファレンスモジュール。~
このモジュールは多くのIOピンが使える。
*** WeMos D1 R32 [#j10d499e]
Arduino Uno互換形状のモジュール。~
使用できるIOピンはDevKitから大幅に減っている。~
メスのピンヘッダが付いているので開発は楽。
*** WeMos LOLIN [#wa64ce45]
形状はDevKitに似ていて、Li-ion電池を接続できるコネクタが...
LiPo電池を繋ぐと充電してワイヤレスポータブル機器を簡単に...
ただし、このモジュールはDevKitと似ているが、充電コネクタ...
具体的にはSDカードインタフェースのピンが無い。
** 買ってはならないモジュール [#fd078d03]
*** Amazon等で買える「HiLetgoのESP-32S NodeMCU開発ボード...
https://www.amazon.co.jp/gp/product/B0718T232Z/~
現在注文できない状態になっている。(レポートしたからか?)~
このモジュールは回路が間違っていて、修正しないとArduino I...
書き込みのタイミングでプッシュスイッチを操作してやれば可...
修正方法は、抵抗1個削除、コンデンサ3個追加(空中配線)が...
** 開発の作例ページ [#gf7c4d80]
- Bluetoosh接続で、ESP32をキーボードやマウスの振る舞いを...
→BT LEのHIDデバイスとして動かすことが出来る。~
http://neocat.hatenablog.com/entry/2019/09/28/151947~
キーボードライブラリ~
https://github.com/T-vK/ESP32-BLE-Keyboard~
マウスライブラリ~
https://github.com/T-vK/ESP32-BLE-Keyboard
- デュアルコアを生かしたマルチタスク~
DevKitのArduino環境はRTOSで動いている。~
例えばWiFi等の重い処理はコア0に、ユーザプログラムはコア1...
コアを指定したスレッドの作成方法。~
https://www.mgo-tec.com/blog-entry-arduino-esp32-multi-ta...
** その他の情報ページ [#md377605]
- DevKitの電源周りに注意~
3.3V系のLDO AMS1117が電圧ドロップを起こしている。~
WiFiの突入電流が大きいのか?~
http://nemuisan.blog.bai.ne.jp/?eid=220875
終了行:
* ESP32(ESP-WROOM32)のTips [#m08c9183]
筆者は純粋なハードウエアエンジニアです。~
ソフトウエア開発はほとんどしたことがなく、ソフト屋からし...
そういったハード屋視線でのソフト開発のTipsを記録していま...
** 開発環境は2通りある [#y0dab866]
*** Arduino IDE [#l3c9af36]
Arduinoの開発環境にボードデータを追加することで、ATMEL AV...
現在主流と思われる開発環境で、Arduino Uno等の経験がある人...
*** ESP-IDF [#g60263b0]
こちらが公式な開発環境。~
昔ながらのLinuxを知っている人なら入りやすい。~
>make config, make all と、コマンドライン操作でビルドす...
** 使うと填まるIOポート(実質的に使用禁止) [#ab9c8207]
- IO-0/2:boot modeを確定するピン
- IO6/7/8/9/10/11:Serial FLASHに接続されている
- IO-12:Serial FLASHの電圧を確定するピン(Reset時にOpen...
- IO-34/35/36/39:IN専用ピン(OUT出来ない)
- ADC8-15(WiFi使用時のみ使用不可)
これらは起動時や動作時に特殊な機能をもっているピンもある...
例えばIO-12はプルアップしておくと起動に失敗する。起動後に...
しかしそれでも割り込み動作に不安定さが残るため(例えばIO-...
ArduinoではIO-12とIO-13が割り込みピンなので、それを使用し...
** 外部割り込み [#nd7dbb21]
ESP32はIO-0からIO-15が外部割り込みのピンに使用できるとい...
ほぼすべてのデジタルピンが割り込みに使えるように見える。~
公式に使用できるIOピンは不明。~
** 割り込みピンの初期化 [#jb0c3d3e]
attachInterrupt(割り込み番号, 呼び出す関数, ピン状態)
ピン状態は次の種類がある~
- LOW:ピンがLOWのとき
- CHANGE:ピンの状態が変化したとき(L→HまたはH→Lのエッジ)
- RISING:ピンの状態がLOWからHIGHに変わったとき(L→Hの立...
- FALLING:ピンの状態がHIGHからLOWに変わったとき(H→Lの立...
*** 割り込み番号はチップ依存があるので、関数を使って置き...
attachInterrupt(digitalPinToInterrupt(ENC_A), ENC_READ, ...
attachInterrupt(digitalPinToInterrupt(ENC_B), ENC_READ, ...
ENC_AはデジタルピンのIO番号。ここに繋いだスイッチの変化で...
ENC_READは割り込みが入ったときに実行したい関数名。~
CHANGEはピンに変化したときに割り込みを発生させる指定。~
これはロータリーエンコーダーを読み込むときの例で、ENC_A(...
** ADC2_n(ADC8-15)はWiFi使用時は使えない [#d4976cb7]
ESP32には2個のADCを搭載しており、それぞれADC1とADC2となっ...
また、それぞれのADCはMUXを通して各8chに拡張されていて、合...
しかしADC2側のポートはWiFiと排他になっており、WiFI使用時...
したがって、WiFiと同時に使用できるADCチャンネルは下記の通...
- ADC0 IO36
- ADC1 --
- ADC2 --
- ADC3 IO39
- ADC4 IO32
- ADC5 IO33
- ADC6 IO34
- ADC7 IO35
** プラットホームの種類と特徴 [#nfb4c001]
*** ESP32-DevKitC [#zc123fb1]
スイッチサイエンスや秋月で買えるリファレンスモジュール。~
このモジュールは多くのIOピンが使える。
*** WeMos D1 R32 [#j10d499e]
Arduino Uno互換形状のモジュール。~
使用できるIOピンはDevKitから大幅に減っている。~
メスのピンヘッダが付いているので開発は楽。
*** WeMos LOLIN [#wa64ce45]
形状はDevKitに似ていて、Li-ion電池を接続できるコネクタが...
LiPo電池を繋ぐと充電してワイヤレスポータブル機器を簡単に...
ただし、このモジュールはDevKitと似ているが、充電コネクタ...
具体的にはSDカードインタフェースのピンが無い。
** 買ってはならないモジュール [#fd078d03]
*** Amazon等で買える「HiLetgoのESP-32S NodeMCU開発ボード...
https://www.amazon.co.jp/gp/product/B0718T232Z/~
現在注文できない状態になっている。(レポートしたからか?)~
このモジュールは回路が間違っていて、修正しないとArduino I...
書き込みのタイミングでプッシュスイッチを操作してやれば可...
修正方法は、抵抗1個削除、コンデンサ3個追加(空中配線)が...
** 開発の作例ページ [#gf7c4d80]
- Bluetoosh接続で、ESP32をキーボードやマウスの振る舞いを...
→BT LEのHIDデバイスとして動かすことが出来る。~
http://neocat.hatenablog.com/entry/2019/09/28/151947~
キーボードライブラリ~
https://github.com/T-vK/ESP32-BLE-Keyboard~
マウスライブラリ~
https://github.com/T-vK/ESP32-BLE-Keyboard
- デュアルコアを生かしたマルチタスク~
DevKitのArduino環境はRTOSで動いている。~
例えばWiFi等の重い処理はコア0に、ユーザプログラムはコア1...
コアを指定したスレッドの作成方法。~
https://www.mgo-tec.com/blog-entry-arduino-esp32-multi-ta...
** その他の情報ページ [#md377605]
- DevKitの電源周りに注意~
3.3V系のLDO AMS1117が電圧ドロップを起こしている。~
WiFiの突入電流が大きいのか?~
http://nemuisan.blog.bai.ne.jp/?eid=220875
ページ名: