侯懿轩 梁 秀 高 雅 田 鸽 于 涵 耿乾栋
( 湖南科技大学物理与电子科学学院,湖南 湘潭411201)
目前,现有的大部分小型景区船舶泊岸时都为人工操作方式,当船驶近码头时,由岸上人员用搭钩将船钩住,拉往码头锁止,供游客安全上下船。每个码头都需要安排操作人员进行轮班,人力成本高,时常会发生船体意外碰撞的情况。为了克服现有技术的不足,实现小型景区船舶泊船的自动化与智能化和对船舶运行时的实时数据进行监控。本文设计了一种基于zigbee通信的新型智能泊船方式,操作简单,可靠性好,能有效降低成本。
本游船自动泊岸装置分为两个单元,船载移动单元和泊岸锁止单元。船载移动单元包括人机交互模块、射频通信模块、传感模块。人机交互模块发出命令并显示当前状态,传感模块采集水位、运行速度、船只角度等信息,感知小船的实时状态,射频通信模块与泊岸锁止单元通信,传输操作者的指令和采集的各种数据。泊岸锁止单元包括主控制模块,收集数据并进行数据整理分析,其余模块协同驱动机械臂模块运动。
图1
根据系统框架, 系统硬件包括数据采集传感器、主控制芯片、ZigBee 通信网络、机械臂、显示器等。(图1)
船载单元由显示模块、输入按键、射频通信模块、涉水深度测量模块、离岸距离检测模块、转速测量模块、角度测量模块组成。
射频通信模块采用CC2530 芯片,自带MCU。输入按键可输入泊位选择指令、泊岸指令、起航指令。射频通信模块工作频段为2.4G 频段,可设置16 个信道,避免干扰。MCU 有多个I/O 端口以及支持SPI、I2C、串口通信协议的通信端口。
涉水深度检测和离岸距离检测均采用HC-SR04 超声波传感器,简单可靠,通过I/O 端口得到传感器至障碍物距离。而涉水深度的检测是通过已知传感器到船底的距离可计算出水位线高度。
运行转速采用槽型对射光电传感器,通过MCU 的计时器端口采集非透明物体通过槽型次数的信息,每通过一次触发输出TTL 低电平一次,1 秒内接收多少个外部中断,就可以得到转速。通过在实验测量不同转速下船的速度得到相应的值即可。
角度传感器采用MPU6050 模块, 与MCU 采用I2C 接口通信。通过调用运动处理驱动库函数,直接读取出船体的角度,加速度等数据。
显示器是系统人机交互的窗口,主要的作用有显示船舶实时信息;提示船舶的泊位选择;输出指令,控制机械臂运作。本次设计的自动泊船系统采用OLED12864 屏幕,屏幕的对比度高,像素自发光的特性使得OLED 屏幕在功耗上更有优势。船载移动单元电路图如图2 所示。
泊岸锁止单元包括主控处理模块、射频通信模块、显示模块、驱动模块、机械臂模块、保护模块、测距模块、分体式电动锁止模块。
图2 船载移动单元电路图
图3 泊岸锁止单元电路图
结合本设计需求,主控制模块选用基于ATmega2560 的微控制板的Arduino Mega 2560,模块运行速度快、有通讯接口且有大量的I/O 接口且有适宜的工作温度范围。主控处理模块通过I/O 端口与中断口一同采集开关信息,保证实时性。
通过HC-SR04 超声波传感器得到船与岸的距离,采用串行接口传输测距数据。保护模块与主控处理模块的中断口相连,将设置的参数转化为中断信号及时提供保护任务。
显示模块采用485 接口与主控处理模块通信,将信息以大屏方式显示给游客和驾驶员。以串行接口与射频模块通信,设置其工作的参数以及接收船载单元的数据。
驱动模块SPI 接口与主控处理模块通信,机械臂由两个舵机的控制,完成三维空间的运动轨迹,实现与锁止杆的碰触与锁定。
船载单元和泊岸锁止单元的通信采用近距离射频方式通信,范围为0-20m。可支持多个泊位,由船载单元的按键选择,不同泊位采用不同的信道通信。有声音和文字显示,提醒驾驶员和游客当前的运行状态和操作情况。警报保护模块考虑了多种可能发生安全和损坏的情况,在事故发生前采取措施避免。泊岸锁止单元电路图如图3 所示。
本文自主设计并搭建了一套2 自由度机械臂系统。通过对舵机的测量,将平台切割留孔,使第一级舵机可以竖直固定在平台上,用适当的工具进行固定。第一级电机的转动代表机械臂第一个关节的运动,转动的角度和角速度都可以从电机的编码器获取。将第二级电机的侧面中心与第一级电机的轴固定,这样第一级电机驱动第二级电机在竖直方向上运动。再在切割好的亚克力板合适位置钻孔,孔的位置与联轴器契合,用工具进行固定,这样第二级电机驱动第二级连杆的转动就可以表示机械臂在第二个关节的运动。亚克力板的另一端固定好电磁铁。至此,机械臂本体搭建完成,其运动范围在一个三维空间内,静止状态下第一级电机控制第二级电机垂直于平台,第二级电机的联轴器控制摆臂平行于平台。
本设计是基于Arduino 平台进行总体设计,Arduino 包含硬件和软件,并且具有使用类似Java、C 语言的Processing/Wiring开发环境。Arduino 有可跨平台、开放性高、社区与第三方支持等优点。
本设计将系统软件设计划分为船载单元模块设计和锁止单元模块设计两部分。
3.2.1 船载单元模块设计
本系统船载单元程序运行流程见图4。先按下泊位选择数字,再按下泊岸按键,MCU 将开始采集船吃水深度、运行速度和方位角等参量,如速度过快或方位角差别太大,显示模块将提示减速、调整角度,如各参量数值在阈值范围内,则通过射频通信模块将这些数据与泊岸指令一起打包发给泊岸锁止单元。起航按键则用于通知泊岸锁止单元释放锁标。
图4 船载单元工作流程图
3.2.2 锁止单元模块设计
图5 泊岸锁止单元工作流程图
锁止单元模块即主控制程序,泊岸锁止模块一直处于待机状态,一旦收到船载单元发出的泊岸指令将激活泊岸锁止模块,发出测距指令,如发现船只在设置距离内,则通知主控处理模块发出请求速度、吃水线、角度等数据的指令,通过射频通信模块与船载单元通信,得到相关参数后进行计算,估算与机械臂的触碰点,计算机械臂的角度,将相关数据发送给驱动模块,控制电机转动,带动机械臂按预定轨迹运动。机械臂顶端有触碰锁止的机械结构,一旦与船的锁止杆相接触将触发分体式电动锁止机构,锁住锁止杆,通过开关信号通知主控处理模块,给驱动电路发出回转指令,收回机械臂,带动船只执行泊岸操作。泊岸过程结束,如锁止单元接收到起航指令,则释放锁止机构。运行过程中保护模块始终采集实时的压力、速度、拉力等相关信息,出现异常值则释放锁止机构。船舶泊岸锁止单元工作流程图如图5 所示。
主控制器将需要发送的数据通过串口传送CC2530,CC2530 的串口接收到数据后将其通过无线射频发送出去。同时,CC2530 接收到的数据也通过串口发送给其他设备。本系统主要使用ZigBee 模块的无线收发和串口功能,其余工作都由主控制器2560 完成。
本设计对自动泊船系统进行了软硬件的试验,并将传感器数据发送至上位机中显示,模拟船舶运行,便于对船舶的姿态进行分析。测试实验结果表明,系统整体运行稳定、各个传感器采集数据基本准确、报警模块提示及时,机械臂系统工作正常,基本达到了系统的设计要求,满足自动泊船工作的需要,具有一定应用价值。