APP下载

基于Arduino的智能消毒小车设计

2023-02-28宋家骥李雨祺刘壮壮吕建全石卫东

现代信息科技 2023年20期

宋家骥 李雨祺 刘壮壮 吕建全 石卫东

摘  要:文章基于Arduino设计一款能够自动避障并具有消毒功能的小车,分别进行了软硬件系统的设计,搭建了智能小车平台。利用超声波传感器、红外传感器对路况进行监测,采用基于栅格法地图的弓字形遍历路径,以静态路径规划和动态路径规划相结合的方式进行综合路径规划,借助驱动程序实现避障,同时结合消毒液喷洒装置实现消毒作业。试验结果表明,该智能消毒小车能够稳定运行,满足设计要求。

关键词:Arduino;消毒小车;智能避障;红外传感器;超声波传感器

中图分类号:TP277  文献标识码:A  文章编号:2096-4706(2023)20-0161-04

Design of Intelligent Disinfection Trolley Based on Arduino

SONG Jiaji, LI Yuqi, LIU Zhuangzhuang, LYU Jianquan, SHI Weidong

(School of Artificial Intelligence, China University of Mining & Technology-Beijing, Beijing  100083, China)

Abstract: This paper is based on Arduino to design a trolley that can automatically avoid obstacles and has disinfection function. The software and hardware systems are designed separately, and an intelligent car platform is built. Utilizing ultrasonic sensors and infrared sensors to monitor road conditions, using bow shape of grid-based map to traverse path, comprehensive path planning is carried out through a combination of static and dynamic path planning. Obstacle avoidance is achieved through driver, and disinfection operations are achieved through the use of disinfectant spraying devices. The experimental results indicate that the intelligent disinfection trolley can operate stably and meet the design requirements.

Keywords: Arduino; disinfection trolley; intelligent obstacle avoidance; infrared sensor; ultrasonic sensor

0  引  言

我国公共场所的消杀工作主要仍以人力为主,疫情期间的人力紧缺,而且这样的方式消毒人员的感染风险大。现在的消毒措施仍可以进行一些优化改进,通过智能消毒小车辅助公共场所的消毒,对于减少消毒人员,节约人工成本与时间成本具有重要意义。我国的消毒小车,种类繁多,全自动的、遥控的,都有一定的应用,目前所用的消毒小车具有便携、喷洒范围广、结构简单等特点,但仍存在维护成本高,半自动等问题,还有很大的优化空间。设计基于Arduino的消毒小车,实现在避障过程中的消毒,对于公共卫生安全事件的消杀作业具有一定意义。

1  设计原理

如图1所示,系统主要由六个模块组成:控制模块、蓝牙通信模块、避障寻路模块、驱动模块、消毒模块与信息采集模块。通过蓝牙模块在Android平台来控制主控板。再由控制模块获取超声波与红外传感器的信息,去实现避障寻路,由驱动模块驱使小车的运动,另外获取到小车的运动状态和液位传感器的信息,来控制消毒模块的工作。

2  硬件部分設计

2.1  控制模块

关于主板硬件的选用,我们的主板是选择Arduino UNO系列的R3型号,虽然R3主板上也可以添加蓝牙模块,但需要进行焊接操作,故外接一个Xbee V5.0的扩展板,在扩展板上接一个蓝牙模块,来实现在手机对小车进行操作。

2.2  信息采集模块

由于布置在车头位置的测距传感器,容易受到智能小车运动的影响,要求精度为1 mm。由于车体侧面发生碰撞的可能性比较小,所以布置在车体两侧的测距传感器精度要求为10 mm即可。所以在小车的前部安置两个红外测距传感器,在小车的左右安置了两个超声波传感器。超声波传感器我们在选择时主要对比了hc-sr04和ks103这两款传感器。前者的测量精度为3 mm,测量范围为2~450 cm,工作电压为5 V,电流为15 mA,温度在-10~50 ℃,而后者精度在1~3 mm,测量范围在1~800 cm,工作电压、电流和温度与前者是一样的,但后者的价格是前者的数十倍,结合我们小车实际使用的使用场景主要为室内,所以选择hc-sr04这款。红外传感器两者的各项指标和价格都相差不多,主要差异是我们选用的这款测量范围在10~80 cm,后者则在20~150 cm,小车对较近处的距离测量重要性大于测量范围。这个液位传感器是放置在消毒液容器中来监测消毒液含量的传感器,在消毒液告罄以后发出警报。

发送超声波监测是否反射回来的声波,超声波模块工作受物体表面反射程度影响,并且在传播过程中信号强度容易衰减,因此该模块适用的检测距离有限,一般在50 cm以内相对正确,而且我们在避障时不需要检测太远的距离,因此超过50 cm以上的都按50 cm计算。具体代码如下:

int getDistance()

{

digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μs

delayMicroseconds(2);

digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μs

delayMicroseconds(10);

digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平

int distance = pulseIn(inputPin, HIGH); // 读出脉冲时间

distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)

Serial.println(distance); //输出距离值

if (distance >=50)

{

//如果距离小于50 厘米返回数据

return 50;

}//如果距离小于50 厘米小灯熄灭

else

return distance;

}

2.3  驱动模块

驱动模块主要由电机和驱动板构成,电机选择简单功率稳定、起动和调速性能好、调速范围广平滑、过载能力较强、受电磁干扰影响小的vms电机,它可以精确地控制小车的速度并提供即使反馈。驱动板则选择对比其他驱动板更高功率更大电流且适合小车的L298N。

驱动模块主要是用于实现小车的向前运动、向左转弯、向右转弯、停止和向后倒车。通过控制Arduino的数字引脚来控制车轮的转动。

设计参数DriveRightl、DriveRight2负责智能小车右轮,参数DriveLeft1、DriveLeft2负责智能小车左轮。具体设计代码封装成为一个个函数,代码如下:

void advance(int a)//前进

{

digitalWrite(DriveRight1,LOW);

digitalWrite(DriveRight2,HIGH);

digitalWrite(DriveLeft1,LOW);

digitalWrite(DriveLeft2,HIGH);

delay(a);

}

void turnR(int b)//右转(单轮)

{

digitalWrite(DriveLeft1,LOW);

digitalWrite(DriveLeft2,HIGH);

digitalWrite(DriveRight1,LOW);

digitalWrite(DriveRight2,LOW);

delay(b);

}

void turnL(int c)//左转(单轮)

{

digitalWrite(DriveRight1,LOW);

digitalWrite(DriveRight2,HIGH);

digitalWrite(DriveLeft1,LOW);

digitalWrite(DriveLeft2,LOW);

delay(c );

}

void stop(int f)//停止

{

digitalWrite(DriveRight1,LOW);

digitalWrite(DriveRight2,LOW);

digitalWrite(DriveLeft1,LOW);

digitalWrite(DriveLeft2,LOW);

delay(f);

}

void back(int g)//后退

{

digitalWrite(DriveRight1,HIGH);

digitalWrite(DriveRight2,LOW);

digitalWrite(DriveLeft1,HIGH);

digitalWrite(DriveLeft2,LOW);

delay(g);

}

2.4  消毒模塊

微孔雾化片是通过中间细微孔,用细海绵棒将水吸上来,从而雾化。为增大消毒面积和效率,选择使用8个微孔雾化片以圆周均匀安置。这里通过继电器去控制这些雾化片的开合。

3  软件部分设计

3.1  避障功能工作原理

超声波传感器工作原理是通过送波器将超声波(振荡频率大于20 kHz以上的声波)向对象物发送,受波器接收这种反射波,从接收反射波的有无、多少或从发送超声波到接收反射波所需的时间与超声波声速的关系,来检测对象物的有无或传感器与对象物之间的距离。

红外线传感器其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号)。

在避障模块中,采用的是来回折返的弓字形避障逻辑。将小车的状态简单分为五种,如图2所示。

小车在运行一次后未能覆盖所有地图,可将小车垂直原方向再次布置,或手动操作以此达到全覆盖。小车控制程序主要由单片机初始化、路径检测判断及电机驱动组成,程序流程图如图3所示。

3.2  路径规划方案

消毒小车在工作中要提前规划路径,系统在进行全覆盖路径消毒情况下可以避开障碍物。本文智能消毒小车使用基于栅格法地图的弓字形遍历路径,其中路径规划采用静态路径规划和动态路径规划结合的方式进行综合路径规划。

3.2.1  栅格法地图概述

栅格法实质上是将智能消毒小车的工作环境用大小相等的方块进行单元分割,将已知障碍物投射在环境地图上设置为障碍区域,其余区域设为非障碍区域,以便小车进行预路径规划,当智能消毒小车进行环境遍历结束后通过未消毒栅格和已覆盖栅格计算消毒覆盖率。

栅格法地图优点在于精确度较高,能较为准确地为智能消毒小车提供已知环境信息,提高算法规划速度。与此同时,栅格大小的选取是影响算法性能的关键。栅格过小,地图中环境信息会更加精确,但由于栅格数量的增加导致存储信息量变多,将会降低算法运行速率。栅格过大,算法运行速度有所提高,但降低了获取环境信息的准确程度,也降低了消毒覆盖率,不利于有效的路径规划。因此采用栅格法建立环境地图时要合理设置栅格大小。

3.2.2  弓字形覆盖路径

对于已知环境。智能消毒小车在开始工作前,需获取全局环境信息选取需消毒范围,形成栅格地图,在消毒范围内采用弓字形全覆盖路径规划算法。对于未知环境,通过固定距离的弓字形遍历实时探索环境,遇到障碍物时为保证消毒覆盖率按固定程序,如图4进行向后贴边绕行。

由于智能消毒小车在遇到障碍物的情况下,可能做不到全覆盖,降低消毒效率。因此在障碍物较多的复杂环境中,可以采用两次不同方向的往返弓字形算法以提高消毒覆盖率。

栅格地图及弓字形路径如图5所示。

3.2.3  综合路径规划

静态路径规划是在环境区域已知情况下,智能消毒小车获取全局环境地图与障碍物范围提前生成栅格地图并进行路径规划,但此方法并不适用于复杂的动态地形,同时无法避开未在地图上显示的障碍物。

动态路径规划是在环境区域未知情况下,智能小车通过红外传感器与超声波传感器进行固定距离的弓字形路线消毒,并生成栅格地图,同时可以手动控制小车的实时路径,可以高效完成消毒任务。但通过传感器检测局部位置信息控制机器人运行在复杂的地形环境中可能使小车无法准确到达终点。

4  具体应用与实现

综合路径规划是指静态路径规划与动态路径规划结合的形式實现小车的消毒路径全覆盖。首先在已知全局环境信息基础上,建立栅格法地图,并通过弓字形遍历算法建立一条最优路径,在小车行进过程中传感器探测到未知障碍物时,启用避障模式重新规划局部路径。综合路径规划结合了静态及动态路径规划的优点,提高了消毒效率。实际应用如图6所示。

通过实验成功实现了小车的智能避障,使小车在预期的轨道上能顺利的躲避障碍物,通过超声波所测距离,进行判断暂停、后退、前进或转向达到了预期目标,小车实物场景示意图如图7所示。

5  结  论

本文提出了一种基于Arduino的经济实用智能消毒小车,完成了小车的硬件及软件开发工作,实现了小车的自动消毒避障功能,具有一定的实用价值。本文中的智能消毒小车,系统设计简单、成本低、抗干扰能力强、精度高,可以出色完成室内的简单消毒工作,具有一定实用价值。但其的巡线路经并不绝对是最优路线,存在一定的时间与能源浪费问题,以及由于车身本体体量小,续航也是一个待解决的问题,这些都有待进一步发展和提高。

参考文献:

[1] 潘元骁.基于Arduino的智能小车自动避障系统设计与研究 [D].西安:长安大学,2015.

[2] 刘芳.基于Android的智能小车控制及路径规划 [D].桂林:广西师范大学,2017.

[3] 纪欣然.基于Arduino开发环境的智能寻光小车设计 [J].现代电子技术,2012,35(15):161-163.

[4] 赵津,朱三超.基于Arduino单片机的智能避障小车设计 [J].自动化与仪表,2013,28(5):1-4.

[5] 张建龙.清洁机器人避障控制及路径规划 [D].武汉:武汉科技大学,2015.

作者简介:宋家骥(2002—),男,汉族,安徽安庆人,本科在读,研究方向:信息工程。

收稿日期:2023-03-12