本文转载,翻译自这篇文章。
本文包含 ESP8266 GPIO 的指南,引脚图,功能以及如何使用它们。
ESP8266 12-E 芯片带有 17 个 GPIO 引脚。并不是所有的 ESP8266 开发板都暴露了所有的 GPIO,有些 GPIO 是不推荐使用的,还有一些有非常特殊的功能。
通过本指南,您将了解如何正确使用 ESP8266 GPIO,并通过为您的项目使用最合适的引脚来避免数小时的挫败感。
ESP8266 12-E 芯片引脚
下图说明了 ESP8266 12-E 芯片的引脚排列。如果您在项目中使用 ESP8266 裸芯片,请使用此图。
目前,带有 ESP8266 芯片的开发板种类繁多,在可访问 GPIO 的数量、尺寸、外形等方面有所不同……
使用最广泛的 ESP8266 板是ESP-01、ESP8266-12E NodeMCU Kit和Wemos D1 Mini。有关这些板的比较,您可以阅读本指南:ESP8266 Wi-Fi 开发板比较。
ESP8266-01 引脚排列
如果您使用的是 ESP8266-01 板,您可以使用以下 GPIO 图作为参考。
ESP8266 12-E NodeMCU 套件
ESP8266 12-E NodeMCU 套件引脚图如下所示。
WeMos D1 Mini 引脚分配
下图显示了 WeMos D1 Mini 引脚排列。
下载带有 ESP8266 引脚图的 PDF文档
ESP8266 外设
ESP8266 外设包括:
- 17 个 GPIO
- SPI
- I2C(在软件上实现)
- 与 DMA 的 I2S 接口
- UART
- 10 位 ADC
最佳使用引脚——ESP8266
关于 ESP8266 需要注意的一件重要事情是 GPIO 编号与板上丝印上的标签不匹配。例如,D0 对应 GPIO16,D1 对应 GPIO5。
下表显示了丝印上的标签与GPIO编号的对应关系,以及在您的项目中最好使用哪些管脚,需要注意哪些管脚。
- 绿色:可以放心使用。
- 黄色:可以使用,但需要额外注意,因为它们可能在启动时出现意外行为。
- 红色:不建议用作输入或输出。
- IO编号:使用NodeMCU的gpio库函数时的IO参数。比如GPIO2输出高电平:gpio.write(4, gpio.HIGH)
连接到闪存芯片的 GPIO
GPIO6 到 GPIO11 通常连接到 ESP8266 板上的 flash 芯片。因此,不建议使用这些引脚。
上电引导期间使用的引脚
如果某些引脚被拉低或拉高,则可以防止 ESP8266 启动。
以下列表显示了上电引导时以下引脚的状态:
- GPIO16: 高电平
- GPIO0: 高电平,如果拉低则启动失败
- GPIO2: 高电平,如果拉低则启动失败
- GPIO15: 低电平,如果拉高,则启动失败
- GPIO3: 高电平
- GPIO1: 高电平,如果拉低则启动失败
- GPIO10: 高电平
- GPIO9: 高电平
引导时引脚为高电平
当 ESP8266 启动时,某些引脚会输出 3.3V 信号。如果您将继电器或其他外围设备连接到这些 GPIO可能会出现问题。以下 GPIO 在启动时输出 HIGH 信号:
- GPIO16
- GPIO3
- GPIO1
- GPIO10
- GPIO9
此外,除 GPIO5 和 GPIO4 外,其他 GPIO 可以在启动时输出低电平,如果这些 GPIO 连接到三极管或继电器,则可能会出现问题。你可以阅读这篇(英文)确认每个 GPIO 在启动时的状态和行为的文章。
模拟输入
ESP8266 仅支持一个 GPIO 中的模拟信号的输入。该 GPIO 称为ADC0,通常在丝印上标记为A0。
如果你使用的是 ESP8266 裸片,ADC0 引脚的最大输入电压为 0 到 1V。如果你使用的是 ESP8266 12-E NodeMCU 套件等开发板,则电压输入范围为 0 至 3.3V,因为这些板包含3.3V的稳压芯片。
您可以通过以下指南了解如何使用 ESP8266 进行模数转换(英文):
板载 LED
大多数 ESP8266 开发板都内置了 LED。该 LED 通常连接到 GPIO2。
LED 使用高电平将其关闭,用低电平将其打开。
RST 引脚
当 RST 引脚拉低时,ESP8266 复位。这与按下板载 RESET 按钮相同。
GPIO0
当 GPIO0 被拉低时,它将 ESP8266 设置为引导加载程序模式。这与按下板载 FLASH/BOOT 按钮相同。
GPIO16
GPIO16 可用于将 ESP8266 从深度睡眠中唤醒。要将 ESP8266 从深度睡眠中唤醒,GPIO16 应连接到 RST 引脚。了解如何将 ESP8266 置于深度睡眠模式:
I2C
ESP8266 没有硬件 I2C 引脚,但可以用软件实现。因此,您可以将任何 GPIO 用作 I2C。通常,以下 GPIO 用作 I2C 引脚:
- GPIO5:SCL
- GPIO4:SDA
SPI
ESP8266 中用作 SPI 的引脚有:
- GPIO12:味噌
- GPIO13:MOSI
- GPIO14:SCLK
- GPIO15:CS
PWM 引脚
ESP8266 允许在所有 I/O 引脚中使用软件 PWM:GPIO0 到 GPIO15。ESP8266 上的 PWM 信号具有 10 位分辨率。了解如何使用 ESP8266 PWM 引脚:
中断引脚
ESP8266 支持任何 GPIO 中的中断,但 GPIO16 除外。
总结
希望本指南对你了解 ESP8266 GPIO 能有所帮助。如果你对如何正确使用 ESP8266 GPIO 有一些想法,欢迎评论。