
- 收藏
- 加入书签
基于单片机的智能送药小车
摘要:针对医护人员为新冠肺炎患者送药过程中会与患者进行近距离接触的情况,本文设计了一款智能送药小车完成送药工作,减少医护人员交叉感染风险。本设计以STC89C52为主控,通过主控对不同模块进行控制和数据传输以得到所需的数据,主要代码来调用和控制本设计选取STC89C52单片机为主控,,传感器及其它外设包括,由OpenMV颜色识别寻迹模块模块、K210数字识别模块与视频显示、FSR402重力模块、L298N驱动模块等模块组成。设计融合PID的循迹算法完成小车路线规划;构建YOLOv2的图像识别算法,对目标信息进行识别。实验结果表明小车能够自主寻迹到达目的地并完成送药工作。
关键词:STC89C52;PID算法;yolov2算法
0 引言
截止到2022年底,新冠肺炎席卷全球已有三年。根据世界卫生组织报告,截至2022年11月,全球累计确诊新冠肺炎高达6.32亿例以及累计死亡病例有650万例[1]。而截至2022年11月中国累计确诊130万例,但是累计死亡有5231例[2]。这与全球新冠肺炎数据相比是很低的。不仅因为在新冠肺炎初期接受住了新型问题的考验,而且在强大的执行力和执行效率下,基本控制住了疫情的蔓延。而且全国各界都在积极配合国家展开应对新冠肺炎的工作。
中国能有如此安全的环境,离不开各个岗位中医疗卫生工作人员的艰苦奋斗,但是在医疗卫生工作人员为新冠肺炎患者进行治疗或者换药送药的过程中会与新冠肺炎患者进行近距离甚至零距离的接触,本系统由此深得启发,本小车可以实现从药房到病房的智能送药,无需人员帮助,医疗卫生工作人员只需要将药放在小车上,小车自动寻迹并自动识别病人所在的病房,直接送达病人所在的病房,病人自己即可取药,极大程度上减少到了医疗卫生工作人员与新冠肺炎患者的接触,同时也降低了医疗卫生工作人员感染的风险。本设计以STC89C52为主控,通过主控对不同模块进行控制和数据传输以得到所需的数据。写出主要依靠STC89C52来调用和控制OpenMV颜色识别与寻迹、K210数字识别与视频显示、重力模块等。
1 智能送药小车的整体框架
为了更好地实现基于STC89C52控制各个传感器模块的知识表示,本系统提出了一种智能送药小车的本体模型框架,智能送药小车工作模块框架如图1所示。
电源模块负责提供足够的电压,驱动模块L298N控制小车的电机进行正反旋转。颜色识别循迹模块采用OpenMV进行小车的前进、后退、转弯、停车等路线的识别进行并循迹。数字识别模块负责读取病房的数字号码用来确定将药物送到该病房。重力模块FSR402负责判断药物是否放入与取出。系统中通过主控STC89C52控制L298N,OpenMV、K210和重力感应模块需要将信息传回到STC89C52中。
2 系统硬件设计
根据本系统的设计方案,所设计的硬件电路系统分为电源模块、驱动模块、颜色识别及循迹模块、数字识别及视频显示模、重力模块,主控芯片采用STC89C52。
2.1 电源模块
本系统电源模块使用Buck电路以及稳压电路对电源进行降压稳压,达到所需电压的稳定输出。
其流程图如图2所示。
本系统采用经典Buck电路模型,通过单片机输出脉冲控制信号(PWM)波控制开关管让开关管导通,电流开始从左边的电源正极流出,流向负极。电流流经续流二极管的负极不能通过,继续前进流经电感,电感将电能转换为磁能储存,电流继续前进流经电容,电容充电,电流继续流过负载,回到电源负极,整个电路通畅,输出端负载正常工作。原理图如图3所示。
利用稳压二极管和限流电阻组成简单的直流稳压电源,稳压管对电流进行调节,通过限流电阻上电压或电流的变化进行补偿,达到稳压。得出需要的3.3V和5V电压,再将经过降压和稳压电路的输出3.3V和5V电压传到各模块中。
2.2 驱动模块
驱动模块可以小车提供动力,使小车实现最基本的移动,本系统采用L298N模块,由于L298N使用简单,体积较小,稳定性好,性能更优并且具由最大输出双电压MOSFET_H桥构成[3-4]。双通道集成电路的输出,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载。使用L298N驱动电机,可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机[5]。本系统采用L298N驱动两个直流电机使小车具备初始动力。L298N电机驱动直流电机原理图如图4所示。
本系统中将OUT1、OUT2和OUT3、OUT4之间分别接两个直流电机Motor1、Motor2,IN1、IN2、IN3、IN4引脚从单片机接入控制电平,控制电机的正反转,ENA、ENB接控制使能端,控制电机调速,由此得出L298N控制逻辑关系如表1所示。
当ENA为高电平时IN1为高电平IN2为低电平的时候M1可以进行正转,反之M1进行反转,IN1和IN2同时为低电平的时候,M1停止旋转。当ENB为高电平的时候,IN3为高电平IN4为低电平的时候M1可以进行正转,反之M1进行反转。IN3和IN4同时为低电平的时候,M1停止旋转。
2.3 颜色识别循迹模块
OpenMV是一个可编程的摄像头,内置了一些图像处理的算法,使用起来也更加的方便,仅需要写一些Python代码,即可完成相关机器视觉相关的任务[6]。
在此,通过OpenMV实现了颜色识别。首先研究分析OpenMV的颜色块识别与测距系统的实现[6-7],然后对摄像头识别到的物体颜色进行提取与分析。为了排除背景颜色与目标颜色相近程度、光照强度、颜色块与镜头的距离等改变而引起的误差和错误分析,不仅研究了OpenMV视觉模块的基本原理而且对背景颜色与目标颜色的相近程度和颜色块与镜头距离改变时系统的误差做了比较,最后完成了基于OpenMV的颜色块识别。
本系统采用单色识别,颜色识别的关键在于阈值的选取,根据阈值即可来确定识别的颜色。此处红色,定义红色的阈值为(44, 75, 8, 77, -44, 21),可以对它的code值进行输出,当摄像头识别到物体的颜色时,可自动对焦并输出它的code值,然后与它们的进制数进行比对,即可确定摄像头识别到的颜色。过滤处理后的红线二值图如图5所示。
由图5可知处理后的红线与背景呈现鲜明的对比,这样有利于OpenMV对红线的识别,并且降低了背景颜色、光照强度、颜色块与镜头的距离等对OpenMV进行红线识别时产生的影响的影响。
2.4 数字识别与视频显示模块
数字识别模块采用K210完成,K210是基于RISC-V精简指令集的一款MCU,在众多特色中,芯片架构包含了一个自研的神经网络硬件加速器 KPU属于最大特色,可以高性能地进行卷积神经网络运算。
王立刚等[8]阐明LED灯类字体数字与印刷体数字相似,本系统正是使用印刷字体的数字作为病房号。模型训练基于卷积神经网络YOLOV2[9-12],训练过程中,使用手机进行拍照取样,为了使训练数据更加稳定将各种数字分别拍照取样1000张并上传到电脑,进入MaixHub官网进行模型训练,将各组照片上传进行训练获得如图6所示的模型训练图,由图可知验证结果损失基本等于0,验证成功趋近于1。
训练完成后将训练好的程序烧录到K210中使其可以进行数字的识别。并且对串口通信UART进行编译,使其可以将识别到的信息传输到主控中。
视频显示则是在K210屏幕上显示一些必要的数据,本系统中选择显示病房号、姓名、药品名、药品数量等。但是在K210上显示中文,需要先将中文字库加载进去,将字库文件存到K210的TF卡中。后续进行编写代码就可以完成信息的显示。
2.5 重力感应模块
重力感应模块采用FSR402压力传感器,是一款具有重量轻,体积小,感测精度高,体型超薄优点的压力传感器。FSR402压力传感器结构示意图如图7所示。
王宏程等[13]论述了FSR402传感器的输出电压和施加压力之间存在指数关系,如公式(1)所示。
公式中: f表示压力值,单位为N; v表示电压值,单位为V; a、b、c、d 表示待确定参数。
本系统采用的FSR402压力传感器是将在FSR传感器薄膜区域中施加的压力转换成电阻值的变化,从而获得压力信息。杜英魁等[14]阐明了可以用分压电阻的电压波动来描述传感器所受外力的变化。其允许用在压力100g-10kg的场合。其压力与电阻关系如图8所示。压力越大,电阻越低。
小车检测到药物放置后发送数据给主控并进行语音播报,主控控制小车循迹前进,到达病房后根据数字识别传来的数据,经过判断是否到达病房门口来控制红色和绿色指示灯亮灭并进行语音播报提醒,卸载后通过安装在装药品位置的压力传感器来检测药品是否被卸下,卸下后压力传感器反馈信号给主控,主控控制红色指示灯熄灭,然后控制小车返回。返回到药房位置循迹模块反馈数据后主控控制绿色指示灯亮并进行并进行语音播报,下一次出发后主控直接使绿色指示灯熄灭。流程程序框图如图9所示。
2.6 PID算法
PID算法中:P是比例(proportional)、I是积分(integral)、D是微分(derivative)。而PID在离散域中主要分为两大类:位置式PID和增量式PID。位置式PID能够记录一开始到现在的偏差值,但是因为要记录从一开始到现在的偏差值,计算量很大,但是能够更好的将系统给稳定下来,达到的稳定值更接近目标值。所以本系统采用位置式PID算法。控制原理图如图10所示。
结合王子凡,崔啸鸣[15]的论述,确定选用此PID算法。位置式的PID的表达式如公式(2)所示:
其中KP:比例系数,ek第k次的输入量与目标量的偏差值,KI:积分系数,KI后面的乘数:每次的偏差值的累加,KD:微分系数,ek - ek-1:第k次的偏差值和第k-1次的偏差值的差值。
根据公式(2)将得出的电压经过单片机处理后,得出了具有一定占空比的PWM,将PWM输出到L298N控制小车的电机转动,即可实现小车的速度调节。
2.7 通信模块
本系统的通信模块均采用各个模块中的串口进行通信,赵海君[16]详细介绍了串口通信的优势。结合所需分别需要配置单片机的收发、K210的收发、OpenMV的收发等串口通信。
首先就是对K210的串口进行设置,本系统设置了两个串口。K210的串口引脚是可以自行映射的,本系统把P9映射为串口1的RX,P6映射为串口1的TX,P7映射为串口2的RX,P8映射为串口2的TX。波特率是设置为115200,至于其他设置均采用默认设置,数据位8,校验位0,停止位1。OpenMV的配置与K210类似。最为关键的就是单片机的串口通信配置。最重要的是需要一个通信的结果,最终接收到的数据即可。在本系统中采用到的是UART模块。
本系统中UART采用异步全双工通信,根据石建民[17]所阐述的,一个字符一个字符地传输,每个字符一位一位的传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符间没有固定的间隔要求。字符本身由5-7位数据位组成,最后一位或一位半或两位停止位,停止位后面是不定长的空闲位。停止位和空闲位都规定为高电平,这样就保证了起始位开始处有一个下跳沿。
2.8 语音播报模块
语音播报模块负责通知医务人员或患者药物已经送达,在本系统中使用单片机的蜂鸣器进行语音播报。当重力感应模块感应到药物放入或者小车到达指定的病房的时候蜂鸣器进行播报。
蜂鸣器电路图如图11所示。当P23口输出高电平(5V)时,VCC即电源也是5V,此时三极管没有导通,所以蜂鸣器无反应,当输出低电平时,发射极电压远大于基极,电流从发射极流入集电极,蜂鸣器震动。进行语音播报。
3 系统软件设计
本文在分析STC89C52基础上,采用PID算法PWM、L298N、OpenMV寻迹与颜色识别、K210数字识别、重力模块绘画出如图12所示的流程图。
制作了医院模拟场地进行实验,提供了小车从药房到病房的智能送药,医疗卫生工作人员只需要将药放在小车上,小车自动寻并自动识别病人所在的病房,直接送达病人所在的病房,病人自己即可取药,取药后小车自动回到出发点。病房智能送药小车在极大程度上降低了医疗卫生工作人员在为新冠肺炎患者送药的过程中感染的风险。本系统大大增加了医疗卫生工作人员为新冠肺炎患者送药减少感染的基本理论可以实现的可能性。
4 智能送药小车的实现
开启电源后小车会检测药物是否放入,如果没有放入药物,指示灯没有亮起并且小车会静止在出发点。如图13表示,当放入药物后,OpenMV进行红线的检测从而测出小车需要前进的路线。K210识别新冠肺炎患者的病房号并且在小车前进的过程中识别各个病房的号码在此期间确定所需要送达的病房。小车到达病房后会停止前进,此时红色指示灯亮起,绿色指示灯熄灭,如果药物没有被取走,小车将保持静止并且红色指示灯持续亮起,绿色指示灯持续熄灭。若取走药物后,小车会保持绿色指示灯亮起,红色指示灯熄灭,原路返回直至最初的起点。到达起点后,两个指示灯全部熄灭然后进入静止状态。
5 结束语
本文根据疫席卷全球情状况下,医疗卫生工作人员在为新冠肺炎患者送药过程中所出现的一些实际问题,构建了药房智能送药小车,并通过系统的分析与小车上使用的不同模块间进行联系,同时还基于STC89C52对不同模块情况做出了说明。
本系统的设计以STC89C52为核心。控制其他模块以实现小车自动送药的功能。使用K210进行数字识别以及OpenMV进行红线的测量,依靠K210的屏幕进行信息的实时显示并且对K210和OpenMV模块进行更为细致的软件编程使病房号的识别以及红线的测量等更为精准,使本系统更为稳定。
因为其贴近现实中的应用,并且在理论研讨与实践设计层面对新冠疫情席卷全球的情况下医疗卫生工作人员的送药问题展开了深入的研究,对于新冠疫情期内医疗卫生工作人员给新冠肺炎患者送药提出了一个全新的工作思路与解决办法。对疫情席卷全球的状况下,医疗工作人员在为新冠肺炎患者送药过程有着一定的实用性。
参考文献:
[1]世界卫生组织.COVID-19每周流行病学最新情况 - 2022年11月16日.https://www.who.int/publicatio m/item/weekly-epidemiological-update-on-covid-19---16-november-2022.
[2]中国卫生健康委员会.截至11月24日24时新型冠状病毒肺炎疫情最新情况http://www.gov.cn/xinwen/2022-11/25/content_5728645.htm.
[3]孙绪才.L298N在直流电机PWM调速系统中的应用.潍坊学院学报,2009,9(04):19-21.
[4]殷留留,韩森,万芳,等.基于L298N的直流电机调速系统的设计与应用[A].信息技术,2017,(06):104-106+111.
[5]胡海.基于单片机的自适应避障小车的设计[A].微型电脑应用,2017,33(04):45-47.
[6]付书添,查雪红,许超.基于 OpenMV 视觉系统的智能送药小车.工业控制计算机,2022,35(07):6-9.
[7]陈宇翔.基于超级电容和OpenMV4的无线充电循迹电动小车设计[J],2021.38(11):10-12.
[8]王立刚,张志佳,李晋等.基于卷积神经网络的LED灯类字体数字识别[A].电子测量与仪器学报,2020,34(11):148-154.
[9]高春庚,基于卷积神经网络的手写数字识别研究[A].兰州学院学报(自然科学版)[A],2022,36(05):50-54.
[10]张烈平,李智浩,唐玉良.基于迁移学习的轻量化YOLOv2口罩佩戴检测方法[A],2022(10):112-117.
[11]冉险生;陈卓;张禾.改进YOLOv2算法的道路摩托车头盔检测[A].电子测量技术,2021,44(24):105-115.
[12]童英,杨会成.基于改进神经网络的交通标志识别[A].激光与光电子学进展,2019,56(19);102-110.
[13]王宏程,郎润男,王芳芳等.压力鞋垫的足-地面反力预测模型与分析[A].纺织学报,2019,40(11):175-181.
[14]杜英魁,姚俊豪,刘鑫等.基于电阻式薄膜压力传感器组的人体坐姿感知终端[A].传感器与微系统,2020,39(01):78-81.
[15]王子凡,崔啸鸣.基于PID控制的两轮遥控自平衡小车的设计与实现[A].国外电子测量技术.2022,41(04):153-158.
[16]赵海君.基于单片机的数据串口通信.中国新通信.2018,20(09):35-36.
[17]石建民,常用串口数据异步通信协议的深度探究[A].单片机与嵌入式系统应用,2022,22(07):26-29.
作者简介:刘骏宝(2002年-),男,汉族,山西省大同市浑源县,电子科技大学成都学院本科生,电子科学与技术,四川省成都市郫都区百叶路一号611731