
概况
与普通药盒相比,智能药盒能起到吃药提醒作用。然而,市面上现存的智能药盒大部分只有单一固定大小的药仓,或通过隔板变换仓位体积,仓位不密封容易受潮。另外,大部分智能药盒虽然能起到提醒服药的作用,但是无法提示药品服用数量。针对这些问题,本教程设计了一款多功能智能药盒。
特性
- 药盒体积小巧轻便,且拥有可变换的内置药仓体积。
- 内置电池,可充电,便于外出携带。
- 低电量提醒。
- 蓝牙联网。
- 服药提醒:声音提醒(音量大小可调)、指示灯提醒,屏幕显示提醒。
- App 端设置:可在 App 端设置需要服用的药品对应仓位、服用量及服药提醒时间。
- 错过提醒:错过服药时间后,每隔3分钟重新提醒一次,直到检测到服药行为。
- 寻找药盒:当药盒丢失时,可以激活声音提醒功能,辅助寻找药盒。
改造对象介绍
本教程对下图所示药盒进行智能化改造。该药盒具有以下特点:
-
该药盒有 2 种尺寸的药仓,可以根据所需存放药丸的数量选择合适的大小。
-
该药盒的药仓独立且具备单独的盖子,这样我们打开透明外盒的盖子时,不会发生药因抖动混在一起或洒出来的"人间悲剧"。每个药仓独立可取,如可以保留 3 个药盒仓位,空出的位置方便放置改造的线路板;
-
药盒透明外盒有密封圈,密封性好。使用智能药盒可以让药物在湿度高的地方不易受潮。


步骤
-
第 1 步:硬件方案设计
硬件框图

原理图和 PCB 总览
主控电路部分
本方案基于涂鸦智能的一款低功耗蓝牙模块作为控制单元和无线连接单元。该模组一共有 12 个 GPI/O 口可以使用,其中 I/O 2~4 可配置成 ADC 口,I/O 8 可为串口 TXD 口,I/O 20 可为串口 RXD 口。
"低电量提醒"的设计思路:
通过使用模组的 ADC 采样口对电池的电压进行采集,该 ADC 采集口 可允许输入的电压范围为 0~3.6V,由于电池电压(最高 4.2V)超出了该范围,故设计电阻分压,使其符合允许的输入电压范围。外围电路预留调试接口以及复位按键。

蜂鸣器电路
我们选用蜂鸣器,以实现药盒声音提醒的功能。本次挑选的蜂鸣器为 GSC5025YA 贴片式电磁无源蜂鸣器。
-
蜂鸣器特点:
- 体积小巧,尺寸仅为 5.2*5.22 *2mm。
- 内部无震荡源,需要使用 PWM 波驱动。
- 声音频率可控,可以通过改变驱动 PWM 波的频率和占空比,来达到改变音调和音量的效果。
可根据使用场景选取合适的提示音量,可轻松实现提示音量大小可调的功能效果。
-
设计思路:
由于蜂鸣器的驱动电流较大,我们没有办法直接使用 I/O 口驱动,所以我们使用三极管、续流二极管、电阻、电容组成放大电路来驱动蜂鸣器。 -
原理图设计:

-
原理图说明:
部件 说明 1N4148W 二极管 由于无源蜂鸣器是感性元件,电流不能瞬变,需要有一个续流二极管提供续流回路,可以避免蜂鸣器两端的反向电动势产生尖峰脉冲电压进而损坏蜂鸣器。 R17 限流电阻,可防止流过蜂鸣器的电流过大而损坏蜂鸣器。 蜂鸣器 设置工作电流设置为 17mA 左右。
蜂鸣器的工作电流为 ≤100mAh,工作电压为 2V。R7 限流电阻,可以防止流过基集的电流过大而损坏三极管。 R8 有两个重要作用。 - 相当于三极管基极的下拉电阻。
当 “BUZZER” 脚悬空时,若没有 R8 的存在,基极易受到干扰而导致三级管状态改变,R8 的下拉作用可以使三极管保持在可靠的关断状态。 - 可以抬高”BUZZER“开启三级管的电压门槛值。
若没有 R8 的存在,则 “BUZZER” 电压值高于 VBE(sat)(大概为 0.7V)时三极管就会饱和导通。对于数字电路来说,0.7V 的门槛电压过低,而设置 R8 电阻后,只有当 “BUZZER” 脚的电压值达到 1.82V 以上,三极管才会饱和导通。- 计算过程如下:
- 蜂鸣器的工作电流为 17mA,即集电极电流 IC=17mA。
- 三极管的放大倍数参考下表 ,我们假设本次三极管放大倍数 β =100 。
- 则饱和导通时基极电流 IB=17mA/100=0.017mA,流过 R8 的电流为 0.7V/3.3kΩ=0.212mA,流经 R7 的电流 IR7=0.212mA +0.017mA=0.239 mA。那么“BUZZER”脚的门槛电压是 0.7V+0.239 mA× 4.7kΩ=1.8233V≈1.82V。

- 计算过程如下:
- 相当于三极管基极的下拉电阻。
仓位指示灯
我们选用指示灯指示药仓,达到提醒服用指定药物的功能。
我们有两种药盒尺寸,大尺寸药盒共有 2 个药仓,小尺寸药盒共有 3 个药仓,一共需要 5 个指示灯。-
设计思路:
如果按照常规的设计,一个指示灯需要一个 I/O 口来控制。对于本次选用的模组,可以使用的 I/O 口数量一共需 12 个。由于还有其他功能需要使用 I/O 口,为了节约 I/O 口资源,我们需要用尽可能少的 I/O 口去控制更多的灯。因此,我们采用查理复用,用 n 个 I/O 口驱动 n*(n-1) 个 LED。 -
原理图:

说明:我们可以用 3 个 I/O 口实现对 5 个 LED 灯的控制。需要指示多个仓位时,由于人眼的暂留效应,当切换频率足够快时,就能达到同时显示的效果。
OLED 显示电路
我们选用 OLED 显示屏,以提示不同药仓药物的服用数量等信息。
出于低功耗的考虑,我们还用 NMOS 管和电阻搭建了开关电路。当药盒待机时,“KEY_OLED” 引脚拉低,NMOS 管截止,“GND_OLED”与 GND 断开,OLED 屏断电。原理图:

开仓检测电路
我们设计了形成行程开关和按键,服药行为的反馈记录。
-
行程开关
- 设计思路:
行程开关用于检测药盒外壳是否被打开。- 外壳处于关闭状态时,开关断开,“KEY_OPEN” 检测到高电平。
- 外壳处于打开状态时,开关闭合,“KEY_OPEN” 检测到低电平。
因为药盒更多的时间是闭合的状态,所以我们选用常闭式的行程开关,本方案选用K5-1678DA-01 行程开关。这样在大多数药盒关闭的时间外围电路没有回路电流,可以降低功耗。
- 原理图:

- 设计思路:
-
仓位按键
-
设计思路:
仅采用行程开关只能了解到是否有打开药盒的行为,不能确定是否有服用指定仓位的药。为此,我们增加了仓位按键,服用不同仓位的药品后,按下对应的仓位的按键,给到主控单元信号反馈。
由于本次方案是在现有药盒的基础上进行改造,不方便进行结构配合,所以需要手动操作按键。如若重新设计机构,可以使用轻触开关和药仓盖子联动设计。在开盖时,按键按下,可自动检测到服药行为。 -
原理图:

说明:当按下 S4 按键时,ADC_KEY 采集到的电压值为 3.3V。当按下 S5 按键时,ADC_KEY 采集到的电压值为 1.65V。当按下 S6 按键时,ADC_KEY 采集到的电压值为 0.825V。利用按下不同按键时,ADC 采集到的不同电压值,巧妙地进行判断,可以有效节约 I/O 口资源。
-
充电管理电路
我们将药盒设计为可充电式药盒,实现便携目的。
-
设计思路:
充电管理芯片选择常用的 TP4056,该芯片是为单节锂电池进行恒压/恒流充电管理的芯片。TP4056 内部集成有电池温度监测电路,可以防止温度过高或过低对电池造成的损害。
-
原理图:


-
原理图说明:
-
实现方法为测量芯片 TEMP 引脚的电压值变化进行判断。
当 TEMP 脚的电压值小于输入电压的 45% 或大于输入电压的 80% 时,则意味着电池温度过低或过高,充电会被暂停。
TEMP 脚的电压是由电池内的 NTC 热敏电阻和芯片外围电路电阻(在我们设计电路中即 R18、R9)分压后的值,若不想启用电池温度检测功能,将 TEMP 脚接地即可。 -
R18 和 R19 的值是根据电池的温度监测范围(TL~TH)对应的热敏电阻的阻值来确定的,根据手册可知:
$$R18=\frac{R_{TL}R_{TH}(K_{2}-K_{1})}{(R_{TL}-R_{TH})K_{2}K_{1}}$$ $$R19=\frac{R_{TL}R_{TH}(K_{2}-K_{1})}{R_{TL}(K_{1}-K_{2}K_{1})-R_{TH}(K_{2}-K_{2}K_{1})}$$计算说明:
部件 说明 $$R_{TL}$$ 电池温度 TL 时的阻值。 $$R_{TH}$$ 电池温度 TH 时的阻值。 K1 电池温度 TH 时的阻值,为 0.45。 K2 为电池温度 TH 时的阻值,为 0.8。 $$R_{TL}$$ 电池的使用温度范围为 0℃ ~ 60℃,查询电池的 NTC 电阻的温度—阻值对应表可知$为 29.28KΩ。 $$R_{TH}$$ 电池的使用温度范围为 0℃ ~ 60℃,查询电池的 NTC 电阻的温度—阻值对应表可知$为 2.913KΩ。 R18 计算可得 R18=3.15KΩ(实际取 3.3K)。 R19 R19=22.05KΩ(实际取 22K)。 $$R_{PROG}$$ PROG 引脚外接的电阻。 恒流充电电流的计算方式: $$I_{BAT}=\frac{1200}{R_{PROG}}$$ 因此,本方案充电电流设计为 0.5A。
-
LDO 部分
我们选取尺寸较小的电池以及静态功耗较低的芯片,以满足药盒的便携功能以及提高电池的续航能力。
-
电池
-
设计思路:
考虑到药盒的应用场景为长时间携带外出,故在设计的时候需要考虑电池是续航时长,产品设计需要尽可能降低功耗。而出于携带便捷性的考虑,药盒的体积不宜过大和和重量不宜过重,因此无法选用大容量的电池。 -
电池参数:
参数 说明 尺寸 37 * 30 * 5 mm 容量 600mAh 工作电流 ≤600mA 重量 10g
-
-
LDO
-
设计思路:
选型的时候,在满足性能需求的同时,尽可能的选取静态功耗低的芯片。本次选取的 LDO 型号为 SGM2040-3.3YN5G/TR,该芯片为固定输出 3.3V 电压的电压转化芯片,静态电流 $I_Q$ 仅为 1uA。 -
LDO 参数:
参数 说明 封装 SOT23-5 $$V_{drop}$$ 85mV $R_{\Theta JA}$ 207℃/W 结温 150℃ 额定输出电流 250mA -
后级主要负载的工作电流:
部件 负载电流 蜂鸣器 消耗电流 17mA OLED 全屏显示 最大功耗 18mA 模组 最大工作电流 13mA 综上:该药盒理论最大消耗电流为 48mA,该款芯片的额定输出电流 250mA,远满足需求。
-
芯片功耗计算方式:
$P_D=(V_{in}-V_{out})*I{out}+V_{in}*I_Q=(4.2V-3.3V)48mA+3.3V1uA=43.2mW$
-
结温计算方式:
$T_J=T_A+R_{\Theta JA}P_D=45℃+207℃/W43.2mW=53.9424℃$
综上:计算结果为该结温小于芯片最高结温。选取这款芯片符合我们的应用需求。
说明:$T_A $ 表示封装所处的环境温度 ( ℃ ),本次用实际最高环境温度 45 ℃ 带入计算。
-
原理图:

-
-
手把手超详细教程:如何制作一款多功能智能药盒(二)



被折叠的 条评论
为什么被折叠?



