ESP8266 平台
此组件包含针对 ESP8266 平台的平台特定选项。
# Example configuration entryesp8266: board: nodemcuv2 framework: version: recommended-
board (Required, string): 应使用的 PlatformIO 开发板 ID。从 此列表中选择合适的开发板(名称旁的图标可用于复制开发板 ID)。这只会影响引脚别名、闪存大小和一些内部设置,如果不确定, 请选择 Espressif 的通用开发板,如
esp01_1m。 -
framework (Optional): ESPHome 所使用的底层框架的选项。
-
version (Optional, string): 要使用的基础框架版本号,来自 esp8266 arduino 发行版。默认为
recommended。其他可选值dev: 使用来自 https://github.com/esp8266/Arduino 的最新提交,注意这可能会随时损坏latest: 使用来自 https://github.com/esp8266/Arduino/releases 的最新 正式版,即使它尚未被推荐。recommended: 使用推荐的框架版本。
-
source (Optional, string): 用于框架的 PlatformIO 包或仓库。这可用于使用自定义或打过补丁的框架版本。
-
platform_version (Optional, string): 要使用的 platformio/espressif8266 包的版本。
-
-
restore_from_flash (Optional, boolean): 是否将一些持久化偏好设置存储在闪存中。默认为
false。 -
board_flash_mode (Optional, string): 闪存芯片的 SPI 模式。可取
qio、qout、dio和dout之一。默认为dout以兼容所有芯片。注意:在下次 OTA 更新时,实际的闪存模式会被自动检测并更改为合适的模式。 -
early_pin_init (Optional, boolean): 指定引脚是否应尽早初始化为已知值。当涉及开关时建议使用
false,因为在更新固件或重新启动设备时这些会切换状态。默认为true。 -
enable_serial (Optional, boolean): 强制启用 Arduino 的
Serial对象(UART0),用于在 lambda 或外部库中使用。大多数用户永远不需要此选项,因为logger和uart组件会自动启用所需的 Serial 对象。仅当你在 lambda 中直接访问Serial并出现编译错误时才使用此选项。如有可能,请改用 UART 组件,因为它在所有平台上都有效。默认为自动检测。 -
enable_serial1 (Optional, boolean): 强制启用 Arduino 的
Serial1对象(UART1),用于在 lambda 或外部库中使用。大多数用户永远不需要此选项,因为logger和uart组件会自动启用所需的 Serial 对象。仅当你在 lambda 中直接访问Serial1并出现编译错误时才使用此选项。如有可能,请改用 UART 组件,因为它在所有平台上都有效。默认为自动检测。 -
enable_full_printf (Optional, boolean): 启用完整的基于
FILE*的 printf 支持。默认情况下,ESPHome 使用轻量级桩函数包装printf()、vprintf()和fprintf(),这些桩函数使用vsnprintf()+fwrite(),可节省约 1.6 KB 闪存。ESPHome 日志通过 Arduino 的Serial直接写入 UART,而非 libc printf,因此除非外部组件调用这些函数,否则它们通常不会被使用。仅当某个外部组件需要完整的基于FILE*的 printf 时才设置为true。默认为false。 -
enable_scanf_float (Optional, boolean): 为
scanf()/sscanf()启用浮点支持。默认情况下,ESPHome 移除-u _scanf_float链接器标志以节省约 8 KB 闪存。这意味着带%f的sscanf()将静默地无法解析浮点数。ESPHome 自身没有使用 scanf;仅当你在 lambda 中使用了带%f的sscanf()时才设置为true。默认为false。
GPIO 引脚编号
Section titled “GPIO 引脚编号”许多开发板对外露引脚的引脚编号与内部使用的
编号不同。ESPHome 尝试将丝印引脚号映射到内部引脚号,但这只适用于少数
开发板,对于通用的 ESP8266 开发板,通常需要使用内部引脚号。
要做到这一点,只需在所有引脚前加上 GPIO 前缀,例如内部引脚
号为 0 的引脚写作 GPIO0。
关于引脚的一些说明:
-
GPIO6-GPIO11、GPIO0、GPIO2和GPIO15通常已被内部 闪存接口和启动模式检测使用。因此最好避免使用这些引脚。 -
GPIO17额外连接了一个 ADC。参见 Adc 以读取此引脚上的电压(范围 0 到 1.0V)。
# Example configuration entryesphome: name: livingroom
esp8266: board: nodemcuv2
binary_sensor: - platform: gpio name: "Pin GPIO17" pin: GPIO17GPIO0 | 控制启动模式 |
|---|---|
GPIO1 | UART TX 引脚 |
GPIO2 | 控制启动模式 |
GPIO3 | UART RX 引脚 |
GPIO6 | SDIO/Flash CLK 引脚 |
GPIO7 | SDIO/Flash 数据 0 引脚 |
GPIO8 | SDIO/Flash 数据 1 引脚 |
GPIO9 | SDIO/Flash 数据 2 引脚(仅 qio/qout) |
GPIO10 | SDIO/Flash 数据 3 引脚(仅 qio/qout) |
GPIO11 | SDIO/Flash CMD 引脚 |
GPIO12 | 连接到硬件 SPI 控制器 MISO |
GPIO13 | 连接到硬件 SPI 控制器 MOSI |
GPIO14 | 连接到硬件 SPI 控制器 CLK |
GPIO15 | 控制启动模式;连接到硬件 SPI 控制器 CS |
GPIO16 | 可从 RTC 访问的特殊引脚,也是深度睡眠唤醒引脚 |
TOUT 即 GPIO17 | 用于测量电压的 ADC 引脚,只能作为模拟输入引脚使用 |
这意味着实际上只有以下引脚可以用作通用 GPIO:
| 引脚 | 限制 | 复位后的状态 |
|---|---|---|
GPIO0 | 启动时若为高电平 | 弱上拉 |
GPIO2 | 启动时若为高电平 | 弱上拉 |
GPIO4 | 高阻抗 | |
GPIO5 | 高阻抗 | |
GPIO6 | 弱上拉 | |
GPIO12 | 弱上拉 | |
GPIO13 | 弱上拉 | |
GPIO14 | 弱上拉 | |
GPIO15 | 启动时若为低电平 | 弱上拉 |
GPIO16 | 有下拉(但没有上拉)电阻 | 弱下拉 |
每次启动时,ESP8266 都会检查三个引脚以决定进入哪种启动模式。 共有三种启动模式:
| 模式 | GPIO0 | GPIO2 | GPIO15 | boot mode: |
|---|---|---|---|---|
| 从闪存启动(正常) | HIGH | HIGH | LOW | 3 |
| 从 UART 下载代码 | LOW | HIGH | LOW | 1 |
| 从 SD 卡启动 | ANY | ANY | HIGH | 4-7 |
你可以在启动时查看 UART 输出来识别这些模式,boot mode: 行中的第一个数字
会告诉你选择了哪种模式
ets Jan 8 2013,rst cause:4, boot mode:(3,6)查看 UART 日志时的第一行可能包含无法识别的字符。这是因为 ESP8266 引导加载程序的有效波特率为 74800,而程序使用 115200。
此外,第一行还包含复位原因。 这些复位原因已有文档说明:
| 0 | 未定义 |
|---|---|
| 1 | 上电重启 |
| 2 | 外部复位或深度睡眠唤醒 |
| 4 | 硬件看门狗复位 |
软件复位后,复位原因不会改变。
ESPHome 会自动捕获上一次启动时的崩溃数据并在启动时记录。这适用于 所有崩溃类型:异常(空指针解引用、非法指令)、软件看门狗 复位和硬件看门狗复位。
当发生崩溃时,异常原因、故障 PC 以及最多 16 个栈扫描返回地址会在
重启后保留并以 ERROR 级别记录。ESPHome CLI 会自动将这些
地址解码为函数名。
[E][esp8266]: *** CRASH DETECTED ON PREVIOUS BOOT ***[E][esp8266]: Reason: Exception - StoreProhibit (exccause=29)[E][esp8266]: PC: 0x40212EC5[E][esp8266]: BT0: 0x40212F5A[E][esp8266]: BT1: 0x40203B10[E][esp8266]: BT2: 0x40203270无需任何配置——崩溃处理器始终处于启用状态。
| 参数 | 最小 | 典型 | 最大 | 单位 |
|---|---|---|---|---|
| 工作温度 | -40 | 125 | °C | |
工作电压 V_IO | 2.5 | 3.3 | 3.6 | V |
V_IL - 视为 LOW 的输入电压电平 | -0.3 | 0.25*V_IO | V | |
V_IH - 视为 HIGH 的输入电压电平 | 0.75*V_IO | 3.6 | V | |
V_OL - 对应 LOW 的输出电压电平 | 0.1*V_IO | V | ||
V_OH - 对应 HIGH 的输出电压电平 | 0.8*V_IO | V | ||
I_MAX - GPIO 的最大电流 | 12 | mA | ||
| 深度睡眠功耗 | 20 | µA | ||
| 活动模式的功耗 | 120 | mA |
内部上拉/下拉电阻的阻值为 30kΩ 至 100kΩ (来源)。