【NodeMcu-ESP8266】引脚使用参考指南——推荐收藏

发布于:2024-04-20 ⋅ 阅读:(24) ⋅ 点赞:(0)

目录

概述       

一、ESP8266 12—E/F 模组引脚图

二、ESP8266 12-E/F NodeMCU 引脚图

三、ESP8266 core for Arduino 源码关于NodeMCU引脚设置的定义

四、ESP8266-NodeMCU引脚特性及使用建议

五、需要特别提醒和强调的几个具体问题

参考文档

概述       

        针对基于ESP8266的开发板和模组,本文主要对各GPIO引脚的合理规划使用和注意事项,作了详细归纳整理和详细 说明,对日常IOT开发具体重要的参考作用。
        ESP8266 12-E/F 提供了17个GPIO引脚,并非全部的GPIO引脚在全部开发板都会看到,有些GPIO不推荐使用,其他则有很独特的功能。通过这个使用说明,我们可以学会如何正确地使用ESP8266 GPIO引脚 ,在开发工程时尽量避免浪费时间。

一、ESP8266 12—E/F 模组引脚图

二、ESP8266 12-E/F NodeMCU 引脚图

三、ESP8266 core for Arduino 源码关于NodeMCU引脚设置的定义

/*
  pins_arduino.h - Pin definition functions for Arduino
  Part of Arduino - http://www.arduino.cc/

  Copyright (c) 2007 David A. Mellis
  Modified for ESP8266 platform by Ivan Grokhotkov, 2014-2015.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General
  Public License along with this library; if not, write to the
  Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  Boston, MA  02111-1307  USA

  $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $
*/

#ifndef Pins_Arduino_h
#define Pins_Arduino_h

#define PIN_WIRE_SDA (4)
#define PIN_WIRE_SCL (5)

static const uint8_t SDA = PIN_WIRE_SDA;
static const uint8_t SCL = PIN_WIRE_SCL;

#ifndef LED_BUILTIN
#define LED_BUILTIN 2
#endif
#define LED_BUILTIN_AUX 16

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;

#include "../generic/common.h"

#endif /* Pins_Arduino_h */

四、ESP8266-NodeMCU引脚特性及使用建议

        特别需要指出的是,基于ESP8266设计制作的各类开发板,其引脚丝印编号与芯片GPIO序号并没有保持一致性。例如,D0对应于GPIO16,D1对应于GPIO5。
        下表显示了NodeMCU1.0 ESP—12E/F 开发板丝印标签和GPIO编号之间的对应关系,以及在项目中最好使用哪些引脚,以及需要谨慎使用哪些引脚。其中,以绿色突出显示的引脚可以放心使用;黄色突出显示的引脚也可以使用,但您需要注意,因为它们可能主要在启动时有意外行为;红色突出显示的引脚,不建议用作输入或输出。

ESP8266-NodeMCU开发板引脚标签与芯片GPIO序号对应关系表

Label

(丝印)

GPIO

序号

Input

Output 

 Notes

D0 GPIO16 no interrupt

no PWM or

I2C support

HIGH at boot

used to wake up from deep sleep

D1 GPIO5 OK OK often used as SCL (I2C)
D2 GPIO4 OK OK often used as SDA (I2C)
D3 GPIO0 pulled up OK connected to FLASH button, boot fails if pulled LOW
D4 GPIO2 pulled up OK HIGH at boot
connected to on-board LED, boot fails if pulled LOW
D5 GPIO14 OK OK SPI (SCLK)
D6 GPIO12 OK OK SPI (MISO)
D7 GPIO13 OK OK SPI (MOSI)
D8 GPIO15 pulled to GND OK SPI (CS)
Boot fails if pulled HIGH
RX GPIO3 OK RX pin HIGH at boot
TX GPIO1 TX pin OK HIGH at boot
debug output at boot, boot fails if pulled LOW
A0 ADC0 Analog Input X

五、需要特别提醒和强调的几个具体问题

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

        2、引导过程中使用的引脚所对应的GPIO。如果某些引脚被拉低或拉高,则可以禁止ESP8266正常启动。下面显示了MCU引导启动时(on boot)部分引脚的电平状态。
        GPIO16:引导启动时,引脚为高电平。
        GPIO0:  如果引脚电平被置为低电平,则会造成引导败。
        GPIO2:  引导启动时,引脚为高电平。如果引脚被置为低电平,则会造成引导失败。
        GPIO15:如果引脚被置为高电平,则会造成引导失败。
        GPIO3:  引导启动时,引脚为高电平。
        GPIO1:  引导启动时,引脚为高电平。如果引脚被置为低电平,则会造成引导失败。
        GPIO10:引导启动时,引脚为高电平。
        GPIO9:  引导启动时,引脚为高电平。

        3、引导时被置为高电平的引脚所对应的GPIO。 某些引脚在ESP8266引导时输出3.3V信号。如果这些引脚与继电器或其他外围设备连接,可能会产生诸如误动动等其它问题。 以下GPIO引脚,在引导启动时会输出高电平信号(HIGH):GPIO16、GPIO3、GPIO1、GPIO10、GPIO9。

        4、除了GPIO5和GPIO4之外,其他的部分GPIO在引导时会输出低电压信号,如果这些GPIO连接到晶体管或继电器,这可能是产生一些问题的。
        如果你想连接或操作继电器,GPIO4和GPIO5所对应的引脚(D1、D2)是最安全的。

        5、模拟输入引脚A0对应的GPIO。ESP8266仅支持在一个GPIO中进行模拟读取。GPIO被称为ADC0,模组或开发板丝印通常标记为A0。如果使用的是ESP8266芯片,则ADC0引脚的最大输入电压为0至1V。如果使用开发板如ESP8266 12-E NodeMCU套件,则电压输入范围为0至3.3V,因为这些板包含内部分压器。

        6、板载(On-board)LED灯。大多数ESP8266开发板都内置了LED,通常连接到GPIO2。需要说明的是,这个板载LED灯通常以反相逻辑工作,发送HIGH信号会将其熄灭,发送LOW信号将其点亮。

        7、RST引脚。当RST引脚被置为低电平时,将会复位ESP8266开发板,功能与按下板载的RESET按钮相同。

        8、D3引脚对应的GPIO0。当GPIO0对应的引脚D3被置为低电平时,将会使ESP8266设置为引导加载程序模式,功能与按下板载FLASH/BOOT按钮相同。

        9、D0引脚对应的GPIO16。GPIO16可用于将ESP8266从深度睡眠中唤醒,要将ESP8266从深度睡眠中唤醒,GPIO16应连接到RST引脚。

        10、I2C通信。ESP8266没有硬件I2C引脚,但可以用软件实现。因此,您可以将任何GPIO用作I2C。通常,以下GPIO用作I2C引脚:GPIO5:SCL, GPIO4:SDA。

        11、SPI通信。在ESP8266开发板相,这些引脚通过用于 SPI通信连接,一般对应关系为:GPIO12:MISO,GPIO13:MOSI,GPIO14:SCLK,GPIO15:CS。

        12、PWM引脚。ESP8266允许在所有I/O引脚中使用软件PWM(但GPIO16除外),GPIO0到GPIO15。ESP8266上的PWM信号具有10位分辨率。

        13、中断引脚。ESP8266支持除GPIO16以外的任何GPIO中的中断。   

参考文档

1、ESP8266 Pinout Reference: Which GPIO pins should you use?
2、ESP8266 core for Arduino 部分源代码