ESP8266 NodeMCU引脚说明

7/21/2022 11:19:15 AM
1366
0

开发ESP8266 NodeMCU GPIO功能时,作为小白的我根本不知道引脚编号,虽然知道ESP8266 NodeMCU丝印引脚编号如下图所示,但是和实际对应的GPIO编号完全不一样.

 

解决

经过多方面的资料查找,我汇总了以下的对应图片.

汇总成表格的话,如下表格所示.

GPIO编号丝印编号旧版丝印编号
GPIO 0D3D8
GPIO 1TX(D10)D5
GPIO 2D4RX(D9)
GPIO 3RX(D9)D4
GPIO 4D2TX(D10)
GPIO 5D1D11
GPIO 6 - 11不可用,但需要一直供电不可用,但需要一直供电
GPIO 12D6D0
GPIO 13D7D1
GPIO 14D5D2
GPIO 15D8D3

 

 关于 ESP8266,需要注意的一件重要的事情是 GPIO 编号与板载上的标识并不匹配。例如,D0 对应于 GPIO16,D1 对应于 GPIO5。

下表显示了板载标识和 GPIO 编号上的标签之间的对应关系,以及项目中最好使用的引脚,以及哪些引脚需要谨慎。

绿色突出显示的引脚可以使用。以黄色突出显示的可以使用,但需要注意,因为它们可能有意外行为,主要在启动时。不建议红色突出显示的引脚用作输入或输出。****

LabelGPIOInputOutputNotes
D0GPIO16无中断无 Pwm 或 I2c 支持HIGH at boot used to wake up from deep sleep
D1GPIO5OKOK常用作SCL(I2C)
D2GPIO4OKOK常用作SDA(I2C)
D3GPIO0上拉OKconnected to FLASH button, boot fails if pulled LOW
D4GPIO2上拉OKHIGH at boot connected to on-board LED, boot fails if pulled LOW
D5GPIO14OKOKSPI (SCLK)
D6GPIO12OKOKSPI (MISO)
D7GPIO13OKOKSPI (MOSI)
D8GPIO15下拉OKSPI (CS) Boot fails if pulled HIGH
RXGPIO3OKRXHIGH at boot
TXGPIO1TXOKHIGH at boot debug output at boot, boot fails if pulled LOW
A0ADC0模拟引脚X 

继续阅读,对 ESP8266 GPIOs 及其功能进行更详细的深入分析。

连接到闪存芯片的 GPIOS

GPIO6 到 GPIO11 通常连接到 ESP8266 板中的闪存芯片。因此,不建议使用这些引脚。

启动期间使用的引脚

如果某些引脚被拉低或高,可以阻止 ESP8266 启动。以下列表显示了引导上的以下引脚的状态:

  • GPIO16:引脚在引导时高
  • GPIO0:如果拉低,启动失败
  • GPIO2: 引脚在引导时高, 启动失败, 如果拉低
  • GPIO15: 启动失败,如果拉高
  • GPIO3: 引脚在引导时高
  • GPIO1: 引脚在引导时高, 启动失败, 如果拉低
  • GPIO10: 引脚在引导时高
  • GPIO9: 引脚在引导时高

引脚在启动时高

当 ESP8266 启动时,某些引脚输出 3.3V 信号。如果您有继电器或其他外设连接到这些 GPIOs,这可能有问题。以下 GPIOs 在启动时输出高信号:

  • GPIO16
  • GPIO3
  • GPIO1
  • GPIO10
  • GPIO9

此外,除 GPIO5 和 GPIO4 外,其他 GPIOs 可以在引导时输出低压信号,如果这些信号连接到晶体管或继电器,则可能会有问题。您可以阅读本文,其中调查每个 GPIO 在启动时的状态和行为。

如果要操作继电器,GPIO4 和 GPIO5 是使用 GPIOs 最安全的方式。

模拟输入

ESP8266 仅支持一个 GPIO 中的模拟读取。GPIO 称为ADC0,通常在丝网上标记为A0

如果使用 ESP8266 裸芯片,ADC0 引脚的最大输入电压为 0 到 1V。如果您使用的是 ESP8266 12-E NodeMCU 套件等开发板,则电压输入范围为 0 到 3.3V,因为这些板包含内部分压器。

板载 LED

大多数 ESP8266 开发板都具有内置 LED。此 LED 通常连接到 GPIO2(D4)。发送高信号以将其关闭,发送低信号以将其打开。

 

 

RST 引脚

当 RST 引脚拉低时,ESP8266 将复位。这与按板载重置按钮相同。

GPIO0

当 GPIO0 被拉低时,它会将 ESP8266 设置到引导加载器模式。这与按下板载闪存/引导按钮相同。

GPIO16

GPIO16 可用于从深度睡眠中唤醒 ESP8266。要从深度睡眠中唤醒 ESP8266,GPIO16 应连接到 RST 引脚。

I2c

ESP8266没有硬件 I2C 引脚,但它可以在软件中实现。因此,您可以将任何 GPIOS 用作 I2C。通常,以下 GPIOS 用作 I2C 引脚:

  • GPIO5: SCL
  • GPIO4: SDA

Spi

ESP8266 中用作 SPI 的引脚包括:

  • GPIO12: MISO
  • GPIO13: MOSI
  • GPIO14: SCLK
  • GPIO15: CS

PWM 引脚

ESP8266 允许所有 I/O 引脚的软件 PWM。ESP8266 上的 PWM 信号具有 10 位分辨率。

中断引脚

ESP8266 支持任何 GPIO 中的中断,GPIO16 除外。

 

 

将来我们在编写NodeMCU开发板的控制程序时,经常会进行引脚操作。如以下程序语句。

digitalWrite(4,HIGH)

以上语句通过digitalWrite函数将引脚4设置为高电平。那么您知道这个数字4到底是指GPIO4还是指开发板D4引脚呢?

答案是GPIO4而不是D4。

 

NodeMCU和Arduinod的管脚是有所不同的,具体见下表:
左侧为Arduino引脚,右侧为ESP8266对应引脚:

static const uint8_t D0   = 16;
static const uint8_t D1   = 5;
static const uint8_t D2   = 4;
static const uint8_t D3   = 0;
static const uint8_t D4   = 2;
static const uint8_t D5   = 14;
static const uint8_t D6   = 12;
static const uint8_t D7   = 13;
static const uint8_t D8   = 15;
static const uint8_t D9   = 3;
static const uint8_t D10  = 1;

全部评论



提问