2019年6月17日月曜日

MicroPython&NodeMCU DevKitの有効なピンを確認

いまさら感満載ですが、NodeMCU DevKitをMicroPythonベースで使うに際し、ピンアサインについてネット検索していたら何だか使えるピン、使えないピンなどあるようで、その辺りを自分でも調べておくことにした次第。
NodeMCU DevKit(Amica)のピン配置
ポート(ピン)は、便宜上左側をJ1、右側をJ2と二分して番号を割り当てています。
NodeMCU DevKitに搭載されているのは、AI-Thinker製のESP-12Eモジュール。
ESP-12Eのピン配置
ただ、ESP-12Eは技適が通っていないので日本国内でのWiFiの使用は禁止されています。って事で国内での使用が可能な技適マーク付きの本家Espressif製のESP-WROOM-02モジュールも念のため確認してくことに。
ESP-WROOM-02のピン配置
ESP-12EとESP-WROOM-02の違いは、見たまんまサイズとピン数、アンテナ形状が主な点。内部回路の構成は心臓部であるESP8266EXは元より内部配線も概ね同じだったりするので技適って何だろう?と少し疑問に感じますが、オトナとオカネの事情があるのでしょう。しっかり管理する事自体は良い事ですしね。
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Ωの抵抗を介してグランドへ接続
以下では、NodeMCU DevKitの並びを基準に、ESP-12E、ESP-WROOM-02、ESP8266EXとのピンの配置を表にまとめてみました。

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と接続されています。
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
MicroPythonでは、この"General SPI"は選択不可。

他にも取り扱いに注意が必要なピンがあります。
UARTのピン定義
ESP8266EX
Pin Name Function
25 U0RXD GPIO3
26 U0TXD GPIO1SPI_CS1
USBやシリアル変換ケーブルなどで接続してREPL(Read-Eval-Print Loop)で操作する場合はGPIOとして使用しない方が良いですが、WiFi経由でWebREPLからアクセスするのであれば利用可能です。どちらのケースにおいても電源投入時に26U0TXDが"LOW"に設定される回路を組んでしまうと根本的に動かなくなる原因となるので注意しましょう。
BOOTモード選択ピン
ESP8266EX
Pin Name Function
13 MTDO GPIO15HSPI_CSUART0_RTS
14 GPIO2 U1TXD
15 GPIO0 SPI_CS2
電源投入後もしくはRESET直後に"UART"か"FlashROM"からの起動かを判定するための設定に用いられるピンです。
MODE 13 MTDO 14 GPIO2 15 GPIO0
UART LOW LOW HIGH
Flash ROM LOW HIGH HIGH
起動設定は上の表の様に行う事が可能です。
NodeMCU DevKitでは、13MTDOは12kΩの抵抗でプルダウン、14GPIO215GPIO0はそれぞれ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-04SD3J1-09CLKを除く全てのGPIOが使えます"となりますが、最も安全に使用できるのは、J2-02D1J2-03D2の2つとなります。

などと、知っていくと案外GPIOが少なく感じてきますねぇ。

0 件のコメント:

コメントを投稿