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

本文详述 ESP8266 如何选择和使用 GPIO 引脚,涵盖 ESP12-E、ESP-01(S)、NodeMCU 和 Wemos D1 Mini 开发板的引脚定义,提醒了启动过程中的特殊引脚状态,以及模拟输入、I2C、SPI 和 PWM 功能的相关信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

ESP12-E 模块引脚定义

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

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

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

ESP-01(S) 引脚定义

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

ESP-12E NodeMCU 开发板

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

Wemos D1 Mini 开发板

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

ESP8266 的外设

ESP8266 的外设包括:

17 个 GPIO

SPI

I2C(软件实现)

I2S(支持 DMA)

UART

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 亮起。

复位引脚

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

GPIO0

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

GPIO16

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

I2C

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

GPIO5:SCL

GPIO4:SDA

SPI

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 IO 引脚配置及操作方法 #### 配置引脚为输入或输出模式 对于ESP8266而言,每一个GPIO都可以被设定为输入或者输出状态。当作为输入使用时,可以通过`pinMode(pin, INPUT)`语句指定;而要将其设为输出,则应采用`pinMode(pin, OUTPUT)`的方式[^1]。 ```cpp // 设置D0 (即 GPIO16 ) 为输出模式 pinMode(D0, OUTPUT); ``` #### 数字I/O的操作 一旦完成了上述的模式定义之后,就可以利用`digitalWrite()`函数向选定的端口发送高低电平信号了。同样地,通过调用`digitalRead()`可以从该端口中获取当前的状态值——高电平或是低电平。 ```cpp // 向 D0 输出 HIGH 电平 digitalWrite(D0, HIGH); // 读取 D2 的逻辑电平并存储于变量 state 中 int state = digitalRead(D2); ``` #### 模拟输入功能的应用 值得注意的是,尽管大多数GPIO只支持数字级别的通信,但是ESP8266还提供了一个特殊的A0引脚用于处理模拟信号。这意味着能够接收来自传感器或者其他设备产生的连续变化的数据流,并且这些数据会被量化成介于0至1023之间的整数表示范围内的电压水平[^2]。 ```cpp void setup(){ pinMode(A0, INPUT); // 将 A0 设定为模拟输入模式 } void loop(){ int sensorValue = analogRead(A0); // 获取 A0 上的模拟电压对应的数值 } ``` #### 使用PWM实现模拟输出效果 虽然大部分GPIO不具备真正的DAC(数模转换器),但借助PWM技术可以在某些特定条件下模仿出近似的模拟输出行为。这通常涉及到周期性的改变占空比从而影响平均功率传输给负载元件比如LED灯泡亮度调节等场景下非常有用[^3]。 ```cpp analogWrite(D6, brightnessLevel); // 对接收到的 PWM 值进行调整以改变 LED 明暗程度 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值