李 东 霖 ,郭 强 ,高 明 明 ,朱 永 强
(青岛理工大学机械与汽车工程学院,青岛 266520)
随着科技的发展,车联网作为交通领域的一项新技术已成为近年的研究热点。车联网技术是利用先进的传感器、网络、控制等技术对小车及周边进行监控,从而达到“零堵塞”“零伤亡”“零超限”的专用控制系统。[1]在交通专业的教学中,让学生更好地认识并了解车联网很有必要。智能小车是在单片机控制、电机驱动的基础上集成了各种传感器模块的模型车,具有结构简单、易携带、操作方便等优点。[2]由于单片机内存较小,将车联网相关技术的控制代码全部存储于单片机中会产生代码复杂、调试混乱等缺陷,[3]为了解决相关问题,本文结合车联网相关技术设计了一种基于单片机和LabVIEW 的智能小车实验平台。LabVIEW 可实现图形化编程,内嵌丰富的库函数和接口,便于实现现场数据的处理。[4]将复杂的控制和信息处理代码写入LabVIEW 中,单片机中仅保留传感器数据采集、信息传输和电机控制的代码,实现智能小车的在线调试和无线联网控制。学生在使用过程中,可以在计算机端LabVIEW 软件中实时修改代码,不必通过数据线将新代码烧录到单片机中,从而有效提高了学习效率。
基于车联网的智能小车实验平台,由模型车代替真实车辆,搭载基于无线通信网络的智能控制系统,包括LabVIEW 上位机、单片机下位机、传感器、驱动模块等。
在模型车上安装单片机和传感器,单片机控制传感器对小车周围和自身的一些数据进行采集,包括车速、周围温度、电池电压等,并通过单片机的WiFi 模块将数据传递给上位机;上位机LabVIEW 接收到信息后,经过后台程序处理,在前面板上显示具体数值。用户通过LabVIEW 调整小车的车速和运行方向,根据实时状态数据调整相关控制器,设计思路如图1 所示。用户可以在相同名称和密码的局域网下不同的计算机上使用该实验平台。
图1 智能小车实验平台整体设计思路流程图
本实验平台的下位机车载硬件系统以单片机为核心,此外还包括温度传感器、车速传感器、循迹传感器、电压调节模块、电机驱动模块、电池等。系统硬件在单片机的统一调度下有序运行,实物如图2 所示。
图2 硬件实物图
1) 主控模块。智能小车实验平台要求控制芯片不仅能调用各种传感器和模块,还要准确地完成与上位机的信息传递,因此选用的单片机应具有数据采集、计算以及强大的通信能力。[5-6]本实验平台选用了ESP32 单片机作为控制核心,它采用40 纳米工艺,具有2.4GHz 双模WiFi、蓝牙和丰富的扩展接口,能满足实验平台的运行需求。
2) 电源模块。考虑到该实验平台的特殊性,电源应为可移动电源,且输出稳定,故采用容量为2 800 mAh 的锂电池,电压最大为7.4 V。但由于ESP32 单片机和传感器的最大输入电压为5 V,因此需要通过DC-DC 降压模块(型号为MP1584EN)将锂电池的输出电压降至5 V 后,再为单片机和传感器供电。
3) 电机驱动模块。该实验平台的特点之一是小车可根据接收的上位机信息调整车速和方向。为简化控制流程,小车采用差速转向,4 个驱动电机两两并联,分为左车轮电机和右车轮电机。电机驱动模块采用的是L298N 两路直流电机驱动模块,正转和反转均可实现PWM(Pulse Width Modulation,脉冲宽度调制,简称PWM)调速。
4) 温度传感器。实验平台在运行过程中,要对小车自身和周围的温度进行监测,以确保实验平台的运行稳定。温度传感器选用的型号为DS18B20,测温范围为-5℃~+125℃,误差不超过2℃。该模块采用单总线通信模式,无须信号调理电路,只要在单片机主程序中调用相应的库函数即可使用,相比于传统的测温模块,使用更加方便。
5) 车速传感器。实验平台在运行的过程中要实时反馈小车的车速,上位机根据车速调整驱动电机的控制指令,以保证小车的行驶符合预期。车速传感器采用的是码盘脉冲计数器(一种槽型对射光电传感器),由1 个红外发光二极管和1 个NPN 型发光三极管组成,码盘带有20 个栅格,安装于电机转轴的另一侧。电机旋转,码盘转动,将红外信号通过栅格间断发送至对面接收端。遮挡时,信号端输出低电平;不遮挡时,信号端输出高电平。信号传至单片机,通过相关代码将电信号转变成车速信息后传递给上位机。
6) 电压监测。因为锂电池不能在低电压下过度使用,故需要对电池的电压进行实时监测。通过单片机ESP32 中ADC(模拟数字转换器)引脚来接收电信号,由于ADC 引脚最大输入电压在3.3 V,因此需要通过外接分压电阻将电源电压按比例分压降至3.3 V 以内。通过对应的程序将输入的电信号进行转换,计算出实际电压值,将电压值数据传递给上位机。
7) 循迹模块。为了增加实验平台特点并提高学生操作的兴趣,设计小车自动循迹行驶模式,使小车按照外部设定的路线进行运动。通过ESP32 单片机控制循迹传感器,检测人为铺设的轨迹路线,沿着既定路线行驶。具体操作为,循迹模块检测并记录小车行驶轨迹相对于给定轨迹的偏离程度,并通过ESP32将相关数据上传至上位机LabVIEW,在LabVIEW 内部进行车速、转向计算后,迅速向下位机输出车速控制、转向控制等指令,实现小车的循迹行驶。本实验平台采用的是五路循迹模块,型号为BDF-1000,其原理为五路灵敏的红外线传感器,能够精准识别黑白线,触发传感器高低电平的变化,检测偏离程度。
循迹传感器需求电压为3.0 V~5.5 V,这里可以直接用锂电池通过降压后的5 V 电压供电,GND 接地,信号通道S1、S2、S3、S4、S5 分别对应连接ESP32 的GPIO12、GPIO14、GPIO27、GPIO26、GPIO25 引脚。电压、车速、温度3 个监测模块信号通道均为1 个,分别对应连接GPIO34、GPIO13、GPIO4 引脚。L298N 信号通道IN1、IN2、IN3、IN4 分别对应GPIO5、GPIO18、GPIO19、GPIO21,值得注意的是,驱动模块L298N 不需要降低电压后供电,可由7.4 V 锂电池直接供电。具体电路连接示意图如图3 所示。
图3 电路连接示意图
智能小车实验平台工作流程为:电源开启后,单片机调用内部WiFi 模块,同时LabVIEW 也连接同一WiFi,小车进行数据初始化。初始化结束后,各模块开始独立工作,监测模块将温度、车速、电压等信号通过WiFi上传至上位机系统。同时,单片机准备接收上位机指令,选择执行手动模式或自动模式。手动模式下,单片机执行上位机发送的电机驱动指令,包括转向、车速;自动模式下,单片机调用循迹子程序。流程图见图4。
图4 系统主程序流程图
循迹小车的行动状态大致可分为直行、左转和右转3 种。根据传感器返回的不同数值运行不同的循迹程序。在循迹程序中,采用PWM 调速控制左右两侧车轮转速来实现转向,具体控制策略如表1 所示。在循迹程序中,电平发生变化时,小车速度会下降并根据检测到的情况进行转向,达到直行条件后转向结束。
表1 循迹程序控制策略
1) 温度监测。在Arduino 的主程序中调用DS18B20 库,定义温度传感器的引脚为4,初始化温度传感器,读取温度值,读取多组数值,滤波,去掉最大值和最小值后取平均值,保存新的数值并上传。温度监测流程图见图5。
图5 温度监测流程图
2) 电压监测。在Arduino 的主程序中定义ADC 引脚为34,读取经过分压后的电压数字信号,读取多组数值,去掉最大值和最小值后取平均值,得到分压后的电压数值,根据分压电路的电阻值逆推,求得外部电源的实际电压。电压监测流程图见图6。
图6 电压监测流程图
3) 车速监测。在Arduino 的主程序中定义车速传感器的引脚为4,设定程序每秒计数一次,读取栅格转动产生的脉冲数,结合车轮直径,计算出每秒车速,随后脉冲数清零,重新计算下一秒车速。车速监测流程图见图7。
图7 车速监测流程图
LabVIEW 上位机主要功能为:①实时监测小车的车速、电源电压、温度。②通过手动模式和自动模式来改变智能小车的运行状态,向下位机ESP32 发送命令,使小车实现一些指定动作,其中手动模式为关闭自动循迹功能,人工控制小车的转向和车速;自动模式为开启自动循迹功能,根据给定线路自行调整方向和车速。图8 所示为LabVIEW 控制前面板。打开程序后,即进入智能小车实验平台的控制界面。启动程序,WiFi 自动连接,用户可以选择手动和自动控制模式。
图8 上位机LabVIEW 前面板界面
完成所有模块的组装和调试后,将硬件焊接搭建,完成智能小车组装,如图9 所示。上位机与下位机成功联网,一个基于车联网的智能小车实验平台便搭建完成。将下位机和上位机置于同一局域网下,在上位机LabVIEW 的前面板中,输入单片机ESP32 在该局域网下的IP 地址,打开小车电源,等待5 s,智能小车与上位机完成了WiFi 下的通信连接。如图10 所示,在LabVIEW 前面板选择手动模式,改变小车的车速和方向,智能小车可以完成相应的动作。如图11 所示,选择自动模式,小车进入自动循迹状态,小车沿黑线平稳运行,长时间运行的情况下未发生路线偏离,转弯处可自行调整车速。
图9 智能小车实物图
图10 手动模式工作
图11 自动模式工作
本文设计的一种基于车联网的智能小车实验平台改变了以往将代码写入下位机中的方法,而是将复杂代码写入上位机LabVIEW 中,单片机中只保留基础代码,由此减少了对单片机性能的要求,这使得实验平台的成本大大降低,并且调试起来更为简单。该实验平台能够保证长时间运行,满足了交通专业学生的学习任务需求,其中车联网技术的应用能增加学生的学习兴趣,自主调试的特点有助于锻炼学生的动手能力,能提高学生在智能控制方面的应用水平。