Author:teacherXue

一、ESP8266 引脚参考

ESP8266 12-E 芯片带有 17 个 GPIO 引脚。并不是所有的ESP8266开发板都开放了所有的GPIO,并且由于电力设计原因,以及有些GPIO有非常特殊的功能,部分的GPIO不推荐使用。了解ESP8266的GPIO,并通过为项目使用最合适的引脚来提高成功的概率。

ESP8266 引脚

  • 17个GPIO
  • SPI接口
  • I2C(软件实现)
  • I2S 与 DMA 接口
  • 串口
  • 10 位模数转换器
  • 模拟信号输入接口(只有一个)

ESP8266 需要注意GPIO 编号与板上丝印上的标签不匹配。例如,D0对应GPIO16,D1对应GPIO5。下表是丝印上的标签和GPIO编号的对应关系,以及你项目中哪些管脚最好用,哪些需要注意。以绿色突出显示的引脚可以使用。黄色高亮的是可以使用的,但要注意,因为它们主要在启动时可能会出现意外行为。不建议将红色突出显示的引脚用作输入或输出(图表来源randomnerdtutorials.com),在没搞清楚所有引脚的作用时。尽量使用绿色引脚。



标签

通用输入输出接口

输入

输出

备注

D0

GPIO16

没有中断

不支持 PWM 或 I2C

开机时高

通常从深度睡眠中唤醒

D1

通用输入输出口5

好的

好的

经常用作SCL(I2C)

D2

通用输入输出口4

好的

好的

经常用作SDA(I2C)

D3

通用输入输出0

拉高

好的

连接到 FLASH 按钮,如果拉低则启动失败

D4

通用输入输出2

拉高

好的

开机时高

连接到板载 LED,如果拉低则启动失败

D5

GPIO14

好的

好的

SPI接口(SCLK)

D6

GPIO12

好的

好的

SPI接口(MISO)

D7

GPIO13

好的

好的

SPI接口(MOSI)

D8

GPIO15

拉到GND

好的

SPI接口(CS)

如果拉高则引导失败

RX

通用输入输出口3

好的

接收引脚

开机时高

TX

通用输入输出口 1

TX 引脚

好的

开机时高

启动时调试输出,如果拉低则启动失败

A0

ADC0

模拟输入

X

A0



ESP826612-E NodeMCU Kit




esp8266芯片引脚图 esp8266 引脚图_引脚


ESP8266-01Pinout


esp8266芯片引脚图 esp8266 引脚图_嵌入式硬件_02


WemosD1 Mini Pinout


esp8266芯片引脚图 esp8266 引脚图_单片机_03


1)GPIO6 到 GPIO11 通常连接到ESP8266 板上的闪存芯片。因此,不建议使用这些引脚。
2)引导期间被使用的引脚
  • GPIO16:引脚在 BOOT 时为高电平
  • GPIO0:如果拉低则启动失败
  • GPIO2:引脚在 BOOT 时为高电平,如果拉低则引导失败
  • GPIO15:如果拉高则启动失败
  • GPIO3 : 引脚在 BOOT 时为高电平
  • GPIO1 : 引脚在 BOOT 时为高电平,如果拉低则引导失败
  • GPIO10 : 引脚在 BOOT 时为高电平
  • GPIO9 : 引脚在 BOOT 时为高电平
3)开机时为高电平的引脚

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

  • GPIO16
  • 通用输入输出口3
  • 通用输入输出口 1
  • GPIO10
  • GPIO9

此外,除 GPIO5 和 GPIO4 之外的其他 GPIO 可以在启动时输出低电压信号,如果这些 GPIO 连接到晶体管或继电器,则可能会出现问题。如果操作继电器,GPIO4 和 GPIO5 是使用 GPIO 最安全的。

4)模拟输入

ESP8266 只支持一个 GPIO 的模拟读取。该 GPIO 称为ADC0,通常在丝印上标记为A0。如果您使用的是 ESP8266 裸芯片,则 ADC0 引脚的最大输入电压为 0 至 1V。如果您使用的是像ESP8266 12-E NodeMCU 套件这样的开发板,电压输入范围是 0 到 3.3V,因为这些板包含一个内部分压器。

5)板载LED

大多数 ESP8266 开发板都有一个内置 LED。这个 LED 通常连接到GPIO2。

6)RST引脚

当 RST 引脚被拉低时,ESP8266 复位。这与按下板载 RESET 按钮相同。他被连接在开发板的RESET按钮。


esp8266芯片引脚图 esp8266 引脚图_嵌入式硬件_04


7)GPIO 0 引脚

当 GPIO0 被拉低时,它会将 ESP8266 设置为引导加载程序模式。这与按板载 FLASH/BOOT 按钮相同。


esp8266芯片引脚图 esp8266 引脚图_单片机_05


8)GPIO16引脚

GPIO16 可用于将 ESP8266 从深度睡眠中唤醒。要将 ESP8266 从深度睡眠中唤醒,GPIO16 应连接到 RST 引脚。深度睡眠可以在某些特定的场景中通过使用电池长达数月甚至于数年的连续工作。

9)I2C接口

ESP8266 没有硬件 I2C 引脚,但可以用软件实现。所以您可以将任何 GPIO 用作 I2C。通常,以下引脚为通常使用的I2C引脚。

  • GPIO5: SCL
  • GPIO4: SDA
10)SPI引脚

SPI通信引脚,通常很多的微型液晶显示模块采用此接口,引脚定义如下:

  • GPIO12: MISO
  • GPIO13: MOSI
  • GPIO14: SCLK
  • GPIO15: CS
11)PWM接口

ESP8266 允许在所有 I/O 引脚上使用软件 PWM:GPIO0到 GPIO15。ESP8266 上的 PWM 信号具有 10 位分辨率。可以简单理解为,使用数字信号产生和模拟控制相似的波形曲线。例如控制LED的亮度,PWM电机调速,舵机等。

12)中断引脚

ESP8266 支持GPIO16外任何 GPIO 中的中断。中断操作具有更高的优先级。

认识面包板

实验中,需要频繁的连接设备引线,焊接显然不是很好的办法。面包板是由于板子上有很多小插孔,专为电子电路的无焊接实验设计制造的。由于各种电子元器件可根据需要随意插入或拔出,免去了焊接,节省了电路的组装时间,而且元件可以重复使用,所以非常适合电子电路的组装、调试和训练。

这里推荐400孔的面包板,他体积小巧,又有足够多的插孔来连接外设,并且可以通过拼装,凑成更大的工作板。


esp8266芯片引脚图 esp8266 引脚图_esp8266芯片引脚图_06


面包板,由中间板和两侧的电源扩展板构成,三者可分离。其结构上中间板在中轴线两侧横向插口导通,用于并联元器件引脚。电源扩展板纵向导通,用于分享电源的正负极。对于NodeMCU开发板刚好可以分别引出3.3v和5v电源。


esp8266芯片引脚图 esp8266 引脚图_esp8266芯片引脚图_07


esp8266芯片引脚图 esp8266 引脚图_esp8266芯片引脚图_08


在使用硬质导线,并花费一定精力设计的情况下,可以获得近似于电路板设计的效果,并且他们是可以拆卸的。


esp8266芯片引脚图 esp8266 引脚图_引脚_09


通常情况下,使用面包板插线可实现更为快速的引脚连接。它是两段带有金属探针的软线,可以跨越很多原件进行连接。


esp8266芯片引脚图 esp8266 引脚图_Powered by 金山文档_10


一、使用面包板完成可控LED实验

本实验,我们将使用NodeMCU和400孔的面包板,实现外接的LED,并通过模拟旋钮控制器,控制其亮度的变化。

安装开发板

将NodeMCU开发板,usb接口向外插入面包板的中间,并使得引脚刚好在最左侧的中间位置,这时在开发板两侧刚好会各有一排插孔,可以将外设的信号线通过面包板和开发板引脚相连。

  • VIN引脚是是双向引脚:可以接5v直流电源为开发板供电,这是一个常见的电源电压,USB供电也是这个数值。当USB接口被接入时,VIN引脚可以获得直接来自供电端的5v电流,理论上这个5v的直接供电能力和usb供电能力相同,注意通过板子的同一侧数据引脚的供电和它没有关系。
  • 3V3引脚:是通过稳压电源输出的符合绝大多数芯片工作电压的输出,但其供电能力有限,较大功率负载(>500ma)需要通过电路放大器外接供电。
  • GND引脚:为共地地引脚,不理解的通学们,将其当负极即可。开发板上共有三个,设备接地到任意一个均可。

我们按下图将开发板的5v和3.3v分别引出到面包板两侧的电源扩展,红正黑负是良好的习惯,接反大概率会有某些芯片冒烟。


esp8266芯片引脚图 esp8266 引脚图_单片机_11


安装LED灯珠

不同颜色的灯珠有着不同的耐压和功耗,大致参数如下:

白:工作电流 20(mA) 工作电压 3.0-3.4(V)功率 0.06(W)

红:工作电流 20(mA) 工作电压 1.8-2.2(V)功率 0.06(W)

绿:工作电流 20(mA) 工作电压 3.0-3.4(V)功率 0.06(W)

蓝:工作电流 20(mA) 工作电压 3.0-3.4(V)功率 0.06(W)

黄:工作电流 20(mA) 工作电压 1.8-2.2(V)功率 0.06(W)

LED灯珠非常的省电,其可以非常便利的被开发板带动,但同时其也容易被烧毁(参看上表,红色灯珠拥有最小的耐压,更加容易被烧毁),理论上使用LED灯珠需要串联一个330欧姆的电阻,但我更加倾向于省却这个电阻,他会使得我的板子布线比较简洁,虽然有概率烧毁,但不经常发生。并且灯珠的价格非常低廉,实验中,烧了换掉就好了。

LED灯珠具有单向导通能力,只能在一个电流方向上被点亮,通常情况下,灯珠的引脚一长一短,长引脚为供电(正极),短引脚为接地(负极),我一般按下图处理引脚(左侧的白色灯珠),这样它将更加容易被插入面包板。


esp8266芯片引脚图 esp8266 引脚图_Powered by 金山文档_12


将处理好的LED灯珠的长脚插入开发板丝印的D5引脚边上的孔中,短引脚插入面包板3.3v扩展供电段的接地(负极)插孔中,如下图(注意,照片中的LED插入的是D3引脚)。


esp8266芯片引脚图 esp8266 引脚图_Powered by 金山文档_13


创建灯控项目

1)在 VS Code 上,单击 PlartfomIO主页图标。点击+ New Project创建Lamp_ctl_v1.0项目并确定。


esp8266芯片引脚图 esp8266 引脚图_esp8266芯片引脚图_14


2)修改platformio.ini文件,增加串口率设置monitor_speed = 115200。


esp8266芯片引脚图 esp8266 引脚图_引脚_15


3)编辑main.cpp主文件,基本参考上一节的亮灯代码,其中LED引脚定义为14,查阅引脚对应表,D5引脚对应的是GPIO14。

#include  <Arduino.h>
     
    #define LED 14   // D5引脚对应的是GPIO14
     
    void setup() {
      // put your setup code here, to run once:
      Serial.begin(115200); //设置串口通信波特率
      pinMode(LED, OUTPUT);
    }
     
    void loop() {
      // put your main code here, to run  repeatedly:
      digitalWrite(LED, HIGH);  
      Serial.println("LED is on"); //通过串口通讯打印信息
      delay(1000);
      digitalWrite(LED, LOW);
      Serial.println("LED is off"); //通过串口通讯打印信息
      delay(1000);
    }
4)编译烧录固件。


esp8266芯片引脚图 esp8266 引脚图_引脚_16


5)一秒间隔闪烁的白色LED,通过实验我们发现,搞清楚引脚后修改代码执行并不困难。