2024年10月

Esp8266 开发板的管脚图与 GPIO 对应关系

Esp8266 开发板的管脚图与 GPIO 对应关系

Esp8266 开发板的管脚图与 GPIO 对应关系

模拟引脚 : ~D1 ~D2 ~D3 ~D4 ~D5 ~D6 ~D7

模拟输入引脚

ESP8266 只有一个模拟输入引脚 TOUT(这里对应A0)(该引脚通过模拟-数字转换将引脚上的模拟电压数值转化为数字量)。此引脚可以读取的模拟电压值为 0 – 1.0V。

NodeMCU开发板配有降压电路。您可以用NodeMCU开发板的模拟输入引脚读取0-3.3V的模拟电压信号。

ESP8266芯片有17个GPIO引脚(GPIO0~GPIO16)。这些引脚中的GPIO6~GPIO 11被用于连接开发板的闪存(Flash Memory)。如果在实验电路中使用 GPIO6~GPIO11,NodeMCU 开发板将无法正常工作。

特殊引脚情况说明

GPIO2 引脚在 NodeMCU 开发板启动时是不能连接低电平的。

GPIO15 引脚在开发板运行中一直保持低电平状态。因此请不要使用 GPIO15 引脚来读取开关状态或进行 I²C 通讯。

GPIO0 引脚在开发板运行中需要一直保持高电平状态。否则 ESP8266 将进入程序上传工作模式也就无法正常工作了。您无需对 GPIO0 引脚进行额外操作,因为 NodeMCU 的内置电路可以确保 GPIO0 引脚在工作时连接高电平而在上传程序时连接低电平。

上拉电阻与下拉电阻

GPIO 0-15引脚都配有内置上拉电阻。这一点与Arduino十分类似。GPIO16 引脚配有内置下拉电阻。

GY-906 MLX90614红外测温传感器模块温度采器(i2c总线)

GY-906 MLX90614红外测温传感器

mqtt:
  broker: 192.168.0.30 
  port: 1883
  username: ykdbc
  password: Xy@528848
  discovery: true
  reboot_timeout: 0s
i2c:                                    #定义i2c总线
    sda: GPIO12                          #D6
    scl: GPIO14                         #D5
    scan: True                          #ic总线激活端口(可以激活后扫描不同的地址,接线方式可以多设备同端口并联也可以多设备不同端口串联)   
sensor:
  - platform: mlx90614    
    object:
      name: 探测物体温度
    address: 0x5A
    update_interval: 5s
  - platform: mlx90614
    ambient:
      name: 环境采样温度
    address: 0x5A
    update_interval: 5s


0.96寸OLED显示屏模块0.91 12864屏(IIC 总线)

0.96寸OLED显示屏模块

i2c:                                    #定义i2c总线
    sda: GPIO4                          #D2
    scl: GPIO5                          #D1
    scan: True                          #ic总线激活端口(可以激活后扫描不同的地址,接线方式可以多设备同端口并联也可以多设备不同端口串联)
display:
  - platform: ssd1306_i2c
    model: "SH1106 128x64"
    reset_pin: GPIO16
    address: 0x3C                      #指定i2c总线地址(本次接入方式为并联,共用接线端口为:GPIO4 GPIO5,这个0x3C要到esphome.io去查询对应的i2c地址)
    rotation: 0                      #屏幕旋转角度
    lambda: |-                         #屏幕输出内容
      // Print "无忧花卉" in top center.
      it.printf(63, 0, id(font1), TextAlign::TOP_CENTER, "微存科技 WeiFix.Com");

      // Print time in HH:MM format
      it.strftime(127, 60, id(font2), TextAlign::BASELINE_RIGHT, "%H:%M", id(esptime).now());

      // Print temperature (from homeassistant sensor)
      if (id(temperature).has_state()) {
        it.printf(1, 15, id(font3), TextAlign::TOP_LEFT , "温度: %.1f°C", id(temperature).state);
      }

      // Print humidity (from homeassistant sensor)
      if (id(humidity).has_state()) {
        it.printf(1, 35, id(font3), TextAlign::TOP_LEFT , "湿度: %.0f%%", id(humidity).state);
      }

      // Print Illuminance (from homeassistant sensor)
      if (id(Illuminance).has_state()) {
        it.printf(1, 52, id(font3), TextAlign::TOP_LEFT , "照度: %.1fLx", id(Illuminance).state);
      }