6

如何在 ESP8266 上选用合适的引脚

 1 year ago
source link: https://blog.vvzero.com/2022/05/05/esp8266-pinout-reference-gpios/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

本文是“攻玉计划”的一部分,翻译自 https://randomnerdtutorials.com/esp8266-pinout-reference-gpios/

本文旨在介绍 ESP8266 的引脚定义、引脚功能及如何使用它们。

1.png

ESP-12E 模块拥有 17 个 GPIO 引脚。但在各个开发板上,ESP8266 芯片的 GPIO 引脚并不一定全部引出,而且某些引脚不建议使用,某些引脚有非常特殊的功能。

本文将指导你如何正确使用 ESP8266 的各个 GPIO,避免用错引脚而浪费时间。

ESP12-E 模块引脚定义

下图阐述了 ESP-12E 模块的引脚定义。当你的项目使用裸 ESP-12E/F 模块的时候,可以参考此图。

2.png

🔵注意:某些开发板可能不能使用全部的引脚,但相同的引脚在不同的开发板上,功能肯定是一样的。

当前市场上有很多不同的 ESP8266 模块/开发板,它们的形状、大小、可用 GPIO 数目各不相同。但最常用的是 ESP-01(S)、ESP-12E/F、NodeMCU 开发板以及 Wemos D1 Mini 开发板。你可以自己搜索这些开发板模块的区别。

ESP-01(S) 引脚定义

如果你在用 ESP-01(S) 的板子,可以参考下图的 GPIO 引脚定义。

3.png

ESP-12E NodeMCU 开发板

ESP-12E NodeMCU 开发板的引脚定义如下图所示。

4.png

Wemos D1 Mini 开发板

Wemos D1 Mini 开发板的引脚定义如下图所示。

5.png

ESP8266 的外设

ESP8266 的外设包括:

  • 17 个 GPIO
  • I2C(软件实现)
  • I2S(支持 DMA)
  • 10 位 ADC

推荐使用的引脚

需要注意的一点是,ESP8266 开发板上丝印的引脚号,并不是芯片真正的 GPIO 编号。比如,D0 是 GPIO16,D1 是 GPIO5。

下表说明了 ESP8266 开发板上丝印的引脚号与实际 GPIO 编号的对应关系,并提醒你哪些引脚在使用时需要注意。

绿色标记的引脚可以随意使用;黄色标记的引脚可以使用,但需要注意它们在芯片启动时的影响,可能带来意外的问题。红色标记的引脚不建议用作输入或输出功能。

丝印标签 GPIO 可作为输入 可作为输出 备注
D0 GPIO16 不可用于中断 不可用于 PWM 或 I2C 🟠启动时为高电平
用于从深度睡眠中唤醒
D1 GPIO5 🟢是 🟢是 通常用作 SCL (I2C)
D2 GPIO4 🟢是 🟢是 通常用作 SDA (I2C)
D3 GPIO0 已被上拉 🟢是 与 FLASH 按键连接,如果拉低则会启动失败
D4 GPIO2 已被上拉 🟢是 🟠启动时为高电平
连接板载 LED,如果拉低则会启动失败
D5 GPIO14 🟢是 🟢是 SPI (SCLK)
D6 GPIO12 🟢是 🟢是 SPI (MISO)
D7 GPIO13 🟢是 🟢是 SPI (MOSI)
D8 GPIO15 已被下拉至 GND 🟡是 SPI (CS)
如果拉高则会启动失败
RX GPIO3 🟡是 🔴RX 引脚 🟠启动时为高电平
TX GPIO1 🔴TX 引脚 🟡是 🟠启动时为高电平
启动时的调试输出引脚,如果拉低会启动失败
A0 ADC0 🟢模拟输入 🔴禁用

接下来的篇幅将更详细地介绍 ESP8266 GPIO 引脚的功能。

连接 FLASH 芯片的引脚

GPIO6 到 GPIO11 通常用于连接 FLASH 芯片,所以,不推荐使用这几个引脚。

启动过程中用到的引脚

如果某些引脚被拉高或者拉低,ESP8266 可能会启动失败。下表是部分引脚在启动时的状态:

  • GPIO16:启动时为高电平
  • GPIO0:如果被拉低,则启动失败
  • GPIO2:启动时为高电平,如果被拉低,则启动失败
  • GPIO15:如果被拉高,则启动失败
  • GPIO3:启动时为高电平
  • GPIO1:启动时为高电平,如果被拉低,则启动失败
  • GPIO10:启动时为高电平
  • GPIO9:启动时为高电平

启动时为高电平的引脚

以下引脚在启动时会输出 3.3V 的高电平。如果你在这些引脚上接了继电器之类的外设,可能会带来一些问题:

  • GPIO16
  • GPIO3
  • GPIO1
  • GPIO10
  • GPIO9

此外,其他引脚(除了 GPIO5 和 GPIO4),在启动时会输出低电平信号,同样可能带来问题。你可以阅读 此文章 以详细了解各个 GPIO 在启动时的状态。

🟢如果需要控制继电器或功率管,GPIO4 和 GPIO5 是最安全的引脚。

模拟输入引脚

ESP8266 只有一个引脚支持模拟输入,此引脚叫 ADC0,丝印上常标记为 A0。

如果使用 ESP8266 裸芯片(ESP-12E/F)的话,此引脚的电压输入范围为 0-1V。如果使用了 NodeMCU 之类的开发板,那么电压输入范围就是 0-3.3V,因为开发板上已经集成了分压器。

板载 LED

大多数 ESP8266 模块均有一个内置的 LED,通常连在 GPIO2 上。LED 亮灭的逻辑是反向的,GPIO2 为高电平时,LED 熄灭;GPIO2 低电平时,LED 亮起。

6.png

当 RST 引脚被拉低时,ESP8266 将被复位。按开发板上的 RESET 按键同理。

7.png

GPIO0

当 GPIO0 被拉低时,复位 ESP8266,芯片将进入 bootloader 模式。按开发板上的 FLASH/BOOT 按钮同理。

8.png

GPIO16

GPIO16 可被用于从深度睡眠中唤醒 ESP8266。要实现此功能,需要将 GPIO16 连接在 RST 引脚上。关于如何实现深度睡眠,请搜索并参考 Arduino 官网上的相关案例。

ESP8266 没有硬件 I2C 引脚,但可以用软件模拟,所以你可以使用任意引脚实现 I2C。通常我们会使用以下引脚:

  • GPIO5:SCL
  • GPIO4:SDA

ESP8266 上的 SPI 引脚如下:

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

PWM 引脚

我们可以在 ESP8266 的所有引脚(GPIO0 至 GPIO15)上软件实现 PWM 功能。ESP8266 上的 PWM 有 10 位精度。关于如何实现 PWM 功能,请搜索并参考 Arduino 官网上的相关案例。

ESP8266 的所有 GPIO 引脚均支持中断,除了 GPIO16。相关案例请搜索并参考 Arduino 官网上的相关案例。

希望本文能解决你对 ESP8266 GPIO 的相关疑惑,祝好!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK