=== ESPr One 32(ESP-WROOM-32 Arduino互換ボード)のピン配置について ===
[https://www.switch-science.com/catalog/3555/ ESPr One 32]はWi-Fiモジュール[https://www.switch-science.com/catalog/3156/ ESP-WROOM-32]をArduinoフォームファクタの基板に搭載してArduinoと同じように使えるようにしたボードです。ただし、Arduino Uno R3等と完全にピン配置が互換にはできないため、本ページでは互換性を保つために変更すべき点を記述します。
[[Image(http://trac.switch-science.com/raw-attachment/wiki/espr_one32/IMG_5183.png)]]
**資料**
* [http://trac.switch-science.com/wiki/esp32_setup ESP-WROOM-32のセットアップについて]
* [http://trac.switch-science.com/wiki/esp32_tips ESP-WROOM-32に関するTIPS]
==== 基本的なピンアサイン ====
||Arduinoのピン番号||ESP32のIO番号||ESP32の主機能||
|| || || ||
||D0||3||Serial RXD||
||D1||1||Serial TXD||
||D2||15||HSPI SS, T3, A13||
||D3||13||HSPI MOSI, T4, A14||
||D4||12||HSPI MISO, T5, A15||
||D5||14||HSPI SCK, T6, A16||
||D6||0||boot mode, A11, T1||
||D7||2||boot mode, A12, T2||
||D8||16||Serial1||
||D9||17||Serial1||
||D10||5||VSPI CS||
||D11||23||VSPI MOSI||
||D12||19||VSPI MISO||
||D13||18||VSPI CLK||
||A0||25||DAC1, A18||
||A1||26||DAC2, A19||
||A2||27||A17||
||A3||4||A10, T0||
||A4||21||SDA||
||A5||22||SCL||
* 例えば、ArduinoのD4ピンに信号を出したいなと思ったときは、ESP32のIO12がD4へ割り当てられていることを上の表から確認して、スケッチには `12` を記述します (例: `digitalWrite(12, HIGH);`)。
* Arduino A4,A5はアナログ入力として使えません。デジタル入出力およびI2C専用となっています。
* ESP32のIO32,IO33は、本基板では発振子専用としており、GPIOピンとして利用できません。
* IO0, IO2はESP32のブートモード切り替えに使われています。シールドと接続すると起動できなくなるといった干渉がある場合、背面のジャンパを切り離すことで起動モードの不用意な変更を防ぐことができます。
* また、ESP32のA10以降は現在、[https://github.com/espressif/arduino-esp32/issues/102 WiFi機能と並行して利用できないという仕様]があります。
==== ジャンパによって変更可能なピン ====
||Arduinoのピン番号||ESP32のIO番号||ESP32の主機能||設置場所||
|| || || || ||
||A0||36||A0||基板表||
||A1||39||A3||基板表||
||A2||34||A6||基板表||
||A3||35||A7||基板裏||
* ここで割当可能なESP32のA0,A3,A6,A7は入力としてのみ利用できます。
* A0, A1, A2 の変更用ジャンパは基板表に設置されています。
[[Image(http://trac.switch-science.com/raw-attachment/wiki/espr_one32/IMG_5185_sj.png)]]
* 画像上部からA0, A1, A2用となっています。デフォルトでは全部左側が導通するようになっています。
* ジャンパの右側を切断し、左側をハンダを盛るなどして導通させると機能が切り替わります。
||左のパッド||Arduinoのピン||右側のパッド||
|| || || ||
||IO25(A18)||A0||IO36(A0)||
||IO26(A19)||A1||IO39(A3)||
||IO27(A17)||A2||IO34(A6)||
* A3の変更用ジャンパは基板表に設置されています。
[[Image(http://trac.switch-science.com/raw-attachment/wiki/espr_one32/IMG_5186_sj.png)]]
* デフォルトでは右側が導通するようになっています。
||左のパッド||Arduinoのピン||右側のパッド||
|| || || ||
||IO35(A7)||A0||IO4(A10)||
* 例えば、ESP32のタッチ入力 `T0` が使いたい、となった場合は以下のように考えます。
1. `T0` が使えるのは ESP32 の IO4 だけである。
2. IO4 が割り当てられているのは、上の表より、ArduinoのA3である
3. よって、スケッチには`T0`と記述し、基板上のA3をタッチするとタッチ検出ができる
==== なんでこういう配置なのか? ====
* D0,D1
* ESP32のSerialの推奨ピンです。
* D2~D5
* ESP32のSPI1(HSPI)の推奨ピンが、D10~D13と同じように並んでいます。
* D6,D7
* 起動モード選択用なので、ジャンパで外部と切り離せるようになっています。タッチ入力は起動後も利用できるので、全く引き出さないのはもったいないという判断です。
* D8,D9
* Serial1の出力を並べました。ATコマンド利用時は、ここを使うことになります。
* D10~D13
* ESP32のSPI(VSPI)の推奨ピンです。
* A0,A1
* Arduino M0 pro/zero のDACピンがA0になっているので、ESP32のDACピンもこの付近に設置しました。
* A2,A3
* 前述のようにESP32のA10~はADC2系統とIC内部では分類され、WiFiと共存できません。しかし、ADC1系統のピンは信号の出力ができません。将来的にADC2とWiFiが共存できるようになることを期待しています。
* A4,A5
* 割り当てられるピンが不足したため、アナログ入力機能は省きI2Cおよびデジタル入出力専用としました。
* 切り替え先のIO34,35,336,39
* 内部ではADC1系統と分類されているADCです。ADC2から切り替えて使います。信号出力ができないため、低優先度としました。