第1章:核心硬件选型——主控芯片、传感器、执行器对比
大家好,我是你们的嵌入式系统讲师。今天咱们聊聊智能药盒的硬件选型。说实话,这块儿我踩过不少坑,今天把经验都抖出来。
智能药盒的核心硬件,说白了就三块:大脑(主控芯片)、眼睛(传感器)、手脚(执行器)。选对了,项目就成功了一半。选错了?嗯,后面改板子、重画PCB的滋味可不好受。
1.1 主控芯片:STM32 vs ESP32
主控芯片是药盒的“大脑”。我个人的习惯是,先看需求再选型,别一上来就追新。
| 对比项 | STM32F103系列 | ESP32系列 |
|---|---|---|
| 核心架构 | Cortex-M3 | Xtensa LX6双核 |
| 主频 | 72MHz | 240MHz |
| WiFi/蓝牙 | 无(需外挂) | 内置WiFi+BLE |
| 功耗 | 低(~50mA运行) | 较高(~80mA运行) |
| 开发难度 | 中等(HAL库) | 较低(Arduino/ESP-IDF) |
| 价格(批量) | ¥8-15 | ¥12-20 |
| 适用场景 | 纯本地控制、低功耗 | 需要联网、OTA升级 |
我的建议:
- 如果药盒只是本地定时提醒、不联网,选STM32F103。便宜、稳定、资料多。我在一个医疗项目中用过它,连续跑了两年没出过问题。
- 如果需要手机APP远程查看、云端记录服药数据,选ESP32。它自带WiFi,省一个通信模块的钱和空间。
避坑指南:我曾经在一个项目中选了STM32F103,后来客户要求加蓝牙功能。结果呢?只能外挂一个HC-05模块,成本增加了8块钱,还多占了一块PCB面积。早知道当初直接上ESP32了。
1.2 传感器选型:称重、红外、霍尔
传感器是药盒的“眼睛”。你要判断药有没有被取走,或者药盒有没有被打开。三种方案各有千秋。
1.2.1 称重传感器(HX711+电阻应变片)
这个方案最直接——药少了就是被吃了。我习惯用HX711模数转换芯片搭配电阻应变片。
- 精度:可达±1g,能分辨一粒药片
- 成本:模组约¥5-8
- 缺点:需要机械结构配合,药盒底部要留称重空间
- 代码示例(初始化):
// HX711初始化(STM32 HAL库)
void HX711_Init(void) {
GPIO_InitTypeDef GPIO_InitStruct = {0};
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1; // SCK, DOUT
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
// 等待传感器稳定
HAL_Delay(100);
}
个人经验:称重传感器最怕震动。药盒放在桌上,如果桌子不稳,读数会跳。我建议加一个滑动平均滤波,取10次数据的平均值,效果会好很多。
1.2.2 红外传感器(反射式)
红外对管检测药盒盖是否打开。简单、便宜,但只能判断“开/关”状态。
- 型号:ITR9909或TCRT5000
- 成本:¥1-2/个
- 优点:电路简单,一个IO口就能读
- 缺点:不能判断药量,只能判断盖子状态
1.2.3 霍尔传感器(磁性开关)
在药盒盖子上装一个小磁铁,PCB上放霍尔元件。盖子一开,磁场变化,输出电平翻转。
- 型号:A3144(单极霍尔)
- 成本:¥0.5-1/个
- 优点:非接触、寿命长、不怕灰尘
- 缺点:磁铁需要固定,装配麻烦一点
我的选择逻辑:
- 要精确知道吃了多少药?用称重传感器。
- 只想知道盖子有没有打开?用霍尔传感器,便宜又可靠。
- 红外传感器我一般不用在药盒上——环境光干扰大,容易误判。
1.3 执行器选型:舵机 vs 步进电机
执行器是药盒的“手脚”。自动出药、分药都得靠它。两种方案我都在项目中用过,各有脾气。
| 对比项 | 舵机(SG90) | 步进电机(28BYJ-48) |
|---|---|---|
| 控制方式 | PWM(50Hz) | 脉冲序列(步进驱动) |
| 角度精度 | 约1°(理论) | 约0.088°(取决于细分) |
| 扭矩 | 小(0.18kg·cm) | 中等(0.3kg·cm) |
| 成本 | ¥5-8 | ¥8-12(含驱动板) |
| 噪音 | 较小 | 较大(有嗡嗡声) |
| 适用动作 | 翻盖、拨动 | 旋转分药盘、推送 |
我的建议:
- 药盒只需要开盖、关盖?用舵机。代码简单,PWM一给就转。
- 需要精确控制分药盘旋转角度?用步进电机。28BYJ-48虽然便宜,但记得加驱动板(ULN2003),别直接用IO口驱动,会烧芯片的。
关键提醒:舵机有“死区”问题。你给1.5ms的PWM,理论上应该是中位,但实际可能偏1-2度。我建议在代码里做一次校准,把机械零位找出来。
1.4 综合选型建议
好了,咱们把三块拼起来。一个典型的智能药盒方案是这样的:
- 主控:ESP32(要联网)或STM32F103(不联网)
- 传感器:称重(HX711)检测药量 + 霍尔(A3144)检测盖子状态
- 执行器:舵机(SG90)控制翻盖
你想想看,这个组合成本大概在¥20-30之间,功能完整,可靠性也不错。我在去年帮朋友做的一个家用药盒原型上,用的就是这个配置,跑了三个月没出过故障。
最后一个小技巧:选型时留20%的余量。比如药盒需要检测10粒药,称重传感器量程选能测15粒的。为什么?因为药片大小不一样,留点余量心里踏实。
下一章咱们聊电路设计,包括电源管理、电机驱动、传感器接口这些实战内容。到时候我会把原理图拿出来一起分析。
公众号:蓝海资料掘金营,微信deep3321