第三章 硬件平台搭建:主控芯片选型与核心电路设计
各位同学,欢迎来到硬件实战环节。这一章我们要亲手搭建药盒的“骨架”——硬件平台。说白了,就是选对脑子(主控芯片),配好心脏(电源管理),再搭上感知器官(传感器)和发声器官(执行器)。
我在做第一个智能药盒原型时,就吃过选型的亏。当时图便宜选了个低端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 整体电路连接图
最后,我把所有模块连起来。核心思路是:
- ESP32作为主控,负责数据采集和逻辑判断
- HX711称重模块接I2C(SDA/SCL)
- 红外传感器接GPIO(数字输入)
- 霍尔传感器接ADC(模拟输入)
- 蜂鸣器、LED、震动马达分别接GPIO(数字输出)
- 电源管理模块给所有器件供电
嗯,这一章的内容就到这里。硬件平台搭好了,下一章我们开始写代码,让这些硬件真正“活”起来。
本章要点回顾:
- ESP32适合联网场景,STM32适合本地独立运行
- 电源管理要加滤波电容和反接保护
- 晶振电容值必须按规格书选
- 传感器选型要考虑精度、接口和温度稳定性
- 执行器驱动必须加三极管或MOS管
公众号:蓝海资料掘金营,微信deep3321