第二章:硬件平台选型
各位同学好,这一章我们来聊聊硬件选型。说实话,这是整个项目里最让我纠结的部分。我做过好几个药盒项目,每次选型都要反复权衡。你想想看,选错了芯片,后面固件写得再好也白搭。
2.1 主控芯片选型:STM32 vs ESP32
先说说这两款芯片。STM32和ESP32,我估计大家都听过。但具体怎么选,很多人拿不准。
STM32,老牌劲旅。我最早做药盒项目用的就是STM32F103,那叫一个稳。它的优势在于:
- 实时性好,中断响应快
- 外设丰富,I2C、SPI、UART一应俱全
- 生态成熟,资料多到看不完
- 功耗控制出色,适合电池供电
ESP32,后起之秀。自带WiFi和蓝牙,省掉一个通信模块的钱。我记得第一次用ESP32做原型,三天就把OTA跑通了,效率确实高。
我的建议:
- 如果药盒需要实时控制电机、精确计时,选STM32
- 如果药盒需要频繁OTA升级、数据上报,选ESP32
- 如果两者都要,可以考虑STM32+ESP32双芯片方案
我个人习惯是:量产项目用STM32,原型验证用ESP32。为什么?STM32的可靠性经过市场验证,ESP32的WiFi功能确实方便,但射频部分偶尔会出些小问题。
2.2 Flash与RAM需求分析
嗯,这里要重点说说。很多新手容易忽略存储资源,结果写到一半发现Flash不够用。
Flash需求估算:
| 组件 | 预估大小 | 说明 |
|---|---|---|
| Bootloader | 16-32 KB | 包含OTA升级逻辑 |
| RTOS内核 | 8-16 KB | FreeRTOS或类似 |
| 应用代码 | 64-128 KB | 业务逻辑、UI、通信 |
| 协议栈 | 32-64 KB | MQTT、HTTP、TLS |
| 固件备份区 | 128-256 KB | OTA升级用 |
| 总计 | 256-512 KB | 建议选512KB以上 |
RAM需求估算:
| 组件 | 预估大小 | 说明 |
|---|---|---|
| RTOS任务栈 | 8-16 KB | 4-6个任务 |
| 通信缓冲区 | 4-8 KB | MQTT消息、OTA数据包 |
| UI缓冲区 | 2-4 KB | 屏幕显示缓存 |
| 堆空间 | 8-16 KB | 动态内存分配 |
| 总计 | 24-48 KB | 建议选64KB以上 |
避坑指南:我曾经在一个项目里选了128KB Flash的芯片,结果OTA备份区放不下,最后只能压缩固件,折腾了整整两周。所以我的建议是:Flash选大一档,RAM选大一档。多花几块钱,省下无数麻烦。
2.3 通信模块选择:WiFi / 4G / BLE
通信方式的选择,说白了就是看药盒放在哪里用。
WiFi方案:
- 适合家庭场景,药盒放在家里
- 成本低,模块10-20元
- 带宽大,OTA升级快
- 缺点:依赖路由器,移动场景不能用
4G方案:
- 适合户外、老人随身携带
- 覆盖广,走到哪都能用
- 成本高,模块50-100元
- 需要SIM卡,有流量费用
BLE方案:
- 适合近距离数据同步
- 功耗极低,纽扣电池能用一年
- 不能直接OTA,需配合手机
- 成本最低,模块5-10元
我的经验:如果做家用产品,WiFi就够了。我做过一个养老院项目,用的是4G方案,因为老人经常出门散步。BLE嘛,适合做辅助通信,比如用手机App查看药盒状态。
最后说一句,选型没有标准答案。我见过用STM32+4G模块做的高端药盒,也见过用ESP32+WiFi做的低成本方案。关键看你的产品定位和预算。
下一章我们聊聊Bootloader的设计,这可是OTA升级的核心。到时候我会分享一个我踩过的坑,保证让你少走弯路。