1. ESP32 芯片概览:选型、架构、资源与定位
做物联网这些年,我接触过不少芯片。从早期的 8051,到后来的 STM32,再到各种无线 SoC。但说实话,ESP32 是我个人用得最顺手的一款。为什么?因为它把「连接能力」和「计算能力」打包在了一起,价格还压得那么低。
这一章,咱们就好好聊聊 ESP32 系列。不光是看数据手册,我会把我在项目中踩过的坑、积累的经验也一并说出来。
1.1 ESP32 系列芯片选型
很多人一上来就问:「ESP32 和 ESP32-S3 到底选哪个?」我的回答通常是:先看你的项目需要什么。
目前乐鑫主推的几款芯片,各有各的脾气:
| 芯片型号 | 核心架构 | 主要特点 | 适合场景 |
|---|---|---|---|
| ESP32 | 双核 Xtensa LX6 | 经典款,蓝牙 + Wi-Fi,生态成熟 | 通用物联网、智能家居 |
| ESP32-S2 | 单核 Xtensa LX7 | USB OTG,无蓝牙,成本低 | 有线连接、数据采集 |
| ESP32-S3 | 双核 Xtensa LX7 | AI 加速,向量指令,更多 GPIO | 边缘计算、AI 视觉 |
| ESP32-C3 | 单核 RISC-V | 开源架构,低功耗,安全启动 | 电池供电、安全要求高 |
| ESP32-C6 | RISC-V | Wi-Fi 6,802.15.4 Thread/Zigbee | 下一代智能家居、Mesh |
| ESP32-H2 | RISC-V | 仅 802.15.4 + BLE,超低功耗 | Thread 边界路由器、传感器 |
1.2 核心架构:双核到底怎么用?
ESP32 最吸引人的地方,就是那个双核处理器。我记得第一次用的时候,心想:「两个核,总比一个快吧?」后来才发现,用不好反而更慢。
它的架构是这样的:
说白了,PRO_CPU 是「管家」,负责 Wi-Fi、蓝牙这些通信杂活。APP_CPU 是「主人」,跑你的业务逻辑。我早期犯过一个错:把 Wi-Fi 事件处理函数直接放在 APP_CPU 上跑,结果导致连接频繁断开。后来老老实实让协议栈待在 Core 0,问题就解决了。
1.3 外设资源:够用,但别浪费
ESP32 的外设,说多不多,说少不少。咱们挑几个关键的说说:
- GPIO: 34 个可编程 IO,但有些引脚有特殊功能。比如 GPIO6-11 默认连了 Flash,别乱用。
- ADC: 两个 12 位 SAR ADC,共 18 个通道。但线性度一般,我习惯做软件校准。
- DAC: 两个 8 位 DAC,输出范围 0-3.3V。精度不高,做音频还行。
- I2C / SPI / UART: 各 2-3 个,够用。注意 I2C 的 SDA/SCL 要选支持开漏输出的引脚。
- PWM: 16 通道,通过 LEDC 控制器实现。频率可调,驱动电机、LED 都没问题。
- RMT: 红外遥控专用外设,也能用来模拟 1-Wire、DHT11 这类协议。
我个人的经验: 做项目前,先把引脚功能表打印出来贴在墙上。ESP32 的引脚复用很灵活,但也很容易踩坑。比如我做过一个项目,用了 GPIO2 做按键,结果每次下载程序都失败——因为 GPIO2 在下载模式下被拉高了。
1.4 物联网定位:它到底适合做什么?
ESP32 的定位很清晰:低成本、低功耗、高集成度的物联网 SoC。它不是用来跑 Linux 的,也不是用来做高性能计算的。它的战场在:
- 智能家居: 灯、插座、传感器、门锁。Wi-Fi 直连,不需要网关。
- 工业数据采集: 通过 UART 或 SPI 接传感器,上传到 MQTT 服务器。
- 边缘控制: 本地做简单逻辑判断,减少云端依赖。
- 低功耗传感器: 搭配 ESP32-C3 或 H2,用电池供电跑几个月。
你想想看,一个芯片集成了 Wi-Fi、蓝牙、双核处理器、丰富外设,价格才十几块钱。这在五年前是不敢想的。但也要清醒:它的 Wi-Fi 功耗偏高,不适合需要持续连接的电池设备。这时候就要考虑低功耗模式了——这部分咱们后面会专门讲。