当前位置: 首页 > news >正文

基于STM32单片机智能药盒定时吃药喂水蓝牙APP设计

1 系统功能介绍

随着现代医疗水平的提升和人们健康意识的增强,越来越多的人需要长期规律性地服药。然而在实际生活中,很多人因工作繁忙、记忆疏忽而出现漏服或错服药物的情况,这不仅影响治疗效果,甚至可能危害身体健康。针对这一问题,本文设计了一款 基于 STM32 单片机的智能药盒。该系统结合了 定时提醒、LED 指示、蜂鸣器报警、到位检测、蓝牙通信 等功能,并配套 手机 APP 实现远程交互,能够显著提升用户的服药依从性。

系统功能概述如下:

  1. 定时提醒功能:通过 APP 端设定 3 个吃药时间点,当到达设定时间时,单片机控制相应药盒底部的 LED 灯点亮,同时蜂鸣器发出报警提示。
  2. 开盒检测功能:每个药盒盖子上安装了到位开关,当用户打开药盒后,开关触发信号传输给单片机。
  3. 信息反馈功能:开盒动作通过蓝牙模块传输到手机 APP,用户或家属可以实时查看是否按时服药。
  4. 人机交互功能:用户可在 APP 上灵活设置服药时间,APP 显示每天的吃药记录和提醒信息。
  5. 多药盒管理:系统支持 3 个药盒的独立管理,可以分别设定不同的服药时间,适合需要多种药物同时管理的患者。
  6. 扩展性强:本系统可进一步扩展到更多药盒、加入语音播报或联网功能,以实现更智能的健康管理。

该智能药盒设计具有 提醒及时、交互便捷、信息可追溯 的优点,特别适合老年人、慢性病患者等需要长期服药的人群。


2 系统电路设计

整个系统的硬件电路由 STM32 单片机电路、LED 灯电路、到位开关检测电路、蜂鸣器电路、蓝牙模块电路、电源电路 六部分组成。

2.1 STM32 单片机电路

  • 核心作用:STM32F103C8T6 作为主控芯片,负责定时功能管理、LED 控制、蜂鸣器驱动、开关状态检测以及蓝牙数据通信。

  • 选型理由:STM32F103C8T6 性能稳定,带有丰富的定时器和串口接口,能满足定时提醒和蓝牙通信的需要,同时拥有足够的 I/O 口用于连接 LED、按键和蜂鸣器。

  • 电路特点

    • 串口用于与蓝牙模块通信;
    • GPIO 用于驱动 LED 灯和检测开关信号;
    • 另一路 GPIO 控制蜂鸣器报警。

2.2 LED 灯指示电路

  • 功能:药盒底部安装的 LED 用于提示用户哪个药盒需要取药。
  • 电路设计:每个 LED 与限流电阻串联后接到单片机 GPIO,由程序控制其亮灭。
  • 特点:视觉直观,用户看到对应药盒 LED 亮起即可取药。

2.3 到位开关检测电路

  • 功能:检测药盒是否被打开。
  • 电路原理:在药盒盖子处安装微动开关或霍尔开关,用户打开药盒时,开关状态变化,单片机检测到该信号。
  • 作用:用于确认用户是否按照提醒取药,并将结果反馈到 APP。

2.4 蜂鸣器报警电路

  • 功能:在定时时间到达时,蜂鸣器发出声音,配合 LED 灯增强提醒效果。
  • 电路特点:采用有源蜂鸣器,由 STM32 GPIO 控制,输出高电平时蜂鸣器响。
  • 优点:相比 LED 灯,声音提示更容易引起用户注意,尤其适合老年人。

2.5 蓝牙模块电路

  • 功能:实现药盒与手机 APP 之间的无线通信。

  • 模块选择:常用 HC-05 或 HC-06 蓝牙串口模块,支持与 STM32 串口通信。

  • 电路设计

    • TXD → STM32 RXD
    • RXD → STM32 TXD(必要时加电平转换)
    • VCC 接 5V,GND 接地

2.6 电源电路

  • 功能:为整个系统供电。

  • 电路特点

    • 使用 5V 电源输入,通过 AMS1117 等稳压芯片输出 3.3V,为 STM32 和蓝牙供电;
    • LED 与蜂鸣器由 5V 供电。

3 程序设计

程序设计部分主要包括 主程序、定时管理模块、LED 控制模块、开关检测模块、蜂鸣器模块、蓝牙通信模块

3.1 主程序逻辑

主程序主要负责初始化外设,并在主循环中处理定时任务和蓝牙通信。

#include "stm32f10x.h"
#include "lcd.h"
#include "led.h"
#include "beep.h"
#include "switch.h"
#include "bluetooth.h"
#include "timer.h"uint8_t medicine_status[3] = {0,0,0}; // 记录三个药盒是否已取药
uint8_t medicine_time[3] = {8,12,20}; // 默认定时时间(小时)int main(void)
{LED_Init();Beep_Init();Switch_Init();Bluetooth_Init();Timer_Init();while(1){Timer_Check(medicine_time, medicine_status); // 检查是否到吃药时间Switch_Check(medicine_status);               // 检测药盒开关Bluetooth_Task(medicine_status);             // 蓝牙数据处理}
}

3.2 定时管理模块

定时模块用于判断是否到达预设的吃药时间,如果到时,则点亮相应 LED 并启动蜂鸣器。

void Timer_Check(uint8_t *time_set, uint8_t *status)
{uint8_t now = Get_Current_Hour(); // 获取当前时间(RTC 提供)for(int i=0; i<3; i++){if(now == time_set[i] && status[i] == 0){LED_On(i);Beep_On();}}
}

3.3 LED 控制模块

void LED_On(uint8_t index)
{switch(index){case 0: GPIO_ResetBits(GPIOB, GPIO_Pin_0); break;case 1: GPIO_ResetBits(GPIOB, GPIO_Pin_1); break;case 2: GPIO_ResetBits(GPIOB, GPIO_Pin_2); break;}
}void LED_Off(uint8_t index)
{switch(index){case 0: GPIO_SetBits(GPIOB, GPIO_Pin_0); break;case 1: GPIO_SetBits(GPIOB, GPIO_Pin_1); break;case 2: GPIO_SetBits(GPIOB, GPIO_Pin_2); break;}
}

3.4 开关检测模块

用于检测药盒是否被打开,若检测到开盒,则关闭对应 LED、停止蜂鸣器,并标记已服药。

void Switch_Check(uint8_t *status)
{if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0) // 药盒1{status[0] = 1;LED_Off(0);Beep_Off();Bluetooth_Send("Box1 Opened\n");}if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 0) // 药盒2{status[1] = 1;LED_Off(1);Beep_Off();Bluetooth_Send("Box2 Opened\n");}if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == 0) // 药盒3{status[2] = 1;LED_Off(2);Beep_Off();Bluetooth_Send("Box3 Opened\n");}
}

3.5 蜂鸣器模块

void Beep_On(void)
{GPIO_ResetBits(GPIOB, GPIO_Pin_10); // 假设蜂鸣器接PB10
}void Beep_Off(void)
{GPIO_SetBits(GPIOB, GPIO_Pin_10);
}

3.6 蓝牙通信模块

蓝牙模块负责与手机 APP 进行通信,传输药盒开启状态和接收定时设置信息。

void Bluetooth_Task(uint8_t *status)
{if(Bluetooth_ReceiveFlag){char *cmd = Bluetooth_Read();if(strncmp(cmd,"SET",3)==0)  // 例如指令:SET 8 12 20{sscanf(cmd,"SET %d %d %d",&medicine_time[0],&medicine_time[1],&medicine_time[2]);Bluetooth_Send("Time Updated\n");}}// 每次更新状态给 APPchar msg[32];sprintf(msg,"Status:%d%d%d\n",status[0],status[1],status[2]);Bluetooth_Send(msg);
}

4 总结

本文设计了一种 基于 STM32 单片机的智能药盒系统,实现了 定时吃药提醒、LED 灯提示、蜂鸣器报警、开盒检测、蓝牙信息反馈 等功能。主要特点如下:

  1. 智能化提醒:定时提醒用户按时吃药,避免漏服。
  2. 多方式提示:LED 灯 + 蜂鸣器结合,增强提醒效果,尤其适合老年人。
  3. 实时监控:通过蓝牙将开盒信息反馈到 APP,方便用户和家属查看。
  4. 操作便捷:APP 可直接设置吃药时间,灵活调整。
  5. 扩展性强:可扩展到更多药盒,增加联网功能,实现远程监控和数据存储。

该系统不仅可以应用于家庭,还可推广到养老院、医院等场景,为用药管理提供了有效的技术支持,具有较强的实用性和应用前景。

http://www.dtcms.com/a/341667.html

相关文章:

  • abc Replace
  • cadence16.6修改原理图的Page Number过程中遇到问题
  • 工地智能安全带让高空作业更安全
  • PCB题目基础练习3
  • 前端项目面试分析
  • 解决 nginx: [warn] “ssl_stapling“ ignored, issuer certificate not found 报错
  • cobbler
  • 连续空间强化学习:策略输出的两种形态 —— 概率分布与确定性动作
  • 智慧城市SaaS平台/市政设施运行监测系统之排水管网运行监测、综合管廊运行监测
  • lesson43:Python操作MongoDB数据库完全指南
  • Hyperledger Fabric官方中文教程-改进笔记(十三)-使用测试网络创建通道
  • 25年CATL宁德时代社招晋升竞聘Veirfy测评SHL题库演绎数字语言推理答题指南
  • Js逆向 某花顺登录滑块逆向
  • AI入门学习--理解token
  • Springboot 项目配置多数据源
  • TDengine IDMP 运维指南(5. 使用 Helm 部署)
  • C++ 数据结构 和 STL
  • Python如何将两个列表转化为一个字典
  • Spring Framework 常用注解详解(按所属包分类整理)
  • innovus auto_fix_short.tcl
  • MTK Linux DRM分析(三)- drm_drv.c分析
  • 【智能体记忆】记忆如何塑造我们:深入探究记忆的类型
  • yolov8检测实时视频流,裁剪出未戴头盔的头部方案
  • HarmonyOS相对布局 (RelativeContainer) 基本概念
  • ODPS 十五周年实录 | 为 AI 而生的数据平台
  • 大数据毕业设计选题推荐-基于Hadoop的电信客服数据处理与分析系统-Spark-HDFS-Pandas
  • 文本智能抽取:如何用NLP从海量文本中“炼“出真金?-告别无效阅读,让AI成为你的“信息炼金师
  • OceanBase DBA实战营2期--SQL 关键字限流学习笔记
  • ae复制合成后修改里面图层相互影响问题
  • uos(类linux)系统 打印机自定义打印尺寸