基于STM32和OpenMV的全自动无接触送药小车系统
2022-11-24齐曼胡乃瑞安天洋高唯峰
齐曼,胡乃瑞,2,安天洋,高唯峰
(1.沈阳航空航天大学电子信息工程学院,辽宁沈阳,110000;2.中国科学院沈阳自动化研究所,辽宁沈阳,110016)
0 引言
新冠疫情暴发,医护人员需要为病人送取药物,为降低与病人接触过程中引起的交叉感染风险,减轻工作负担,以及让年老的病人正常服药。在此背景下设计自动无接触送药小车系统,模拟医院病房设置,铺设模拟病房轨道,轨道平面设置为白色,小车行驶的路径设置为红色,为方便测试,设置八个病房,模拟病房轨道,每个病房号码可以任意设置,将病房号码放在病房入口处,即放置在小车行驶的十字路口处,方便摄像头识别。本系统实现全自动智能送取药物,设置一键启动,在打开电源后,识别相应病房号码,在检测到放置药物后会自动启动,沿着轨道向相应病房运送药物,在检测到病人取药后,会自动返回药房,医护人员与病人全程无接触,降低了传染风险,并且节省人力成本,减少人员紧张情况下在送取药物方面的人员分配,提高了整体工作效率,为医院减轻了工作负担,应用前景广泛,随着技术的不断推进,也可用于其他领域。
1 系统总体设计
本系统以STM32F103作为核心处理芯片,搭载外围电路以及灰度传感器,OpenMV摄像头模块,桥式整流直流电机驱动以及直流减速电机等模块设计并制作出的自动无接触送药小车系统。根据实际情况设计,首先通过摄像头识别病房号码,锁定小车送药的目标病房,此部分可以通过人为观察识别号码是否正确,若不正确可以通过复位重新识别,直到识别号码正确,然后将需要运送的药品放置在小车上,小车识别到放置药品后,自行启动,通过灰度传感器返回的数据值调节占空比,进而控制PWM控制小车寻迹,并通过摄像头识别病房号码,在检测到指定病房号码的位置坐标后,将坐标数据通过串口发送给单片机,单片机控制小车进入相应病房并自动停车,在识别到卸载药物后按照原轨迹返回药房。系统总体框图如图1所示。
图1 系统总体框图
2 系统硬件设计
系统硬件结构主要包括:主控模块,摄像头模块,寻迹模块。
■2.1 主控模块
主控模块采用STM32F103作为主控芯片,此控制器具有强大的库资源,并且开发简易,功耗低,处理速度快,便于开发使用。主控模块通过串口通信与摄像头建立联系,通过A/D转换模块采集小车行驶路径的信息,将采集到的灰度信息通过PID处理后将数据加在相应的占空比进而调节PWM波使小车正常运行;连接红外光电传感器检测是否装载或取走药品进而启动小车。
■2.2 摄像头模块
本系统采用的摄像头为OpenMV,OpenMV具有强大的开源库,可以实现多种功能,并具有数据存储的卡槽,可以存储大量的数字模板,方便进行多模板匹配。OpenMV摄像头通过串口通信协议与主控模块建立联系,方便功能的开发与使用,并且具有小巧的特点,适合安装于小车上,符合本系统功能的开发。
■2.3 寻迹模块
寻迹模块采用模拟灰度常感器,模拟灰度传感器利用不同颜色的检测面对光的反射程度不同,光敏电阻接收到的反射光不同,其阻值也会有所不同的原理分析出检测面的不同颜色,其工作电压范围比较宽,在电源电压波动较大的情况下仍然可以正常工作。它可以输出连续的模拟信号,更容易通过A/D转换反映检测面的颜色信息。
3 系统软件设计
系统软件部分设计主要包括摄像头数字识别模块,循迹模块两大部分。系统总体流程图如图2所示。
图2 软件设计总体流程图
■3.1 摄像头识别模块
摄像头模块的软件设计,首先采集不同角度病房号码的数字信息形成样本库保存到OpenMV的SD存储卡中,通过多模板匹配识别算法增加药房数字识别的准确性以及稳定性,识别数字后分析药房号码所在位置坐标,将坐标数据通过串口发送给单片机,单片机通过坐标数据执行相应的指令。摄像头的数字识别流程图如图3所示。
图3 数字识别流程图
■3.2 寻迹模块
寻迹模块采用两路模拟灰度传感器,两路传感器返回值作差得到的偏差值输出,通过PID算法控制电机信号输入进而控制小车的平稳运行。左右两路传感器同时还具有检测转弯点的功能,正常行驶时,两传感器位于白色路面上方,返回值均较大,由于病房转角处是十字交叉线,当行驶到此处时,两路传感器返回值会骤减,因此在行驶轨道检测返回数据值,提前设定阈值,当两传感器返回值之和小于某一特定阈值,便会结合摄像头读取数字后输出的转向标志位,进入指定病房内。寻迹流程图如图4所示。
图4 寻迹流程图
4 算法设计
■4.1 PID算法
PID算法在工业控制中占有非常重要的地位,通过闭环控制调节在实际执行输出过程中与预设值所产生的误差,尤其在智能循迹小车方面对其运行稳定性有极其重要的意义。所以在本系统所涉及的智能送药小车中的寻迹部分引入PID算法,增加小车运行的稳定性。PID算法主要是将灰度传感器反馈的数据值通过比例,积分,以及微分三部分运算调节实际输出值与预设值的误差。本系统的PID算法总体流程如图5所示。比例运算是用于调节实际输出值与预设值的偏差,通过设置比例系数Kp的值调节系统响应速度,进而消减小偏差。积分运算通过对偏差在偏差时间内不断进行积分运算将偏差不断累计并加到原有系统中进而减小静态误差,微分运算在系统产生变化时尽早引入一个修正信号,增加系统的运行速度。在本系统中调节占空比只采用比例运算和微分运算两部分来对误差进行调节。
图5 PID算法流程图
■4.2 多模板匹配算法
本系统在使用过程中需要进行病房号码识别,即数字识别,所以本系统引入多模板匹配算法。传统的数字识别方法采用模板匹配算法,将采集模板与拍摄到的图像进行匹配,但由于环境等因素的影响导致,其精度不高,并不能达到本系统所需要的准确度要求,会造成识别病房号码错误进而送错药大的问题,多模板匹配算法在模板库构建的过程中将数字模板从偏左偏右偏上偏下以及正常位置五个方面分别构建,增加模板库的多样性,与传统模板匹配算法相比抗干扰能力更强,稳定性更高,识别错误率更低。多模板匹配算法是目前应用比较广泛的数字图像识别方法,其原理是将检测图像由左到右,由上到下依次遍历,并依次计算其像素,将其与采集的数字模型的像素进行匹配,确定匹配程度最大的位置并返回其位置坐标数据。
5 系统测试
程序测试方案:本系统对病房号码识别进行测试,最后进行综合测试,以提高系统的稳定性和精确性。
■5.1 病房号码识别测试
摄像头模块可以单独进行测试,在未安装到系统前,通过联机进行测试,增加测试结果的准确性。为减小环境对测试的影响,在模拟医院路径上进行数字识别的测试。本系统的模板库录入1~8的病房号码。测试结果如表1所示。
表1 病号号码识别测试结果
本次测试结果表明其识别的准确性较高,较为稳定。
■5.2 综合测试
将系统运行流程作为整体进行测试,首先识别病房号码,然后放置药品,在路径上是否能寻到指定的病房号码,并进入相应的病房,在卸载药品后是否能自动返回药房。其测试结果如表2所示。
表2 综合测试结果
本系统通过综合测试表明其稳定性较高,错误率较低,适合在实际中应用。
6 结论
本文根据医院等医疗机构的实际需求展开研究,对系统的总体设计方案,硬件以及软件结构做了详细的描述,对系统主要的两大模块分别进行测试,并进行总体系统的测试,得到了较为理想的测试结果。本系统具有智能化,操作简单,方便携带,价格低廉,降低人力成本,减少人员接触等优点,适用于医院等大型的医疗机构,替代医护人员送药工作,减轻医护工作者在送药方面的人员分配,减轻工作负担,提高工作效率,减少医护人员与患者的接触,降低医护人员感染风险。对医疗机构工作的展开具有深刻的意义。