VSCode (PlatformIO) 上 ESP8266-01S 上的闪存大小问题

Problem with Flash size on ESP8266-01S on VSCode (PlatformIO)

我在 VSCode 上使用 PlatformIO 对 ESP8266-01S 进行编程时遇到问题。实际上,它在 Arduino 上运行良好,但我想使用 VSCode 因为它更舒适(而且它不适用于 VSCode!)。 当我在两个软件之间上传代码时,我注意到终端有所不同。让我告诉你:

这是我在 Arduino 上得到的:

esptool.py v3.0
Serial port COM16
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: ec:fa:bc:27:2d:0a
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 1MB
Compressed 265056 bytes to 195069...
Writing at 0x00000000... (8 %)
Writing at 0x00004000... (16 %)
Writing at 0x00008000... (25 %)
Writing at 0x0000c000... (33 %)
Writing at 0x00010000... (41 %)
Writing at 0x00014000... (50 %)
Writing at 0x00018000... (58 %)
Writing at 0x0001c000... (66 %)
Writing at 0x00020000... (75 %)
Writing at 0x00024000... (83 %)
Writing at 0x00028000... (91 %)
Writing at 0x0002c000... (100 %)
Wrote 265056 bytes (195069 compressed) at 0x00000000 in 19.9 seconds (effective 106.3 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

这就是我在 VSCode 上看到的:

esptool.py v3.0
Serial port COM16
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: ec:fa:bc:27:2d:0a
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Compressed 265056 bytes to 195047...
Writing at 0x00000000... (8 %)
Writing at 0x00004000... (16 %)
Writing at 0x00008000... (25 %)
Writing at 0x0000c000... (33 %)
Writing at 0x00010000... (41 %)
Writing at 0x00014000... (50 %)
Writing at 0x00018000... (58 %)
Writing at 0x0001c000... (66 %)
Writing at 0x00020000... (75 %)
Writing at 0x00024000... (83 %)
Writing at 0x00028000... (91 %)
Writing at 0x0002c000... (100 %)
Wrote 265056 bytes (195047 compressed) at 0x00000000 in 20.0 seconds (effective 106.2 kbit/s)...
Hash of data verified.

Leaving...
Soft resetting...

你可以看到重置有差异(但我已经看到这不是问题),Arduino 上的“自动检测到的闪存大小:1MB”也有差异我们没有 VSCode。我不知道这是否是一个真正的问题...

也许你能帮我...非常感谢!!

我认为这与您提供的评论中的闪存大小无关。

如果您在 Arduino IDE 上的设置是 Generic ESP8266 Module 并且它正在工作,这意味着 LED_BUILTIN 配置在 GPIO1,如 ESP8266 的 source code 所示Arduino 的核心。

这意味着您使用的是 EPS-01 而不是 ESP-01S。 ESP-01 和 ESP-01S 之间的区别之一是 LED_BUILTIN 连接到不同的 GPIO 引脚。 ESP-01 的 LED_BUILTIN 连接到 GPIO1,而 ESP-01S 的 LED_BUILTIN 连接到 GPIO2。

这个picture显示了ESP-01和ESP-01S之间的不同,从视觉上看ESP-01在靠近天线的板上有2个LED,而ESP-01S在插头引脚和ESP8266EX芯片之间有两个额外的电阻, 天线附近只有一个 LED。

更简单的修复方法

更简单的解决方法是定义您自己的引脚分配,而不是使用预定义的 LED_BUILTIN

#define LED 2

void setup(){
  pinMode(LED, OUTPUT);
}

void loop() {
  digitalWrite(LED, HIGH);
  // other codes
}

如果是 ESP-01,您还可以 select 将 LED_BUILTIN 定义为 2 的电路板。例如,d1 mini 基于 ESP-12 引出线但应该也适用于 ESP-01。