工业互联网下AGV智能小车的设计与实现
2023-09-15汪智禹陶仕豪何天屹魏汉森
汪智禹,陶仕豪,何天屹,魏汉森
(南京工程学院 信息与通信工程学院,江苏 南京 211100)
0 引言
随着工业4.0的提出,传统的工业制造已经不能满足社会的需求,取而代之的是智能化工业流水线。在传统的生产过程中,物料的运送主要还是靠人力搬运,不仅耗费时间、浪费人力,还会造成较高的货物损坏率,无法有效地完成货物搬运工作[1]。而AGV小车是一种能够完成自主驾驶、无人操纵的自动化运输设备,因此AGV小车能够很好地解决这部分问题。但是由于近些年工业自动化领域的飞速发展,工厂对小车的功能需求越来越大,在部分境况之下,任务的完成通常需要数台小车一起发挥功用,故而有效地达成对多台AGV小车协作的良好控制就显得十分关键[2]。目前,简单的小车还只能在部分单一的领域里起作用,不能够完成较为复杂的作业,而无线通信可以使小车相互之间协同工作。ZigBee无线通信技术具有成本低、功耗低、多节点和网络性能稳定等特征[3],可以嵌入各种设备[4],很容易用一个低成本的设置来实现,主要适合于自动控制和远程控制领域。ZigBee无线通信技术是为短范围无线数据传输而设计的,并具有较高的安全可靠性,可实现十分完备的检测功能[5-6]。因此,本文使用ZigBee实现AGV小车间的无线通信。
1 系统整体设计
本文设计了一款能够实现循迹和避障功能、支持协同作业的AGV智能小车。AGV智能小车的具体功能为:(1)通过循迹模块检测路面黑线,并跟随预设的黑线前进,实现自动导航功能;(2)通过避障模块检测障碍物,并绕开障碍物行驶,实现自动避障功能;(3)手机遥控,通过蓝牙模块接收手机端发送过来的数据,进而控制小车进入循迹模式或避障模式。根据目标功能,对小车的各部分模块进行设计,硬件部分主要为ESP32蓝牙模块、ZigBee模块、避障模块、循迹模块、驱动模块、电源模块等。主控模块选用STM32单片机,负责控制循迹模块、避障模块、驱动模块,同时负责控制蓝牙模块完成与手机小程序的连接,实现多台AGV的集中控制,并控制ZigBee模块完成AGV之间信息的交互。支持协同作业的AGV系统如图1所示。
图1 多AGV协同作业系统
2 AGV硬件设计与实现
根据总体设计,单台AGV智能小车的系统结构和实物如图2所示。小车主要实现红外循迹、超声波避障、蓝牙遥控、ZigBee无线通信4个功能。红外循迹、超声波避障用于检测周围的环境,主控芯片根据环境信息形成驱动指令实现对电机的驱动;蓝牙遥控功能主要依赖ESP32实现,用于完成对手机指令的接收和处理,实现手机端对多AGV小车的集中控制;小车间通信主要依靠ZigBee无线通信技术实现。
图2 单台AGV小车系统结构
编写程序时需要对硬件模块定义引脚、输入输出模式、设置波特率等。最大速度设置为100 m/s,红外循迹传感器与主芯片14和15号引脚相连,并设置为输入模式;3块超声波避障传感器分别与主芯片28、33号引脚,29、26号引脚,32、27号引脚相连,并设置为输入模式;由于ESP32芯片自带蓝牙功能,故蓝牙遥控模块通过ESP32单片机实现;ZigBee通信模块核心DL-30 CC2530芯片连接主控芯片STM32芯片的21号、22号引脚;用于串口通信的波特率设为9 600。
2.1 主控器
项目选择STM32系列的STM32F103C8T6型号,如图3所示。此系列的单片机处理能力强大、开发生态丰富且易于调试和测试,能够满足智能小车的开发需求。
图3 控制芯片电路
2.2 电机驱动模块
电机驱动模块主要用于车速和方向的控制,本项目选择L298N电机驱动模块。L298N是专用的驱动集成电路,属于H桥电机驱动芯片,输出电流为2~4 A,最高工作电压为50 V,输入端可以与单片机直接相连,便于控制。与L293D相比,L298N输出电流增大、功率增强,更适用于智能小车的设计。本例中AGV智能小车采用三角形布局,车体前部的左右两侧各安装一个电机,驱动小车轮子,通过改变电机的转动来控制小车的运动状态。小车尾部安装了一个万向轮,万向轮无需电机驱动即可在水平方向进行360°旋转,用于控制小车的平衡,并与车体前部由电机驱动的车轮构成了稳定的三角形结构。
2.3 循迹模块
AGV智能小车采用两路TCR5000红外循迹传感器,分别与STM32F103C8T6的PA4和PA5相连。地面铺设的黑色行车线路会吸收TCR5000传感器发射的红外光线,而普通的路面则会将其反射回去,TCR5000传感器将接收地面反射红外线的强度并转换为高低电平输入STM32F103C8T6的PA4和PA5口(14、15号引脚)。STM32F103C8T6通过判断PA4和PA5端口电平来控制驱动模块调整小车两侧电机的运动状态,从而实现循迹的功能。
2.4 避障模块
为了尽量避免检测盲区的干扰,在小车车头的中间和左右两边各安装了一个HC-SR04超声波测距模块,分别与主控芯片PB15、PA12号引脚,PA8、PB13号引脚,PA11、PB14引脚相连。利用超声波测距模块发射并接收遇到障碍物而返回的超声波的时间差,测量出模块与障碍物之间的距离,当距离小于设定的值后,判定小车前有障碍物,将该信息转换为高低电平后,进而改变电机运动状态,实现超声波避障。直到该障碍物被移走,超声波测距模块检测到阈值内无障碍物,软件继续控制对应引脚电平高低,使小车继续前进。HC-SR04接口电路如图4所示。
图4 避障模块接口电路
2.5 蓝牙模块
蓝牙模块实现手机与小车之间的数据交换。AGV智能小车使用ESP32内置的蓝牙模组实现与手机小程序之间的蓝牙通信。ESP32模组是一款超小体积的多功能通用型模组,以具有双核处理器的ESP32作为主控,主频高达600 DMIPS,模块搭配PCB板载天线,通信速度快,操作简便,且使用的是低功耗蓝牙技术,与传统蓝牙技术相比,功耗更低,价格低廉。
EST32芯片的RXD0和TXD0引脚经CP2102芯片与STM32F103C8T6的PA9和PA10相连,实现EST32与STM32F103C8T6间的数据传输,接口连接如图5所示。
图5 ESP32蓝牙模块电路
手机可以连接多台AGV智能小车实现总体控制。用户通过手机小程序发送的操作指令由ESP32芯片接收并通过TXD0引脚传递到主控芯片,最终实现对AGV智能小车的遥控;而主控模块通过RXD0引脚将当前状态传递给ESP32芯片,并通过手机显示当前小车的状态。
2.6 ZigBee通信模块
ZigBee通信模块主要负责车与车之间的通信。ZigBee无线通信技术以IEEE802.15.4协议栈为标准,使用频段为2.4 GHz,数据传输速率约250 Kbps,有效组网距离为100~2 000 m且支持点对点、星形、链状以及网状等多种组网形式,具有成本低、功耗低、多节点和网络性能稳定等特征,是经济高效的无线网络解决方案。
ZigBee无线通信网络的组成部分包括协调器、路由器、终端节点。协调器负责建立网络,路由器负责传输数据包,终端节点负责数据的收发。本项目采用星形拓扑结构,组成部分仅有终端节点和协调器,其优点是建立速度快,逻辑简单清晰,数据传输双向。在小车投入使用之前需要事先对ZigBee模块设置波特率、工作方式等参数,并由协调器建立一个网络。
ZigBee通信模块采用DL-30 CC2530。通过将该模块的TX和RX引脚与STM32F103C8T6芯片PB10和PB11的连接实现两者间的数据传递。组网时,将其中1台AGV智能小车的CC2530芯片设置为协调器,负责建立和维护网络,定期发送状态请求数据包;其他AGV智能小车的CC2530芯片充当终端节点加入网络,获得节点编号,同时接收协调器发送的状态请求数据包,并发送自己的状态。接收到各终端节点发送的状态后,协调器根据内部设定好的协同作业流程和作业路径规划算法,对这些数据包进行演算,得出避碰指令并发送含有目标编号的协同控制数据包,对应编号的终端节点收到控制数据包后会调整AVG智能小车相应引脚的电平,实现绕行避碰。
3 软件设计
本程序是在Android studio开发环境下开发的,主要分基础功能部分、蓝牙通信部分和ZigBee网络通信部分。基础功能部分主要包括驱动功能、超声波避障功能、红外循迹功能。蓝牙通信部分实现手机小程序和小车的通信。ZigBee网络通信部分实现车与车之间的通信。
小车打开电源后将自动触发循迹模块功能和避障模块功能。手机端蓝牙与ESP32连接之后,通过小程序进行相应的设置,可以对小车发送前进、后退、左转、右转、暂停等指令,实现对工作区内AGV智能小车的总体控制。软件部分核心函数为gatts_profile_a_event_handler,其主要功能在于使蓝牙模块和ZigBee无线模块正常运作。AGV的蓝牙、循迹和避障程序流程如图6所示。
图6 蓝牙、循迹和避障程序流程
当手机与AGV智能小车之间完成蓝牙连接后,小车LED灯亮起,表明可以正常接收指令。此时,手机端按下启动,小车开始自行前进,循迹模块进入工作状态并不断检测前方是否存在导航黑线。当前方不存在黑线时,小车调整方向试图回到黑线上,如果正前方无黑线,小车依次向左方和右方检测,若存在黑线则向对应方向偏转并继续前进,否则暂停等待。在避障模式下,小车通过3个HC-HR04超声波测距模块检测障碍物,当正前方距离大于阈值且左右方距离大于阈值的一半时,AGV智能小车判断为周围无障碍继续前进,否则,判断为周围遇到障碍物。此时,小车停止前进,直到障碍物被移走且距离大于阈值时才自动前进,避障过程中,将自身信息通过蓝牙实时通信发送到手机端。
蓝牙通信过程中,小车不断扫描串行缓冲区,根据gatts_profile_a_event_handler中的ESP_GATT_CONNECT_EVT部分自动解析数据判断指令内容,然后根据指令动作。收到前进指令,小车左右轮都正转,控制小车前进;收到后退指令时,小车左右轮都反转,控制小车后退;收到左转指令,小车左轮反转,右轮正转,控制小车左转;收到右转指令时,小车左正转,右轮反转,控制小车右转。
ZigBee通信部分,协调器会定期广播发送gatts_profile_a_event_handler函数中的adv_data申请采集数据包,获得各终端节点的状态,得出路径和避碰策略控制包,发给终端节点。终端节点收到控制数据包后调整状态,实现绕行避碰。而身为协调器的AGV智能小车则利用超声波避障模块检测到与终端节点的距离低于阈值时停止活动,直到两者距离大于阈值后,才继续活动。协调器和终端节点间的避碰流程如图7所示,其中协调器为小车1,终端节点为小车2。
图7 协调器和终端节点间的避碰流程
4 结语
本文所设计的成品小车以STM32芯片为控制核心,在确保小车能够正常运行的基础上加入了红外循迹、超声波避障、蓝牙遥控等功能。成品具有价格低廉、性价比高、原理清晰简明、功能丰富、控制方法简单的优点。现实中以它为蓝本作出进一步改进的模型车可以出色地完成一些模拟实验或代替人类做一些危险的任务,广泛应用于交通、探测等领域。