一. 系统概述
智能药箱系统管理两种药品(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