基于STM32F103ZET6的医药自提柜设计与实现*

2022-10-12 14:32宋婧荣杜佩尧李君恺
科技创新与生产力 2022年8期
关键词:PC机条码条形码

陈 玲,梁 鑫,宋婧荣,马 帅,杜佩尧,李君恺,刘 婷

(天津商业大学信息工程学院,天津 300134)

2020年初,伴随着新冠肺炎疫情在我国的突然爆发,常规化的医院取药窗口因疫情防控的要求承受了巨大的出药压力,尤其是在三四线城市及城镇。因此推出“医药自提柜”可以满足医院疫情常态化下无接触的需求。患者只需通过处方单上的条形码在医药自提柜的识别区域扫描即可快速开箱取药,即拿即走。对比传统的人工取药,医药自提柜还能核对药品数目,减少错配少配药品的几率,减轻药房工作人员的工作量,提高患者取药效率。

20世纪80年代,智能药柜[1]引入美国医院,作为医院药品调剂的补充方式,其工作过程就是由护士将处方提交医生审核后,再返回到药房进行医药分配。崔勇强等[2]提出了一种智能自提柜冷藏控制系统,货物存入后处在冷藏保鲜状态,消费者收到通知后可随时前往自助取货,该系统解决了物流配送链末端的生鲜产品配送难题,满足了低能耗新型物流体系的发展需求;随着中国人口老龄化的日益加重,医疗行业的压力日益增加,黄明明等[3]设计了基于三菱FX3U PLC自助售药机;王语盈等[4]对外卖自提柜进行了市场分析与研究,以便更好地研究外卖自提柜的市场化问题;王鑫等[5]针对智能外卖自提柜的设计与实现展开了调查与探究;徐赟等[6]提出一种中药自助售货机,通过电子传真将药单传给药房工作人员,然后患者自助取药,有效减轻了医务工作人员的工作量,减少了人员密集排队买药的情况。

本文设计了一种医药自提柜,将串口通信和RS485通信用于信息传递,并结合模块化设计,研究并实现了医药自提柜的信息化、数据化、快速化。

1 系统总体设计

1.1 方案概述

本系统采用STM32F103ZET6单片机为主控制器,8路锁控板为从控制器。当药房人员需要装入药物时,在自提柜前按下开关键,此时单片机端接收到一个高电平,通过自身相应的I/O端口发出高电平信号,锁控板端接收到信号后,发送开锁的脉冲指令,电控锁打开,药房人员放完药后关闭箱门。当患者需要取走药时,将药单上附着的条形码放在医药自提柜红外线扫描区域,条形码识别系统进行扫描,信号转换与放大,然后将电信号传给单片机,经比较一致后,单片机发出开箱指令至锁控板,使柜门打开,患者即可将药取出。

整个系统的主、从控制器都选用STM32F103系列的32位微处理器作为控制核心,其高性能、低功耗、低成本以及多串口的特点非常符合系统的需求,此外系统整体还采用多个模块分开设计,显著降低开发难度,节省开发时间,减少人力物力成本。第106页图1为医药自提柜系统流程图。

图1 医药自提柜系统流程图

1.2 系统设计

1.2.1 锁控板模块设计

锁控板的主要功能就是接收信号来控制锁的开关,实时检测当前锁的开关状态。其控制系统主要是基于单片机微控制单元(Micro Control Unit,MCU)的控制系统,常见的有8路锁控板、12路锁控板、18路锁控板和24路锁控板。锁控板内部通信大多采用RS485通信,波特率设置为9 600 bit/s。工作原理是通电后通过电磁效应原理,实现上拉开锁。因此,一般只要给电子锁提供100~300 ms的通电就能打开连接的电控锁。本设计选用8路锁控板为从控制器,可以检测其连接电控锁的状态与控制锁的开关,可以通过红外传感器模块来检测自提柜的状态(有无药物);还能通过RS485通信与单片机进行信息传输,实时反馈自提柜的状态。

1.2.2 单片机模块设计

STM32F103ZET6是由意大利的意法半导体集团设计实现的控制核心为32位ARM(Advanced RISC Machines)微控制器的单片机,内核是Cortex-M3。STM32F103系列单片机芯片按片内存储(Flash)的大小可分为3类:一是16 K和32 K的小容量芯片,二是64 K和128 K的中容量芯片,三是256 K和512 K的大容量芯片。本设计选取大容量(512 K)的STM32F103ZET6单片机为主控制器,通过RS485通信获取锁控板反馈的柜子状态信息,通过串口通信向PC机传递柜子状态信息,同时PC机也能通过单片机向锁控板发送相关电控锁开关的控制信号指令。图2为相关通信接口图。

图2 通信接口图

1.2.3 条码识别模块设计

条形码(Barcode)最初是由诺曼伍德兰(Norman Woodland)在1949年提出。其实质就是将宽度不同的黑色线条与空白部分按照一定的编码规则组合形成,用以传递信息或数据的图形符号。因此为了读懂条形码所传递的信息,需要设计一套识别系统。该系统主要由条码扫描器、光电转换器、放大电路、整形(转换)电路、译码电路和PC机等部分组成。由于条形码中黑色线条与空白处能反射的可见光强弱程度不同,因此当光源发出的光线照射到条码上时,光电转换器就接收到强弱不同的反射光信号,进而产生电位高低不同的脉冲电信号到放大电路,进行信号的放大,然后送到整形(转换)电路进行模拟信号到数字信号的转换,再经译码电路编译成PC机可读取的二进制信号,传入PC机识别。图3为条码识别系统流程图。

图3 条码识别系统流程图

2 系统程序设计

系统整体的程序编写遵循串口通信协议、RS485通信协议以及锁控板的通信协议。主要的程序设计思想是医生为患者诊病后,先在PC机端查询空置柜子,可以通过红外传感器发射红外射线来检测柜子中有无药物,若自提柜中有药物,则红外传感器将此信息反馈给锁控板,锁控板传给单片机,单片机通过串口通信传给医生端PC机,PC机将在网络页面显示此柜子的状态。医生查询到相关空置柜子后,打印条形码与处方,患者拿取条形码和药单,在自提柜扫描区域内进行条码识别,经条码阅读器比较一致后,箱门打开(若条码识别错误,则箱门无法开启),患者取药,关闭箱门。图4为主程序流程图。

图4 主程序流程图

3 系统测试

将单片机和PC机通过串口数据下载线连接,打开单片机电源开关,将锁控板连接12 V电源以及RS485通信接口线。PC机将事先编写好的c语言程序由软件(Keil uVision5)通过串口数据下载线烧录进单片机和锁控板中,同时下载线也可以进行电平转换,即将RS232电平转为TTL电平(Transistor-Transistor Logic),然后单片机通过程序中的相关指令要求向锁控板发送相关的脉冲信号,锁控板接收到信号后,发送脉冲来控制电控锁的开关。红外检测模块通过红外传感器检测到自提柜的实时状态,通过RS485通信将数据反馈给单片机,反馈的相关数据将会在SS.com串口助手上的数据接收区显示。设置参数时,将PC机和单片机设置相同的波特率9 600 bit/s,才能保证数据收发的一致,即PC机在发送区发送什么数据,单片机则接收相关数据,再将其传输给PC机,显示在数据接收区。若波特率设置不一致,则接收不到任何数据信息或者显示乱码。相关测试结果见图5。

图5 锁控板反馈的信息

上电之后,将RS485中的GND(Ground)引脚接地,锁控板此时开始向PC机反馈相关电控锁状态,测试时若接收的数据为0X00,在锁控板的通信协议中,0X00代表电控锁未被打开;若接收的数据为0X11,则代表电控锁已被打开。

4 结束语

本文设计的医药自提柜系统整体减轻了医务工作人员的工作量,减少了患者拿药等待的时间,为药房人员与患者提供了便利。并且自提柜的创新出药模式能够在一定程度上有效地减少医务人员和患者以及患者之间的直接接触,避免交叉感染。整个医药自提柜系统无论是从控制器的性能上还是整体系统的设计上都能在一定程度上有效地解决“取药先排队”的问题,大大降低了人工成本,具有很大的应用价值与前景。

猜你喜欢
PC机条码条形码
创意条形码
商品外包装条码符号彩色化设计浅析
条形码里有数学
有趣的条形码
基于WiFi技术的智能手机双控视频小车
用VC++实现PC机与单片机的串行通信
单片机与PC机串行数据通信的工程实践
基于单片机与PC机的电气量采集系统设计
提高烟包条码印刷质量的方法
ISSN条码的制作和印前输出要点