1. 无线MCU与传感器采集系统总览

做无线传感器项目,第一步就是选芯片。这事儿看着简单,其实坑不少。我见过太多人,上来就选ESP32,理由是“便宜、资料多”。结果做到低功耗环节,发现怎么都降不下去,换芯片又得重新画板子,折腾得够呛。

所以这一章,咱们就聊聊怎么选无线MCU。我会拿三款主流芯片——ESP32、nRF52840、STM32WB——做个对比,再讲讲选型时真正该看什么。

1.1 三款主流芯片,各自什么路数?

先给个总览。这三款芯片,定位完全不同:

芯片型号 无线协议 内核 典型功耗(RX) 最大发射功率 Flash / RAM 适合场景
ESP32 Wi-Fi + BLE 双核 Xtensa LX6 ~80 mA +20 dBm 4 MB / 520 KB Wi-Fi直连、OTA、原型验证
nRF52840 BLE + Thread + Zigbee 单核 Cortex-M4F ~4.6 mA +8 dBm 1 MB / 256 KB 低功耗传感器、可穿戴
STM32WB55 BLE + Thread + Zigbee 双核 M4 + M0+ ~4.5 mA +6 dBm 1 MB / 256 KB 工业控制、协议栈分离

你看,光看接收电流,ESP32就比另外两款高了将近20倍。这不是说ESP32不好,而是它天生就不是为纽扣电池设计的。

1.2 选型核心指标——别只看主频和Flash

很多工程师选MCU,习惯先看主频、Flash、RAM。做无线产品,这些当然重要,但还有几个指标,你得更上心。

1.2.1 功耗——最容易被低估的坑

功耗分三块:发射、接收、休眠。我习惯先看休眠电流,再看接收电流。

  • 休眠电流:nRF52840能做到0.4 µA(保留RAM),STM32WB大概0.6 µA,ESP32在深度睡眠下也能到5 µA左右。但注意,ESP32从深度睡眠唤醒需要时间,大概几毫秒,这期间电流会冲到几十毫安。
  • 接收电流:这个差距最大。nRF52840和STM32WB都在4-5 mA,ESP32直接跳到80 mA。为什么?因为Wi-Fi的OFDM解调器本身就比BLE的GFSK复杂得多,功耗自然高。
  • 发射电流:取决于发射功率。ESP32在+20 dBm时能到240 mA,nRF52840在+8 dBm时大概14 mA。你想想看,如果项目用两节AA电池供电,ESP32可能撑不过一周,nRF52840能跑几个月。

我的经验:做电池供电的产品,先算平均功耗,别只看峰值。我曾经有个项目,用ESP32做温湿度采集,每5分钟上报一次,结果电池只撑了3天。后来换成nRF52840,同样的上报频率,电池撑了半年多。

1.2.2 发射功率与灵敏度——通信距离的真相

发射功率高,不一定传得远。灵敏度同样关键。

  • ESP32:发射功率最高+20 dBm,灵敏度-98 dBm(BLE)。Wi-Fi模式下灵敏度能到-92 dBm左右。
  • nRF52840:发射功率最高+8 dBm,但灵敏度能做到-103 dBm(BLE长距离模式)。
  • STM32WB:发射功率最高+6 dBm,灵敏度-100 dBm。

这里有个公式:链路预算 = 发射功率 + 灵敏度(绝对值)。nRF52840的链路预算大概是111 dB,ESP32是118 dB。看起来ESP32更高,但别忘了,ESP32的接收电流是nRF52840的十几倍。说白了,用高功率换距离,代价是电池寿命。

避坑指南:我曾经在一个工厂项目里,为了覆盖200米距离,硬把ESP32的发射功率调到+20 dBm。结果通信是稳定了,但设备发热严重,电池仓都烫手。后来改用nRF52840加外置PA,功耗降了一半,距离还多了50米。

1.2.3 外设资源——够用就好,别贪多

做传感器采集,常用的外设就那几个:ADC、I2C、SPI、UART、GPIO。三款芯片都够用,但有些细节要注意:

  • ESP32:两个I2C、三个SPI、三个UART,还有触摸传感器接口。但它的ADC线性度一般,做高精度采集得校准。
  • nRF52840:一个I2C、两个SPI、一个UART,支持USB和QSPI。ADC是12位的,精度不错。
  • STM32WB:外设最丰富,多个I2C、SPI、UART,还有CAN、USB、LCD接口。ADC也是12位,带硬件过采样。

我个人习惯,做传感器节点,外设够用就行。别为了“万一以后要用”选个外设最多的芯片,结果功耗和成本都上去了。

1.3 成本与生态——别只看芯片单价

芯片单价只是冰山一角。开发成本、认证成本、生产维护成本,这些都得算进去。

维度 ESP32 nRF52840 STM32WB
芯片单价(1k) ~$2.5 ~$4.5 ~$5.0
开发环境 Arduino / ESP-IDF nRF5 SDK / Zephyr STM32Cube / Mbed
文档质量 中等,社区活跃 优秀,官方例程多 优秀,但学习曲线陡
认证成本 FCC/CE 需注意Wi-Fi谐波 BLE认证简单 BLE认证简单
量产维护 版本迭代快,注意兼容性 稳定,长期供货 稳定,工业级支持

你看,ESP32虽然便宜,但Wi-Fi认证比BLE麻烦得多。我有个朋友做智能插座,ESP32的FCC认证花了两个月,改了三版天线才过。而nRF52840的BLE认证,基本一次过。

注意:别只看芯片单价。如果项目量不大(几千台),开发时间和认证成本才是大头。选一个你熟悉的生态,比省几块钱芯片钱划算得多。

1.4 选型决策流程——我一般这么走

嗯,这里我画了个流程图,帮你理清思路:

无线MCU选型决策流程 项目需求分析 是否电池供电? 是 否 选低功耗BLE芯片 nRF52840 / STM32WB 选Wi-Fi或高性能芯片 ESP32 / 其他Wi-Fi MCU 是否需要Wi-Fi直连? 是 否 选ESP32 选nRF52840/STM32WB 注意:BLE也能通过网关连Wi-Fi 但延迟和成本会增加

这个流程我用了好几年,基本没出过大的选型失误。核心就一句话:先定供电方式,再定无线协议,最后看生态和成本。

1.5 小结——选型没有银弹

说实话,没有哪款芯片是万能的。ESP32适合需要Wi-Fi直连、不苛求功耗的场景;nRF52840是低功耗传感器的首选,生态成熟、文档齐全;STM32WB适合工业级应用,特别是需要双核隔离的场景。

我个人的建议是:如果你刚开始做无线传感器项目,从nRF52840入手。它的低功耗特性会让你少走很多弯路。等把低功耗调明白了,再回头看ESP32,你会发现很多问题都能迎刃而解。

一个小技巧:选型时,先买几块开发板回来,用示波器测一下实际功耗。数据手册上的数字都是理想情况,实际跑起来可能差不少。我吃过这个亏,现在每次选型都先实测。