第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