侯懿軒 梁 秀 高 雅 田 鴿 于 涵 耿乾棟
( 湖南科技大學物理與電子科學學院,湖南 湘潭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 完成。
本設計對自動泊船系統進行了軟硬件的試驗,并將傳感器數據發送至上位機中顯示,模擬船舶運行,便于對船舶的姿態進行分析。測試實驗結果表明,系統整體運行穩定、各個傳感器采集數據基本準確、報警模塊提示及時,機械臂系統工作正常,基本達到了系統的設計要求,滿足自動泊船工作的需要,具有一定應用價值。