3、核心硬件选型(主控):STM32 vs ESP32 vs 树莓派,选型对比表,我为什么最终选了ESP32
做嵌入式项目,第一步就是选主控。这一步选错了,后面全是坑。
我记得刚入行那会儿,有个师兄跟我说过一句话:「选芯片就像选老婆,不能光看参数,还得看脾气。」当时觉得是玩笑,后来自己踩了坑才明白——芯片的「脾气」就是它的生态、功耗、开发效率。这三样东西,数据手册里可不会写。
今天咱们就掰扯掰扯,STM32、ESP32、树莓派这三款主流方案,到底哪个更适合做多路灌溉控制器。
3.1 三款主控的「人设」
先给它们画个像:
- STM32:老牌工业级选手。稳定、可靠、外设丰富。我最早做灌溉项目用的就是它。
- ESP32:后起之秀。自带Wi-Fi和蓝牙,价格便宜到离谱。说白了就是「卷王」。
- 树莓派:全能型选手。跑Linux,能接摄像头,能跑Python。但功耗高、启动慢。
你想想看,灌溉控制器需要什么?
- 控制多路电磁阀(GPIO够用)
- 读取土壤湿度、流量传感器(ADC、I2C)
- 联网上报数据(Wi-Fi或4G)
- 低功耗(太阳能供电场景)
- 成本敏感(一个农场几十个节点)
带着这些需求,咱们来看对比表。
3.2 核心选型对比表
| 对比维度 | STM32F103(主流型号) | ESP32 | 树莓派 Zero W |
|---|---|---|---|
| 价格(批量) | ¥8-15 | ¥10-18 | ¥80-120 |
| 主频 | 72MHz | 240MHz(双核) | 1GHz(单核) |
| RAM | 20KB | 520KB | 512MB |
| Flash | 64KB-512KB | 4MB-16MB | MicroSD卡 |
| Wi-Fi/蓝牙 | 需外挂模块 | 内置双模蓝牙+Wi-Fi | 内置Wi-Fi |
| ADC精度 | 12位(2-3路) | 12位(2路) | 无(需外接) |
| GPIO数量 | 37(LQFP48封装) | 25(常用) | 26 |
| 低功耗模式 | Stop模式:~5μA | Deep sleep:~10μA | 无真正低功耗 |
| 开发环境 | Keil/IAR/STM32Cube | Arduino/ESP-IDF/MicroPython | Raspbian/Python |
| 启动时间 | 毫秒级 | 毫秒级 | 10-30秒 |
| 生态成熟度 | ★★★★★ | ★★★★☆ | ★★★★☆ |
关键发现:
- STM32在工业稳定性上无敌,但联网成本高(外挂Wi-Fi模块+¥15)
- ESP32在性价比和集成度上碾压,尤其适合分布式节点
- 树莓派性能过剩,功耗和成本不适合做终端节点
3.3 我为什么最终选了ESP32?
说实话,一开始我是偏向STM32的。毕竟做了十年嵌入式,对ST的生态太熟了。但这次项目有几个特殊要求,让我不得不重新考虑。
第一,成本压力。
一个农场少说50个节点,多则200个。如果用STM32+ESP8266(Wi-Fi模块),单节点成本多出12-15块。200个节点就是3000块。老板听了直摇头。
ESP32一片搞定,还多一个蓝牙,将来做手机近场调试也方便。
第二,开发效率。
这个项目时间紧。用STM32,我得写底层驱动、移植TCP/IP协议栈、处理Wi-Fi配网。一套下来至少两周。
ESP32用Arduino框架,Wi-Fi配网库现成的,MQTT库现成的,OTA升级库也是现成的。我花了一天就把原型跑通了。
嗯,这里要注意——不要觉得Arduino很low。在工业原型验证阶段,快速迭代比什么都重要。
第三,OTA升级。
灌溉控制器装在地里,你总不能每个节点都拿烧录器去刷固件吧?
ESP32原生支持OTA,分区分得好,还能做回滚。我曾经在STM32上做过OTA,那叫一个折腾——得自己写bootloader、算CRC、处理断线重传。搞了整整一周。
避坑指南:
我曾经在一个项目中用STM32+4G模块做远程灌溉。结果发现,4G模块的功耗比主控还高,电池撑不过三天。后来换成ESP32+深度睡眠,配合太阳能板,续航直接拉到半年。
所以选型时,别只看主控本身,要把整个系统的功耗算进去。
3.4 什么情况下我还会选STM32?
别误会,我不是说ESP32万能。有些场景STM32依然是首选:
- 工业温度范围:-40°C到85°C,ESP32虽然标称也能到,但长期可靠性不如ST
- 实时性要求极高:比如PWM控制步进电机,STM32的定时器更精准
- 安全认证:有些项目要求通过IEC 61508,STM32有安全手册,ESP32没有
- 客户指定:有些老客户就认ST,你跟他解释ESP32便宜,他不管
但咱们这个多路灌溉控制器,说白了就是个「传感器采集+阀门控制+数据上报」的活。ESP32完全够用,而且绰绰有余。
3.5 最终选型结论
我最终选了ESP32-WROOM-32D,理由总结如下:
- 集成Wi-Fi/蓝牙:省掉外挂模块,BOM成本降低30%
- 双核240MHz:一个核跑协议栈,一个核跑业务逻辑,互不干扰
- 深度睡眠10μA:配合太阳能充电,可以做到无人值守
- OTA升级:远程修复bug,不用下地干活
- 生态丰富:Arduino、ESP-IDF、MicroPython随便选,社区资料多
注意:
ESP32的ADC线性度不太好,测量土壤湿度时建议用外部ADS1115。另外,ESP32的GPIO耐压只有3.3V,驱动电磁阀必须加光耦隔离和MOS管驱动。这些细节咱们后面章节会详细讲。
好了,主控选型就聊到这儿。下一章咱们开始画电路原理图,重点讲「多路电磁阀驱动电路设计」——这里面的坑可不少,我当年烧过三个MOS管才搞明白。
公众号:蓝海资料掘金营,微信deep3321