第二章:硬件平台选型

各位同学好,这一章我们来聊聊硬件选型。说实话,这是整个项目里最让我纠结的部分。我做过好几个药盒项目,每次选型都要反复权衡。你想想看,选错了芯片,后面固件写得再好也白搭。

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升级的核心。到时候我会分享一个我踩过的坑,保证让你少走弯路。