智能药盒控制系统设计

(整期优先)网络出版时间:2022-10-19
/ 2

智能药盒控制系统设计

李橙

中国铁路济南局集团有限公司济南电务段 山东省济南市 250031

摘要:本论文主要介绍了系统的硬件以及软件设计。子女可以通过按键来设置服药的时间、数量和类型,当到达服药时间会语音自动提醒老人服药,老人进行指纹识别确认身份后,电机推出药物让老人服药,同时记录老人的服药情况。若超过设定时间老人仍未服药,本系统会向手机发送短信告知子女。

关键字:STM32F103 指纹识别 药盒 LCD

1 课题任务要求

子女或医护人员提前将老人用药放入药盒中,设定每天服用药物的次数和每次用药量,服药时间到药盒语音提醒老人服药,通过指纹识别老人身份后药盒自动推出药物并记录,如超出服药时间仍未服用药物则远程向指定手机报警。要求利用STM32单片机、液晶显示、指纹模块、通信模块、按键电路、驱动电路等设计并制作该智能药盒控制系统。设计出单片机控制系统的硬件电路以及软件部分编程,制作出实物。

2 系统设计

2.1 系统硬件电路设计

单片机用串口通讯方式控制指纹模块识别老人的身份信息。AS608光学指纹检测模块的TX、RX引脚分别接到单片机的PA3、PA2引脚上,touch引脚接到单片机的PA11上,当有指纹按下且识别正确时,该引脚触发一个高电平信号。

LCD12864接线液晶屏显示设定的吃药名称、数量、药盒的状态、手机号和实时时间。与单片机PB5、PB6和PB7端口相连,为了增强IO口输出能力,每个端口接一个1KΩ的上拉电阻。

语音提醒电路接线。服药时间到,本系统会发出“请及时吃药”的语音,提醒老人服药。该电路输入电压为5V,UART接口是标准串口波特率9600bps。异步串口数据输入接单片机的PA9。

电机驱动接线。出药电机采用型号为28BYJ-48的步进电机,驱动使用ULN2003驱动芯片。ULN2003芯片与单片机PA4、PA5、PA6和PA7端口相连,以上几个端口利用程序设置为推挽输出,输出脉冲控制步进电机运行推出药物。

按键接线。按键S1~S4依次与PB12~PB15端口对应接通,使用低电平触发,IO口设置上拉。S1可以实现调整系统时间的功能;S2能够设置闹钟,可以设置吃药时间,吃药编号,吃药数量信息。在设置状态下,每按下一次S2对所需要设置的数值加一;S3的功能是设置子女的手机号;S4的功能为录入指纹的功能按键。

SIM800接线。负责向手机发送信息,使子女能够实时掌握老人服药的情况。SIM800芯片引脚1与二极管D2和电容C4连接。二极管具有整流、降压的作用,防止反向电流击穿,电容是稳压、滤波作用,提高工作稳定性。本设计采用5V直流电源,在经过二极管0.7V的压降后,模块得到4.3V的工作电压。引脚3与单片机PB10相连。

AT+CMGF=1\r\n是一条设置发送短信的格式的指令。参数0表示PDU模式,参数1表示文本模式,本设计选择文本模式。\r是回车符表示该AT指令结束,\n是换行符根据串口终端要求在最后要加上换行符。

2.2 软件设计

该设计使用了由正点原子给出的工程模板,在工程模板的文件夹包含CORE、HARDWARE、USER、SYSTEM以及FWLib五个文件夹目录。程序采用固件库的编程方法,调用结构体,不直接操作寄存器。

主程序分为两部分,一部分是系统初始化,另一部分是while循环。第一部分,初始化进入设定状态,系统会进行中断优先级分组,在编程中,首先开启IO口时钟,设置IO端口输入输出模式,完成IO口初始化;初始化屏幕进行显示,之后在进行初始化串口。

第二部分是while循环,主要完成调用按键子程序、显示子程序以及提醒子程序的功能,定时时间到语音播报提醒老人服药,老人进行指纹识别身份之后药盒自动打开使老人安全、按时的服用药物,超出服药时间老人未吃药会自动发送短信报警。主程序流程图如图2-10所示。

单片机要想判断按键是否按下,必须先要初始化按键对应的IO口。在本次设计中按键与GPIOB口连接起来,GPIOB是APB2总线上的外设,所以要先开启APB2时钟,然后再设置IO端口的工作方式。在编程时,利用官方定义好的 GPIO_InitTypeDef 结构体,然后对结构体内容进行设置。

时钟子程序可以控制实时时间,是通过STM32自带的RTC时钟计数器,在程序中定义一个变量timecount,用来获取RTC计数器的值。timecount/86400得到计数的天数,根据此方法得到年月日。timecount%86400得到秒钟数,将得到的秒钟数给一个新的变量temp,temp/3600得到小时,(temp%3600)/60通过计算得到分钟,(temp%3600)%60得到秒。

对引脚进行配置、时钟使能以及定义显示屏RS、RW、EN引脚对应单片机上的引脚。显示实时时间、药盒状态、设置手机号信息。

语音提醒子程序流程,将PA9引脚复用为串口1的发送端,发送端的工作模式复用为推挽输出模式。串口配置为收发模式,波特率设为9600bps,无硬件数据流控制,没有奇偶校验位,停止位一个。之后,进行此中断优先级配置,抢占3级优先级,响应3级优先级。

协议命令格式包括起始码0x7E、长度05、操作码41、曲目高位00、曲目低位01、效验码45以及结束码EF。

指纹比对是将采集到的指纹图像生成特征文件,再搜索比对芯片内建立的指纹库,若比对成功得到指纹ID。PA2初始化为时钟速率为50Hz的推挽输出,PA3端口设置为浮空输入。

3 实物调试

程序下载到实物后,上电运行。单片机及SIM800短信模块,12864显示模块等接通了直流电源。

显示屏第一行显示当前年月日,第二行显示小时、分钟、秒数以及星期。第三行显示药盒的状态,刚一上电时药盒处于关闭状态。此时,SIM800模块的网络指示灯会秒闪,说明模块正在进行网络注册。当网络指示灯变为慢闪,模块注册到网络可以使用。

按下按键4,进入录指纹的状态,录入成功显示屏第四行显示指纹号。按下按键3,进入设置需要接收短信的手机号功能,可以通过按键2进行每一位手机号的加、按键3可以减少号码数字、按键4为功能返回按键。依次输入需要接收短信的手机号码。

进入闹钟设置状态,首先设置小时,通过加减两个按键进行设置,完成后按下确定键,跳入设置分钟的界面,设置分钟后进入选择吃药名称的界面,一共可以选择五种吃药名称,最后可以选择用药的数量。此智能药盒可以设置三个定时提醒的闹钟。

通过按键1可以进入设置系统时间的功能。当设置的闹钟时间到,语音模块会不断的发出“请及时吃药”的语音提醒。老人听到语音提醒后,需要先在指纹模块上进行身份的验证,身份验证正确,屏幕上显示药盒打开的状态。同时电机转动弹出需要服用的药物,药物到达指定位置后会触动限位开关,电机停止转动。待老人服用完药物后,按下药仓电机回转,完成按时服药。

当设置的闹钟时间到语音提醒30分钟以上,老人仍然没有进行指纹验证,未按时服药。智能药盒会将老人未按时吃药信息以短信的方式发送给紧急联系人。

参考文献

[1] 王江,刘明德,曾震,等.基于老人的智能药盒设计[J].南方农机,2019,50(03):170—171.

[2] 吴亚栋,孙亚,曾光.基于AT89S52的智能语音提醒药盒设计[J].安阳工学院,2014(2):54—55.