一. 系统概述
这个智能药箱系统专门管理两种药品(A和B),通过药品管理、定时提醒、用户交互及信息传输等功能,提升用药的准确性和便捷性。具体功能包括:
-
药品信息与数量管理:
- 初始设置药品数量为50。
- 通过时钟模块可定时设定服药时间。
- 使用按键调整服药时间、药品名称及数量。
-
服药提醒与确认:
- 到达设定时间,系统会语音提醒用户服药。
- 用户确认服药后按下确认键。
- 系统更新药品的剩余数量,并发送服药信息至蓝牙APP。
-
显示与交互:
- OLED显示屏实时显示两种药品的剩余数量。
二. 电路设计
电路设计采用Altium Designer进行绘制:
- 控制核心是STM32F103C8T6单片机最小系统。
- 通过DS1302模块实现定时功能,并通过SDA、SCK、DAT引脚连接单片机。
- 光电开关用于检测药品剩余。
- JDY-32模块负责蓝牙通信,通过UART与单片机连接。
- LCD1602用于数据显示,采用8位并行数据口及三个控制脚。
- 使用JR6001模块进行语音播报,通过UART接口与单片机连接。
三.程序设计
#include "sys.h"
#include "delay.h"
#include "adc.h"
#include "math.h"
#include "key.h"
#include "E18_D80.h"
#include "OLED_I2C.h"
#include "Beep_Led_Relay.h"
#include "Control_Report_To_Police.h"
/************************************************
************************************************/
int main(void)
{
u32 bonud = 9600;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
delay_init(); //延时函数初始化
Beep_init();
Beep=1;//蜂鸣器初始化 系统上电后先让蜂鸣器停止叫
KEY_Init(); //PA11 PA5 PA15
JR6001_Uart1_init(&bonud); //PA9 PA10 语音
Usart2_Init(115200); //PA2 PA3 蓝牙
DS1302_GPIO_Init_Write_Time(); //PA0 CLK PA1 DATA PA4 RST
OLED_Init(); //OLED初始化
OLED_CLS(); //OLED清屏
OLED_ShowCN(32,2,0); //小常硬件
OLED_ShowCN(32+16,2,1);
OLED_ShowCN(32+32,2,2);
OLED_ShowCN(32+32+16,2,3);
delay_ms(500);
OLED_CLS();
while(1)
{
OLED_Display_Cotrol(); //显示控制函数
}
}
四.资料内容
24-32-03