第三章 硬件平台搭建:主控芯片选型与核心电路设计

各位同学,欢迎来到硬件实战环节。这一章我们要亲手搭建药盒的“骨架”——硬件平台。说白了,就是选对脑子(主控芯片),配好心脏(电源管理),再搭上感知器官(传感器)和发声器官(执行器)。

我在做第一个智能药盒原型时,就吃过选型的亏。当时图便宜选了个低端MCU,结果跑算法时内存爆了,半夜三点爬起来改代码……嗯,从那以后我选芯片就再也不敢马虎了。

3.1 主控芯片选型:ESP32 vs STM32

主控芯片是整个系统的决策中心。我个人习惯先看需求再选型,而不是盲目追新。对于药盒安全用药检测系统,我们需要考虑三点:

  • 处理能力:要能跑传感器数据采集、异常判断逻辑、报警控制
  • 外设接口:至少要有I2C、SPI、UART、GPIO
  • 功耗控制:药盒可能长时间待机,低功耗很重要

我常用的两个方案,给大家做个对比:

对比项 ESP32 STM32F103
核心架构 双核Xtensa LX6 单核Cortex-M3
主频 240MHz 72MHz
WiFi/蓝牙 内置双模 需外接模块
ADC精度 12位 12位
典型功耗 深睡5μA 停机3μA
开发难度 中等(Arduino/MicroPython) 较高(HAL/LL库)
价格 约15-25元 约8-15元

我的建议:如果药盒需要联网上报数据(比如家人远程查看用药情况),选ESP32。如果只是本地独立运行,STM32更稳定可靠。我自己的课程项目用的是ESP32,因为后续章节会讲云端报警。

3.2 核心电路设计

电路设计是硬件工程师的基本功。你想想看,芯片选得再好,电源不稳也是白搭。我分三个部分来讲:

3.2.1 电源管理电路

药盒通常用电池供电,所以电源管理是重中之重。我一般这样设计:

  • 输入:3.7V锂电池(18650或聚合物电池)
  • 稳压:AMS1117-3.3V LDO,给主控和传感器供电
  • 保护:加一个自恢复保险丝(500mA),防止短路
  • 滤波:输入输出各加一个10μF电解电容+0.1μF瓷片电容

我曾经在一个项目中没加滤波电容,结果传感器读数跳得像心电图……后来老老实实补上了,数据立马稳了。

小技巧:在电池正极串联一个肖特基二极管(如SS34),防止电源反接烧芯片。这个习惯救过我好几块板子。

3.2.2 晶振电路

晶振是芯片的“心跳”。ESP32和STM32都需要外部晶振才能稳定工作。

ESP32的晶振电路:

// 晶振连接
// XTAL_P (GPIO0) —— 40MHz晶振 —— XTAL_N (GPIO1)
// 两端各接一个22pF负载电容到地

STM32的晶振电路:

// 主晶振:8MHz
// OSC_IN —— 8MHz晶振 —— OSC_OUT
// 两端各接20pF电容到地
// 
// RTC晶振(可选):32.768kHz
// PC14 —— 32.768kHz —— PC15
// 两端各接12.5pF电容到地

注意:晶振的负载电容值要根据晶振规格书来选,不是随便用的。我见过有人用错电容值,导致晶振不起振,整块板子变砖。

3.2.3 复位电路

复位电路保证芯片上电时能正确初始化。最简单的方案是RC复位:

// ESP32 EN引脚复位电路
// EN —— 10kΩ上拉电阻 —— 3.3V
// EN —— 0.1μF电容 —— GND
// 按键(可选):EN —— 按键 —— GND

// STM32 NRST引脚复位电路
// NRST —— 10kΩ上拉电阻 —— 3.3V
// NRST —— 0.1μF电容 —— GND
// 按键:NRST —— 按键 —— GND

为什么这样设计?上电瞬间电容充电,EN/NRST引脚保持低电平,芯片复位。电容充满后引脚被拉高,芯片开始运行。这个时间大约几毫秒,足够芯片稳定了。

3.3 传感器选型

传感器是药盒的“五官”。我选了三种最实用的:

3.3.1 称重传感器

用来检测药盒里还有没有药。我推荐HX711+电阻应变片方案:

  • 量程:1kg(药盒一般装几十到几百克药)
  • 精度:0.1g(能检测到一粒药片被取出)
  • 接口:HX711通过I2C或SPI输出数字信号

避坑指南:我曾经用廉价的称重传感器,温度漂移严重,夏天和冬天读数差好几克。后来换了带温度补偿的型号,问题才解决。

3.3.2 红外传感器

检测药盒盖子是否打开。我常用HC-SR501人体红外模块:

  • 检测距离:3-7米可调
  • 输出:高电平3.3V,低电平0V
  • 延时:可调0.5秒到5分钟

注意:红外传感器对热源敏感,别装在空调出风口旁边,否则会误报。

3.3.3 霍尔传感器

检测药盒抽屉或翻盖的位置状态。我选的是A3144线性霍尔元件:

  • 工作电压:3.3V-5V
  • 输出:模拟电压(随磁场强度变化)
  • 灵敏度:可检测小磁铁靠近

安装时在药盒盖子上贴个小磁铁,霍尔传感器固定在盒体上。盖子一开,磁场变化,传感器输出信号。

3.4 执行器选型

执行器是药盒的“手脚”,负责发出警报和提示。

3.4.1 蜂鸣器

用于声音报警。我推荐有源蜂鸣器:

  • 类型:有源(自带振荡电路,通电就响)
  • 电压:3.3V-5V
  • 驱动:通过三极管或MOS管驱动,GPIO控制
// 蜂鸣器驱动电路(NPN三极管)
// GPIO —— 1kΩ电阻 —— 三极管基极
// 三极管集电极 —— 蜂鸣器负极
// 蜂鸣器正极 —— 3.3V
// 三极管发射极 —— GND

3.4.2 LED指示灯

用于视觉提示。我一般用三色LED:

  • 红色:异常报警(漏服、超时)
  • 绿色:正常状态
  • 蓝色:待机/充电

每个LED串联一个220Ω限流电阻,直接接GPIO。

3.4.3 震动马达

用于触觉反馈,适合老人或听力不好的用户。我选的是手机用的扁平震动马达:

  • 工作电压:3V
  • 驱动:同样用三极管驱动,和蜂鸣器电路类似
  • 控制:PWM调速,可以调节震动强度

我的经验:震动马达启动瞬间电流较大(约100mA),别直接接GPIO,一定要加驱动电路。否则芯片可能会复位。

3.5 整体电路连接图

最后,我把所有模块连起来。核心思路是:

  1. ESP32作为主控,负责数据采集和逻辑判断
  2. HX711称重模块接I2C(SDA/SCL)
  3. 红外传感器接GPIO(数字输入)
  4. 霍尔传感器接ADC(模拟输入)
  5. 蜂鸣器、LED、震动马达分别接GPIO(数字输出)
  6. 电源管理模块给所有器件供电

嗯,这一章的内容就到这里。硬件平台搭好了,下一章我们开始写代码,让这些硬件真正“活”起来。

本章要点回顾:

  • ESP32适合联网场景,STM32适合本地独立运行
  • 电源管理要加滤波电容和反接保护
  • 晶振电容值必须按规格书选
  • 传感器选型要考虑精度、接口和温度稳定性
  • 执行器驱动必须加三极管或MOS管

公众号:蓝海资料掘金营,微信deep3321