いまさら感満載ですが、NodeMCU DevKitをMicroPythonベースで使うに際し、ピンアサインについてネット検索していたら何だか使えるピン、使えないピンなどあるようで、その辺りを自分でも調べておくことにした次第。
ESP-12EとESP-WROOM-02の違いは、見たまんまサイズとピン数、アンテナ形状が主な点。内部回路の構成は心臓部であるESP8266EXは元より内部配線も概ね同じだったりするので技適って何だろう?と少し疑問に感じますが、オトナとオカネの事情があるのでしょう。しっかり管理する事自体は良い事ですしね。
以下では、NodeMCU DevKitの並びを基準に、ESP-12E、ESP-WROOM-02、ESP8266EXとのピンの配置を表にまとめてみました。
NodeMCU DevKit(Amica)のピン配置

ポート(ピン)は、便宜上左側をJ1、右側をJ2と二分して番号を割り当てています。
NodeMCU DevKitに搭載されているのは、AI-Thinker製のESP-12Eモジュール。
NodeMCU DevKitに搭載されているのは、AI-Thinker製のESP-12Eモジュール。
ESP-12Eのピン配置

ただ、ESP-12Eは技適が通っていないので日本国内でのWiFiの使用は禁止されています。って事で国内での使用が可能な技適マーク付きの本家Espressif製のESP-WROOM-02モジュールも念のため確認してくことに。
ESP-WROOM-02のピン配置

ESP8266EXのピン配置

モジュール及びNodeMCU DevKitの各ピンとの"直接的な接続がない"端子のリスト。
Pin | Name | Type | Function |
---|---|---|---|
2 | LNA | I/O | RFアンテナインターフェース |
5 | VDD_RTC | P | NC(1.1V) |
27 | XTAL_OUT | I/O | 水晶発振器の出力に接続 |
28 | XTAL_IN | I/O | 水晶発振器の入力に接続 |
31 | RES12K | I | 12kΩの抵抗を介してグランドへ接続 |
ESP PIN LAYOUT TABLE
NodeMCU | ESP-12E | ESP-WROOM-02 | ESP8266EX | |||||||
---|---|---|---|---|---|---|---|---|---|---|
Pin | Name | Pin | Name | Pin | Name | Pin | Name | Function | ||
J1-01 | A0 | 2 | ADC | 16 | TOUT | 6 | TOUT | ADCピン / 入力電源テスト。同時使用不可 | ||
J1-02 | RSV | |||||||||
J1-03 | RSV | |||||||||
J1-04 | SD3 | 12 | IO10 | 19 | SD_DATA_3 | GPIO10SPIWP/HSPIWP | ||||
J1-05 | SD2 | 11 | IO9 | 18 | SD_DATA_2 | GPIO9SPIHD/HSPIHD | ||||
J1-06 | SD1 | 13 | MOSI | 23 | SD_DATA_1 | GPIO8SPI_MOSI | ||||
J1-07 | CMD | 9 | CS0 | 20 | SD_CMD | GPIO11SPI_CS0 | ||||
J1-08 | SD0 | 10 | MISO | 22 | SD_DATA_0 | GPIO7SPI_MISO | ||||
J1-09 | CLK | 14 | SCLK | 21 | SD_CLK | GPIO6SPI_CLK | ||||
J1-10 | GND | See Power supply table. | ||||||||
J1-11 | 3V3 | |||||||||
J1-12 | EN | 3 | EN | 2 | EN | 7 | CHIP_EN | High: チップON / Low: チップOFF | ||
J1-13 | RST | 1 | RST | 15 | RST | 32 | EXT_RSTB | 外部リセット信号(Active Low) | ||
J1-14 | GND | See Power supply table. | ||||||||
J1-15 | Vin | |||||||||
J2-01 | D0 | 4 | IO16 | 17 | IO16 | 8 | XPD_DCDC | GPIO16 | ||
J2-02 | D1 | 20 | IO5 | 14 | IO5 | 24 | GPIO5 | |||
J2-03 | D2 | 19 | IO4 | 10 | IO4 | 16 | GPIO4 | |||
J2-04 | D3 | 18 | IO0 | 8 | IO0 | 15 | GPIO0 | SPI_CS2 | ||
J2-05 | D4 | 17 | IO2 | 7 | IO2 | 14 | GPIO2 | U1TXD | ||
J2-06 | 3V3 | See Power supply table. | ||||||||
J2-07 | GND | |||||||||
J2-08 | D5 | 5 | IO14 | 3 | IO14 | 9 | MTMS | GPIO14HSPI_CLK | ||
J2-09 | D6 | 6 | IO12 | 4 | IO12 | 10 | MTDI | GPIO12HSPI_MISO | ||
J2-10 | D7 | 7 | IO13 | 5 | IO13 | 12 | MTCK | GPIO13HSPI_MOSIUART0_CTS | ||
J2-11 | D8 | 16 | IO15 | 6 | IO15 | 13 | MTDO | GPIO15HSPI_CSUART0_RTS | ||
J2-12 | RX | 21 | RXD | 11 | RXD | 25 | U0RXD | GPIO3 | ||
J2-13 | TX | 22 | TXD | 12 | TXD | 26 | U0TXD | GPIO1SPI_CS1 | ||
J2-14 | GND | See Power supply table. | ||||||||
J2-15 | 3V3 |
POWER SUPPLY TABLE
NodeMCU | ESP-12E | ESP-WROOM-02 | ESP8266EX | |||||||
---|---|---|---|---|---|---|---|---|---|---|
Pin | Name | Pin | Name | Pin | Name | Pin | Name | Function | ||
J1-10 | GND | 15 | GND | 9 | GND | 33 | GND | グランド | ||
J1-14 | GND |
13
|
GND
|
|||||||
J2-07 | GND | |||||||||
J2-14 | GND | 18 | GND | |||||||
J1-11 | 3V3 | 8 | VCC | 1 | 3V3 | 1 | VDDA | アナログ電源2.5V〜3.6V 1μFパスコン |
||
29 | VDDD | |||||||||
30 | VDDA | |||||||||
J2-06 | 3V3 | 3 | VDDA3P3 | アンプ電源2.5V〜3.6V 10μF / 0.1μFパスコン |
||||||
4 | VDDA3P3 | |||||||||
11 | VDDPST | デジタルI/O電源(1.8V〜3.6V) | ||||||||
J2-15 | 3V3 | 17 | VDDPST | |||||||
J2-15 | Vin | 5V Input |
各ピンは、ほぼ直結されているのでESP8266EXを調べればおのずとピンの機能は把握出来そうですね。ESP8266EXには0〜17までの17ピンのGPIOが用意されています。ESP-12Eでは、全て実装されていますが、ESP-WROOM-02ではGPIO6~11までの6ピンは接続されていません。このGPIO6~11は、セキュアデジタル入出力インタフェース(SDIO)で、SPIとして外部FlashROMと接続されています。
MicroPythonでは、この"General SPI"は選択不可。
他にも取り扱いに注意が必要なピンがあります。
USBやシリアル変換ケーブルなどで接続してREPL(Read-Eval-Print Loop)で操作する場合はGPIOとして使用しない方が良いですが、WiFi経由でWebREPLからアクセスするのであれば利用可能です。どちらのケースにおいても電源投入時に26U0TXDが"LOW"に設定される回路を組んでしまうと根本的に動かなくなる原因となるので注意しましょう。
電源投入後もしくはRESET直後に"UART"か"FlashROM"からの起動かを判定するための設定に用いられるピンです。
起動設定は上の表の様に行う事が可能です。
NodeMCU DevKitでは、13MTDOは12kΩの抵抗でプルダウン、14GPIO2と15GPIO0はそれぞれ12kΩの抵抗でプルアップされているので、標準でFlashROMから起動する様になっています。NodeMCU DevKitに限らず同様の設定を行わないと起動しないんですけどね。
これらのピンは起動時以降での使用には問題ありませんが、特にプルアップされているピンはプログラムでの指定がない限り"HIGH"出力となるので回路を組む際に注意しておく必要があります。
ここまでの情報のまとめ。
SDIO & General SPI (Master/Slave)
ESP8266EX | ||
---|---|---|
Pin | Name | Function |
18 | SD_DATA_2 | GPIO9SPIHD / HSPIHD |
19 | SD_DATA_3 | GPIO10SPIWP / HSPIWP |
20 | SD_CMD | GPIO11SPI_CS0 |
21 | SD_CLK | GPIO6SPI_CLK |
22 | SD_DATA_0 | GPIO7SPI_MISO |
23 | SD_DATA_1 | GPIO8SPI_MOSI |
他にも取り扱いに注意が必要なピンがあります。
UARTのピン定義
ESP8266EX | ||
---|---|---|
Pin | Name | Function |
25 | U0RXD | GPIO3 |
26 | U0TXD | GPIO1SPI_CS1 |
BOOTモード選択ピン
ESP8266EX | ||
---|---|---|
Pin | Name | Function |
13 | MTDO | GPIO15HSPI_CSUART0_RTS |
14 | GPIO2 | U1TXD |
15 | GPIO0 | SPI_CS2 |
MODE | 13 | MTDO | 14 | GPIO2 | 15 | GPIO0 |
---|---|---|---|---|---|---|
UART | LOW | LOW | HIGH | |||
Flash ROM | LOW | HIGH | HIGH |
NodeMCU DevKitでは、13MTDOは12kΩの抵抗でプルダウン、14GPIO2と15GPIO0はそれぞれ12kΩの抵抗でプルアップされているので、標準でFlashROMから起動する様になっています。NodeMCU DevKitに限らず同様の設定を行わないと起動しないんですけどね。
これらのピンは起動時以降での使用には問題ありませんが、特にプルアップされているピンはプログラムでの指定がない限り"HIGH"出力となるので回路を組む際に注意しておく必要があります。
ここまでの情報のまとめ。
NodeMCU DevKItのGPIOピン
NodeMCU DEvKit | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Pin | Name | GPIO | Internal Resistor |
PWM | SPI | I2C | DAC | Voltage | ||||||||
Hardware | CS | Software | ||||||||||||||
J2-01 | D0 | 16 | pull-down | × | - | △ | △ | △ | △ | 3.3V | ||||||
J2-02 | D1 | 5 | pull-up | ○ | - | ○ | ○ | ○ | ○ | 1.5mV | ||||||
J2-03 | D2 | 4 | pull-up | ○ | - | ○ | ○ | ○ | ○ | 1.5mV | ||||||
J2-04 | D3 | 0 | pull-up | ○ | - | △ | △ | △ | △ | 3.3V | ||||||
J2-05 | D4 | 2 | pull-up | ○ | - | △ | △ | △ | △ | 3.3V | ||||||
J2-08 | D5 | 14 | pull-up | ○ | CLK | - | ○ | ○ | ○ | 3.3V | ||||||
J2-09 | D6 | 12 | pull-up | ○ | MISO | - | ○ | ○ | ○ | 3.3V | ||||||
J2-10 | D7 | 13 | pull-up | ○ | MOSI | - | ○ | ○ | ○ | 3.3V | ||||||
J2-11 | D8 | 15 | pull-up | ○ | - | CS | △ | △ | △ | 3.3V | ||||||
J2-12 | RX | 3 | pull-up | × | - | △ | △ | △ | △ | 50mV | ||||||
J2-13 | TX | 1 | pull-up | × | - | △ | △ | △ | △ | 59mV |
DACは、GPIOのほとんどで使用可能ですが、ADCはJ1-01A0のみとなります。
当初の疑問である"どのピンが使えるの?"への解は、使おうと思えば"J1-04SD3~J1-09CLKを除く全てのGPIOが使えます"となりますが、最も安全に使用できるのは、J2-02D1とJ2-03D2の2つとなります。
などと、知っていくと案外GPIOが少なく感じてきますねぇ。
当初の疑問である"どのピンが使えるの?"への解は、使おうと思えば"J1-04SD3~J1-09CLKを除く全てのGPIOが使えます"となりますが、最も安全に使用できるのは、J2-02D1とJ2-03D2の2つとなります。
などと、知っていくと案外GPIOが少なく感じてきますねぇ。
0 件のコメント:
コメントを投稿