SCI论文(www.lunwensci.com)
摘要:针对医疗行业正在向着智能化、自动化方向发展的需求,设计了一个基于STM32F103RCT6的智能送药小车系统。系统采用3节18650锂电池供电;通过OpenMV图像识别模块,识别病房号;通过TSL1401线阵线性CCD模块实现小车的循迹;通过HX711称重传感器模块读取药品的实时重量;通过2.4G Zigbee CC2530串口无线收发模块实现两小车的通信;通过0.96寸OLED显示识别的病房号及往返时间等。实践表明,系统性能良好,可靠性高,有一定的应用价值。
关键词:智能送药小车;OpenMV;线阵CCD模块;无线收发模块
【Abstract】:Aiming at the demand of the medical industry that is developing towards intelligence and automation,an intelligent medical delivery trolley system based on STM32F103RCT6 is designed.The system is powered by three 18650 lithium batteries;Through the OpenMV image recognition module,the ward number is identified;The trail of the trolley is realized through the TSL1401 linear linear CCD module;Read the real-time weight of pharmaceutical products through the HX711 load cell module;Through the 2.4G Zigbee CC2530 serial port wireless transceiver module to realize the communication of the two cars;Through 0.96-inch OLED display the identified ward number and round-trip time,etc.The practice shows that the system has good performance,high reliability and certain application value.
【Key words】:intelligent medicine delivery trolley;OpenMV;linear array CCD module;wireless transceiver module
0引言
随着社会的发展及智能化水平的提高,智能化设备正在渗透到各行各业。就目前而言,许多医院已采用了智能抓药系统,即不需要人工抓药便可以将药物传送到药房窗口,节省了大量的人力。然而,病房用药依然需要护士或者陪护去药房去取,但是许多患者没有陪护且医院护士都比较忙,这样会造成送药不及时的现象。因此,设计一款智能送药小车就显得非常有必要,它可以根据病房需要主动送药并及时返回,大大的节省了人力和财力。
1设计要求
制作一块场地来模拟真实环境,黑色线表示院区走廊两侧的墙体。红实线表示小车行进的路径,并在拐角处放置标识病房号的黑色数字。药房号分别为1、2、3、4、5、6、7、8,其中药房3~8可随机设定。小车首先在药房端扫描药品要送往的病房号,待药品放置完毕以后,开始沿着跑道自动运送,运送过程中识别要送往病房号的位置信息并前往,待药品取下后返回。
2系统整体方案设计
根据需求,设计了一个基于STM32F103RCT6的智能送药小车模拟系统[1-3]。系统主要由STM32控制模块、电源模块、电机驱动模块、OpenMV图像采集模块[4,5]、线阵CCD循迹模块[6-8]、称重模块、无线通信模块、OLED显示模块组成,其系统框图如图1所示。小车在药房端扫描需要送往的病房号,等待药物放置在小车上,当通过HX711称重模块检测到药物重量时,小车开始出发;通过TSL1401CL线阵CCD模块进行循迹,循迹过程中通过左右两边各放置的OpenMV模块识别病房的编号,当小车识别到正确的病房号时,到达药房门口停下,等待病房取下药物后并返回。两小车之间通过2.4G无线串口收发模块进行通信[9,10],避免在行进间发生碰撞;OLED屏幕用于显示识别到的病房号及往返一次所使用的时间等。
3系统硬件电路设计
3.1单片机最小系统电路
主控芯片采用STM32F103RCT6单片机。该单片机是主流增强型ARM Cortex-M3内核,具有64KB的Flash、CPU时钟频率可达72MHz,性能优越,成本低,运行速度快,可以满足数据的存储即处理。单片机最小系统包括主控芯片、电源电路、复位电路、时钟电路等,电路图如图2所示。
3.2电源模块
系统采用3节18650的锂电池供电,其电压为11.1V。但是由于OpenMV模块、TLS1401循迹模块、电机驱动模块及HX711传感器称重模块等用到的电压均为5V,STM32主控芯片的供电电压为3.3V。所以需要进行电源转换,一组将输入电压转换为5V输出,一组转换为3.3V输出。其中5V电压输出采用LM2596S-5.0芯片,其最大可输出3A的电流,可满足系统需求。3.3V电压输出采用REG1117-3.3芯片转换。其电路图如图3、图4所示。
3.3 HX711称重模块
HX711称重模块主要是为了检测小车上药品的重量,是一款高精度的称重传感器,其片内集成稳压电路、时钟振荡器、24位A/D等,其响应速度快、抗干扰能力强、精度高。其电路如图5所示,选择通道A进行信号采集,放大倍数为128倍,可通过程序控制。3.4 OpenMV数字识别模块数字识别采用OpenMV模块实现。OpenMV是一款开源的、低成本的图像处理模块。模块以STM32F767CPU为核心,集成了OV7725摄像头芯片。在小巧的硬件模块上,可以高效的实现核心机器视觉算法,对于病房号的数字识别,OpenMV可以快速准确的识别病房号的编号,其识别率在98%以上,故本设计采用OpenMV模块进行数字识别。
3.5线阵CCD模块
小车的循迹采用TSL1401线阵CCD模块,线阵CCD模块相对于OpenMV进行巡线,其处理速度更快一点,且可以通过单片机的ADC依次采集每个感光单元的电压值(共128组)并存在数组中,精度非常高,所以循迹模块采用TSL1401线阵CCD模块进行循迹。3.6无线收发模块无线收发模块主要用于两车之间的通信,避免两车发生碰撞,采用2.4G串口透传模块ZIGBEE CC2530。该模块采用全双工通信,抗干扰能力强,通信距离远,在小车行进中,也可以实现稳定的收发。
3.7电机驱动电路
通过STM32输出PWM控制,即可实现小车的转向与速度控制,但是STM32的IO口带负载能力较弱,而直流电机是大电流感性负载,不能直接驱动,所以采用TB6612FNG电机驱动芯片。TB6612FNG是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动2个电机,无需外加散热片,外围电路简单,只需外接电源滤波电容就可以直接驱动电机。其电路图如图6所示。
4软件设计方案
软件主要分为4个部分:(1)图像识别部分,即如何在行进中快速且准确的识别到病房号;(2)循迹部分,即如何保证小车行进中不脱离轨道从而到达正确的位置;(3)如何高效的控制小车的转速,从而使得小车不偏离跑道并实现小车的转向;(4)多个小车同时工作时,如何做到高效的避让。其整体流程图如图7所示。首先系统进行初始化,小车检测手持病房号,当检测到病房号后,检测是否放入药物,当药物放置完毕后,小车去寻找检测到的病房号,检测到病房路径信息以后,去往病房,待药物放置完毕后返回。2个小车通过相互通信实现避让。
4.1 OpenMV数字识别算法
4.1.1图像预处理
小车在行进的过程中需要识别拐角处的数字,从而判断去往正确病房的路径。系统将小车左右两侧各放一个OpenMV摄像头来抓取数字,从而提高识别精度。首先对采集的图像进行预处理,即将图片二值化,为了更好的完成数字二值化的转换,要找到合适的LAB最大值和最小值。其流程为:先采集一张分辨率为120×160,类型为灰度图的图片,通过调整阈值的方式,找到合适的LAB最大值和最小值,通过调试将LAB的阈值调整为(0,100,-128,23,-42,127),系统效果良好,可以将黑色的数字部分转换成黑点,其他白色转换成白点,图8为摄像头采集并二值化处理前后的效果对比图。
4.1.2图像模板匹配算法
二值化图像之后,即可对图像的数字部分进行识别,识别方式可以通过神经网络训练识别当前数字,也可以通过模板匹配进行识别,由于采用神经网络训练识别需要OpenMV系统具有很高的性能,且训练时间长,而OpenMV系统内部自带基于模板匹配算法的NCC算法[11],可以实现对各种数字的识别,使用起来方便,所以系统采用基于NCC的模板匹配算法。其原理为:搜索图S尺寸大小为MxM,模板T的尺寸NxN,其中M>N,模板T在S上滑动搜索,滑动的上、下步长都为N,即将S分成了若干个T尺寸的子图。其计算公式如式(1)所示:
其中,E(S i,j)、E(T)分别表示(i,j)处子图、模板的平均灰度值。
但是由于小车在循迹过程中角度会出现微小的偏差,对采集到的病房图片的角度也会相应产生偏差,而基于NCC的图像匹配算法不适合图像旋转缩放的模式识别,为了解决图像角度偏差的问题,系统采用了OpenMV内置的一个3D旋转图片的函数img.rotation_corr(),该函数可以根据x、y、z轴旋转图片的角度,这就可以解决模板匹配中的角度偏差的问题,将图片绕着z轴顺时针及逆时针旋转1~10°图片之后再模板进行匹配。每次旋转1°改变完图像之后就使用模板匹配寻找数字,这样便可以准确的识别数字。
4.2 TSL1401CL路径循迹算法
小车路径循迹采用TSL1401CL线阵传感器实现,其优点是精度高,相对于OpenMV处理速度更快,所以系统采用TSL1401CL模块循迹。TSL1401CL的核心是128个光电二极管组成的感光阵列,阵列后面有一排积分电容,光电二极管在光能量冲击下产生光电流,构成有源积分电路,那么积分电容就是用来存储光能转化后的电荷。积分电容存储的电荷越多,像素灰度低,光强接近饱和,像素点灰度趋近于全白,则呈白线。由于系统光强相对稳定,所以采用固定曝光,这样采集的图像抖动小且更加清晰,更有利于黑线的提取与二值化。
4.2.1线阵CCD数据预处理
线性CCD采用8位AD转换输出,所以采集到的轨迹图像的灰度值在0~255之间变换。其中0代表黑色,255代表白色;为了更好的识别跑道边界,首先将采集到的图像二值化。系统采用固定阈值的方法,当采集到的数据大于128,将其灰度值设为255,即为白色;当采集到的灰度值小于128,将其灰度值设为0,即为黑色。这样即可将采集到的图像二值化。
4.2.2小车位置判断
由于场地上除了白色和红色跑道之外,还有黑色的数字,这些数字也会被检测到。所以数据二值化之后,黑线和红线是0,白线是1。为了将数字产生的干扰去除,要把所有的0的数据宽度提取出来。把每个0的宽度起始索引和结束索引和数据宽度记录下来。经过实际测量红线的0像素点为15个左右。由于数字的识别与轨迹跟踪采用的是不同模块,所以数字的像素点不会全部采集,即数字的像素点不会出现连续大于13个0,且数字与跑道有一定的间隔,所以基于此可以把数字黑线干扰去除一部分。小车跟踪红色跑道轨迹采用直接边缘检测算法。首先从0-128线阵CCD阵列最左边开始计算,如果检测到连续13个0,那么这13个0中第1个的像素点即为红色跑道左边界。这里采用13为了避免跑道有误差情况存在。同样的道理从128-0线阵CCD阵列的最右边开始递减,如果连续检测到13个0,那么这13个0中第1个0的像素点即为右边界。确定好跑道以后把数字干扰像素点变为1。
确定好跑道边界以后,即可确定小车的偏差。小车的中心点即为检测到左边界和右边界的平均值。通过小车中心点的检测与理论中心位置64作比较,如果偏差小于0,说明小车偏左,如果大于0,说明小车偏右。可以通过偏离值来动态的控制小车轨迹。
4.3 PID控制算法
系统通过控制PWM的大小来控制小车的前进速度,通过差速控制小车的内轮和外轮来实现小车的转向,PID算法[12-16]作为工业控制领域最广泛的应用,在闭环系统中,可以自动对控制小车进行准确的校正。其原理为通过闭环控制系统控制小车的速度,再通过编码器A、B相测量小车行驶过程中的脉冲数,在固定时间内检测到的脉冲数的值经过计算得到电机的实际速度,然后将计算的速度与上一次测量的速度进行比较,其计算公式如式(2)所示:
其中u(t)为控制器输出控制量,Kp为比例增益,Ki为积分增益,Kd为微分增益,e(t)为输入偏差。
在循迹控制中,只需要PD控制器即可,公式中输入偏差e(t)为循迹传感器输出值,经过PD控制器后输出u(t)直接控制小车转向。当然也需要控制循迹车的前进速度,控制循迹车前进速度需要通过PI控制器来实现。结合PD控制器与PI控制器,共同实现小车的循迹与转向。
5系统测试
根据系统要求,搭建好电路,其实物图如图9所示。建立测试过程:
(1)手持编号X让小车识别,然后放入200g药物重量,看小车能否到达X病房号。
(2)直接放200g,不给小车提供病房号码,测试小车会不会运行。
(3)当小车1正在运输过程中,让小车2出发,测试两小车是否有自动避开功能。
(4)让小车1和小车2同时运输去中端病房,测试小车2会不会自动避开,等待小车1送完,小车2在继续运行。
多次使用随机参数重复测试方案后,得出测试结果如表1所示。
由测试结果可以看出,小车能在规定的时间往返,手持数字识别正确,跑道识别号识别正确,巡线无误差,两车之间可以有效的协调而不发生碰撞。
6结语
设计的智能送药小车系统,通过OpenMV识别病房号,提高了数字识别的准确率;通过TSL1401CL实现循迹,提高了数字与跑道之间的抗干扰能力;利用PID算法,精准控制小车的巡线与转向,使小车可以稳定的在跑道上行走。小车可以实现自主规划路线,大大减少了人力成本。
参考文献
[1]王浩楠,黄宇新,唐金荣,等.基于STM32单片机的智能送药小车系统设计[J].电子制作,2022(15):74-76.
[2]廖冠中,叶膳维,庄朝淳.基于STM32的智能送药小车[J].电脑编程技巧与维护,2022(5):131-133.
[3]卢雪红,邵亚军.基于STM32智能小车自主循迹避障系统设计与功能实现[J].世界有色金属,2021(22):165-168.
[4]付书添,查雪红,许超.基于OpenMV视觉系统的智能送药小车[J].工业控制计算机,2022,35(07):6-9.
[5]杨晓峰,柳笑辰,王佳奇.基于OPENMV的智能送药小车设计[J].电大理工,2022(1):1-7.
[6]岳俊峰,李秀梅.基于机器视觉的智能小车自动循迹及避障系统[J].杭州师范大学学报(自然科学版),2020(2):200-207.
[7]杨明达,杨舟,黄永霖.基于线性CCD的寻线智能车设计[J].单片机与嵌入式系统应用,2014(4):73-75.
[8]叶立威.针对TSL1401线阵传感器的路径检测算法设计[J].福建电脑,2020,36(6):84-86.
[9]任玲玲,李浪,闫庚龙,等.基于Arduino的蓝牙智能避障小车设计[J].电子制作,2022,10(19):27-30+97.
[10]林建宇.基于CAN总线的智能小车通信系统设计[J].上海电力大学学报,2021,37(6):587-590.
[11]王恩国,吴树范.NCC边缘信息快速匹配算法[J].电子技术,2017(12):19-21.
[12]王辉,廖峰林.智能小车循迹与避障的仿真与实现[J].成都大学学报(自然科学版),2022,41(2):164-169.
[13]曲霄红,张名师,胡立华.基于树莓派的智能小车路径规划方法及系统研究[J].山西大同大学学报(自然科学版),2020,36(3):48-51.
[14]吕彦卿.室内智能小车的轨迹跟踪控制研究[D].大连:大连理工大学,2020.
[15]薛婷,贝绍轶,李波.基于蚁群算法的智能小车路径规划[J].计算机仿真,2021,38(12):362-365.
[16]王冠博,赵一帆,郭嘉,等.循迹避障智能小车的实验设计[J].实验科学与技术,2021,19(5):38-42+47.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
可解释性是一个非常重要的标准。机器学习模型... 详细>>
如何设计有效的环境治理政策, 是学术界和政策... 详细>>