ESP32 vs ESP8266 这个老问题一直没死,而到了 2026 年,它的答案有点烦人:ESP8266 对某一小撮任务依然够用,对几乎其他所有事情都是错的选择。我两种都在用。我把一颗 ESP32-C3 当作真正的 Overlay 网络节点来跑,也偶尔 还会烧一颗 ESP8266,只因为它本来就在元件盒里。所以这不是一篇”新片好、旧片坏”的文章—— 它是那篇我希望自己当年入门时就存在的哪个 ESP32 值得买指南,只讲真正会改变购买决策的 部分:内存、射频、安全、工具链,以及这东西还能被更新多久。
一段话讲完 ESP32 vs ESP8266
如果设备只是读个传感器、把数字经 Wi-Fi 推出去,而且你不在乎 BLE、不看 TLS 密集型负载、 也不打算未来升级固件,那 ESP8266 依然便宜且够用。如果设备需要维持长连接、做 TLS、靠电池 睡觉、讲 BLE,或者要连续多年 OTA 更新,那就买 ESP32——而对多数新设计来说,这意味着 ESP32-C3(单核 RISC-V)或 ESP32-S3(双核 Xtensa,带 USB,内存更大)。下面全部 内容,就是为这一段给理由。
真正重要的规格
宣传页会罗列所有东西;下面这些才是决定项目的数字。请把它们当成档位而不是精确值——每个 板厂都会砍一刀或者加一点。
| ESP8266 | ESP32(经典款) | ESP32-C3 | ESP32-S3 | |
|---|---|---|---|---|
| CPU | Tensilica L106,1 核,约 80–160 MHz | Xtensa LX6,2 核,240 MHz | RISC-V,1 核,160 MHz | Xtensa LX7,2 核,240 MHz |
| SRAM | 约 80 KB(用户堆约 50 KB) | 520 KB | 400 KB | 512 KB(可选 PSRAM) |
| Flash | 通常 1–4 MB | 4–8 MB | 通常 4 MB | 通常 8 MB 以上 |
| Wi-Fi | 2.4 GHz b/g/n | 2.4 GHz b/g/n | 2.4 GHz b/g/n | 2.4 GHz b/g/n |
| 蓝牙 | 无 | Classic + BLE 4.2 | BLE 5.0 | BLE 5.0 |
| GPIO | 约 11 个可用 | 约 34 个 | 约 22 个 | 约 45 个 |
| USB | 需外置 UART 桥 | 需外置 UART 桥 | 原生 USB Serial/JTAG | 原生 USB OTG |
| 安全 | 基本没有 | 安全启动 + Flash 加密 | 安全启动 + Flash 加密 | 安全启动 + Flash 加密 |
| 深度睡眠 | 约 20 µA | 约 10 µA | 约 5 µA | 约 10 µA |
| 支持 ESP-IDF | 否 | 是 | 是 | 是 |
规律很简单:ESP8266 是”挂了个 CPU 的 Wi-Fi 模块”,而它之后的东西,都是”带射频的小电脑”。
CPU、内存与 Flash:ESP8266 在哪一步就撑不住了
ESP8266 那约 50 KB 的可用堆,是你最先撞上的约束。一次 TLS 握手就能吃掉大半;两个缓冲区 加一个 JSON 解析器,内存就没了,然后炸出一个看起来像 Wi-Fi 故障的崩溃。ESP32 的 400–520 KB,让你能同时跑一个真正的 TLS 会话、一个 HTTP 服务器外加一两个任务,而不必做 英雄式的缓冲区复用。
Flash 同样重要,而且低价板子往往就在这里悄悄翻车。1 MB 的 ESP8266 装不下带回滚的 OTA 镜像;最少要 2 MB,4 MB 才舒服。一旦你想要 OTA + 文件系统 + 第二套分区方案,无论板子上是 哪颗芯片,你都已经把最小的那些板子用爆了。
C3 和 S3 还给了你硬件浮点和 ESP-IDF 里一套靠谱的 FreeRTOS 调度器。经典 ESP32 的第二个核,在一个任务独占网络、另一个负责对时序敏感的 I/O 时确实有用;C3 只有一个核, 但在典型的控制代码上每时钟的指令效率更高,实践中完全够用。
Wi-Fi,以及 ESP32-C3 的 RISC-V 问题
两个系列都做 2.4 GHz 802.11 b/g/n,而且都做得不错。差别在射频周围的东西。ESP32 系列给你
一套事件驱动的 Wi-Fi 栈(esp_wifi + esp_netif),带干净的断连事件、完整的 lwIP,以及
在 C3、S3 与经典款之间表现一致的 AP/station/sniffer 模式。ESP8266 给你的是更老的
non-OS 或 RTOS SDK 栈,而 Arduino core 会把大部分细节藏起来,直到出事。
RISC-V 这个标签让很多人不必要地紧张。它是一颗现代工具链下的单核 160 MHz 核心;你写的
还是同样的 C,代码密度更好,架构比上了年纪的 LX6 更干净。它并不意味着库更少——ESP-IDF
把目标抽象掉了,所以不管核心是 Xtensa 还是 RISC-V,esp_wifi、mbedTLS 和驱动 API 长得
一模一样。选 C3 而不是经典 ESP32 的真正理由不是指令集,而是更新的硅:原生 USB、BLE 5、
更低的深睡电流,以及长得多的支持周期。想从头到尾看这套栈长什么样,我那份
ESP-IDF 入门指南大约一小时就能在 C3 上跑通一个
Wi-Fi station。
蓝牙与 BLE:永远合不上的那道缺口
ESP8266 完全没有蓝牙。到此为止。如果你的产品需要跟手机通信、与 BLE 传感器配对、当信标, 或者跑一套 BLE 配网流程,那 ESP8266 就不是”更便宜的选项”——它根本不是选项。经典 ESP32 给你 Bluetooth Classic 加 BLE 4.2,做偏音频的旧式活儿很方便,但比大多数人需要的更重。 ESP32-C3 和 ESP32-S3 做 BLE 5.0,覆盖更远、广播容量更大,而且对一个典型 GATT 服务器 来说内存开销小得多。以 BLE 为先的设计里,C3 是性价比之选,而当你还想要 USB 和更大内存时 就上 S3。
GPIO 与外设
ESP8266 的 GPIO 是第二件会咬你的事。好几个脚有启动期约束,一个是纯 ADC,把 Flash 脚和 UART 留出来之后,实际可用的大概就十一个。ESP32 系列差不多翻了三倍。C3 的那约 22 个脚里 包含像样的 ADC、多个 UART、I2C、SPI、PWM 以及 RMT(用来驱动可寻址 LED 或红外,不必软件 模拟)。S3 的脚更多,还多了一个其他款没有的 LCD/摄像头外设。如果你的设计是”一个传感器、 一个脚”,这无所谓;如果是”一块屏、三个传感器加一个按键”,那它就直接替你定了芯片。
安全:为什么 ESP8266 在 2026 年是个负债
这是自 ESP8266 走红以来变化最大的一节。ESP8266 没有真正意义上的安全启动,也没有硬件 支撑的 Flash 加密——任何拿到物理接触的人都能读出你的固件和存储的凭据。ESP32 系列 (经典款、C3、S3)支持安全启动、Flash 加密、硬件 AES/SHA/RSA 加速、HMAC 与数字 签名外设。在 C3 和 S3 上,这些特性已经成熟,并在 ESP-IDF 里有完整文档。
如果一台设备要交付给客户、保存 API key、接入你的网络,或者要远程更新,那这个差别不是 锦上添花。在一颗没有安全存储的芯片上放一个可现场替换的凭据,就是一场只差一把螺丝刀的 入侵。对任何面向互联网的东西,选 ESP32,并从第一次烧录就把安全启动打开——事后再补, 意味着每一台都要重新配网。
功耗与电池寿命
这些芯片的深度睡眠都在个位数到低两位数的微安,所以在纽扣电池上,主要开销是射频而不是 CPU。C3 是其中最好的,深睡约 5 µA,唤醒也快,所以它常出现在电池传感器设计里。经典 ESP32 接近,但 BLE 和双核在醒着时更费电。ESP8266 纸面上有竞争力,但它更粗的睡眠与唤醒 行为,加上内存天花板,让它成为任何需要跑几个月的东西的更差选择。对市电供电、常开的节点 来说,功耗就是个舍入误差,不该驱动决策。
工具链:ESP-IDF、Arduino、PlatformIO
这是真正的岔路口,而且它直接对应芯片选择。ESP-IDF 不支持 ESP8266。 乐鑫自己的 SDK 只针对 ESP32 系列;ESP8266 只能用自己的 RTOS SDK 或社区 Arduino core。这单独一个事实, 就是长命产品选 ESP32 的最强理由:一套 SDK、一条升级路径、一套安全补丁。
Arduino 依然是让硬件动起来最快的方式,它的 ESP32 core 是一等公民。PlatformIO 把 Arduino 和 ESP-IDF 都包在同一个配置后面,是在一个仓库里管多块板子的理智做法:
; platformio.ini — 两个目标,一棵源码树
[env:esp8266]
platform = espressif8266
board = nodemcuv2
framework = arduino
monitor_speed = 115200
[env:esp32c3]
platform = espressif32
board = esp32-c3-devkitm-1
framework = espidf ; 或 arduino
monitor_speed = 115200
如果设备的工作就是网络——长连接、重连、TLS、自定义协议——那就用裸 ESP-IDF。当网络本身 就是产品时,你会希望每一层都看得见,而这正是 ESP32-C3 EasyTier 节点在同一套栈上做的事。而因为一份 代码往往要覆盖好几颗芯片,编译期守卫就是你的朋友:
/* 同一份源码,三个目标:把板级引脚在编译期守卫起来。 */
#if CONFIG_IDF_TARGET_ESP32C3
#define LED_GPIO 8
#elif CONFIG_IDF_TARGET_ESP32S3
#define LED_GPIO 48
#else
#define LED_GPIO 2
#endif
/* 先确认板子上到底是什么,再相信数据手册。 */
/* shell: idf.py set-target esp32c3 && esptool.py --port /dev/ttyACM0 chip_id */
价格档位与供货
我不打算报板子的具体价格:它每周都在变,还取决于你在哪买、哪个模组、多大 Flash、运费 多少。稳定的是档位:
- 裸 ESP8266 模组和开发板处在最底档。最便宜,灰市供货最广,也最可能到手发现是 1 MB Flash、根本做不了 OTA。买一大包之前先确认 Flash 大小。
- ESP32-C3 板子在上一档——比 ESP8266 贵一点点,换来的是新得多的芯片,带 BLE 5、 原生 USB 和真正的安全。这是新项目的甜点区。
- 经典 ESP32 开发板依然到处都是,而且因为是上一代常常打折。如果你就是想要两个核或 Bluetooth Classic,买它没问题。
- ESP32-S3 板子更贵,带 PSRAM 和屏幕排针的还要再贵。当你需要 USB OTG、更多 GPIO 或 PSRAM 时才买。
关于供货说一句:ESP8266 的优势一直是”到处都有”,而这已经被侵蚀了。C3 和 S3 模组现在同样 铺得到处都是,这就抽掉了把它设计进新东西里的最后一个现实理由。
寿命:2026 年之后谁还在拿更新
让 ESP8266 成为死胡同的是支持,而不是规格。它没有通往 ESP-IDF 的路,所以也就无法继承 落在那里面的安全修复、新 Wi-Fi 栈和工具链。社区 Arduino core 还在维护,但它离原厂隔了 一层。ESP32 系列——尤其是 C3/S3——才是乐鑫投入的地方:ESP-IDF 发布、认证更新和长期供货。 对一个玩具板子来说这无所谓。对任何你三年后还在出货的东西来说,这就是全部的理由。
决策表:按场景,哪个 ESP32 值得买
| 你的场景 | 买这个 | 为什么 |
|---|---|---|
| 一个传感器,经 Wi-Fi 上报,不要 BLE,固件固定 | ESP8266 | 够用里最便宜的;接受它的内存天花板 |
| 简单 Wi-Fi 传感器,但想要 OTA 和 TLS | ESP32-C3 | 有富余、有安全,价格同一档 |
| BLE 设备、配网、与手机配对 | ESP32-C3 / ESP32-S3 | BLE 5、开销低;需要 USB + 内存就上 S3 |
| 电池节点,要跑几个月 | ESP32-C3 | 深睡约 5 µA,唤醒快 |
| 屏幕、摄像头、USB OTG、PSRAM | ESP32-S3 | 更多引脚、LCD/摄像头外设、USB |
| Bluetooth Classic 或双核 | ESP32(经典款) | 家族里唯一还同时提供这两者的成员 |
| 任何交付客户或面向互联网的东西 | ESP32-C3 / ESP32-S3 | 安全启动 + Flash 加密,长期支持 |
具体推荐
如果你今天就要买、只想要一个答案:新项目默认上 ESP32-C3 开发板。 它是能消掉所有 “这个以后再说”项的最便宜芯片——BLE、USB、安全、深睡,以及一条支持路径。如果你的项目需要 屏幕、摄像头、USB OTG 或更大内存,就升到 ESP32-S3。只有在某个具体设计已经在它上面 验证过、负载确实是 Wi-Fi 传感器、而且你能接受没有 BLE、没有真正的安全和未来固件更新时, 才继续买 ESP8266。当你特别想要 Bluetooth Classic 或双核、又不在乎它是上一代时,买 经典 ESP32。
接下来往哪走
板子到了桌上之后,有用的下一步是一套能跑的工具链和第一次 Wi-Fi 连接,而这正是我那份
ESP32-C3 与 ESP-IDF 入门指南从 app_main 一直
讲到 station 模式入网的内容。如果你买它的原因是要把设备放进自己的网络,那就读一读
ESP32-C3 EasyTier 节点,看看在这么小的芯片上,
网络这条路能走多远。所有这些的短版本是:ESP8266 不是一颗坏芯片,它是一颗已经完成的
芯片——而在 2026 年,这正是新设计唯一负担不起的一件事。