葉磊 韓金霞



【摘? 要】為保障船舶航行安全,降低中小型船舶間碰撞事故的發生率,論文基于STM32和激光模塊設計了一套船舶防撞預警系統。本系統通過激光模塊進行船舶間航行距離的檢測,實現航行預警功能,具有成本低、體積小、安裝方便等優勢。
【Abstract】In order to ensure the safety of ship navigation and reduce the occurrence probability of collision between small and medium-sized ships, the paper designs a set of ship collision avoidance early-warning system based on STM32 and laser module. The system can detect the sailing distance between ships by laser module and realize the navigation early-warning function. It has the advantages of low cost, small size and convenient installation.
【關鍵詞】STM32;激光;防撞;預警
【Keywords】STM32; laser; collision avoidance; early-warning
【中圖分類號】TP399? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文獻標志碼】A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?【文章編號】1673-1069(2020)06-0194-03
1 引言
傳統的航行避碰主要依靠工作人員的瞭望,并通知值班駕駛員,由駕駛員根據航行經驗進行分析判斷后采取避讓措施,這要求船舶操作人員具有較強的專業能力和極高的綜合素質。隨著航運事業的發展,船舶數量逐漸增多,專業化工作人員明顯供不應求,船舶避碰系統的需求與日俱增[1]。雖然目前國內外都已經具有比較完善的避碰檢測系統,但是這些系統對于中小型船舶,尤其是漁船來說經濟成本太高,無法得到廣泛的應用。因此,開發更加經濟實用、性價比高的防撞預警系統意義重大。
基于以上情況,本文設計了一套成本低、體積小、安裝方便的船舶防撞預警系統,為中小型船舶特別是漁船保駕護航。
2 系統總體方案設計
船舶防撞預警系統主要由STM32F103C8T6單片機、電源、TFmini Plus激光模塊、舵機、LCD1602、聲光報警、按鍵組成,系統總體框圖如圖1所示。
該系統采用ST公司的STM32F103C8T6單片機作為核心芯片,單片機通過UART與激光模塊進行數據通信。激光模塊每隔一定時間進行一次檢測,并將檢測到的數據發送到單片機,單片機對接收的數據進行分析處理,如果檢測到有船只駛入預先設置的安全距離時,系統會進行聲光報警,以便使工作人員提前采取有效措施,避開事故易發區域。同時,系統會通過LCD1602進行報警信息的顯示(主要包括對方來船的速度、方位和當前距離),并將有效信息進行存儲,為以后船舶航行提供數據基礎。
為了增大測量范圍,本設計將激光模塊安裝在舵機上,通過舵機水平方向的轉動,帶動激光模塊進行水平方向0~180°范圍的測量,以提高系統測量的準確度。
3 系統硬件設計
3.1 主控芯片STM32F103C8T6
本設計的核心控制芯片采用ST公司的STM32F103系列單片機[2],其是意法半導體在MCU領域推出的非常經典的芯片系列,有著強大的功能和豐富的內部資源,系統通過STM32F103C8T6單片機完成對舵機和激光模塊的控制、數據的處理以及數據的顯示。
主控芯片STM32F103C8T6電路設計如圖2所示。
由圖2可知,STM32F103C8T6單片機[3]的30和31管腳使用的是串口功能,通過串口與激光模塊進行通信。系統的顯示單元采用的是LCD1602,STM32F103C8T6單片機的LCD_DB0-LCD_DB7與LCD1602的8位數據口相連接,LCD_RS、LCD_RW、LCD_E與LCD1602的控制管腳相連,實現對LCD1602的讀寫和使能。單片機的LED_R、LED_G、LED_Y分別是紅、綠、黃三色燈的控制管腳。
3.2 TFmini Plus激光模塊
本設計采用北醒光子科技有限公司的TFmini Plus激光模塊作為數據采集模塊,進行船舶間行駛距離的檢測。其是一款小型化、單點測距的產品,基于TOF(飛行時間)原理,配合獨特的光學、電學、算法設計,主要實現穩定、精準、高敏度和高速的距離測量功能。該模塊具有IP65等級防護,測距精度高,對于室外強光、不同溫度、不同放射率等不同環境下適應性更強,功耗也比較低。
TFmini Plus模塊啟動后會周期性地向外發出近紅外光調制波,調制波遇物體后反射,通過測量調制波往返相位差,得到飛行時間,再計算出產品與被測目標之間的相對距離[4]。
TFmini Plus模塊公用四個管腳,分別是+5V、GND、RXD/SCL、TXD/SDA。STM32F103C8T6和TFmini Plus模塊之間支持UART和I2C兩種通信方式,本文采用UART的方式進行通信。電路原理如圖3所示。
4 系統軟件設計
4.1 系統軟件設計
該系統的軟件設計主要包括系統初始化、參數設置、舵機控制、安全距離檢測、數據處理、聲光報警以及數據顯示七個部分。
系統上電后,首先進行系統的初始化,完成系統時鐘和GPIO口配置,同時,設置好安全距離,然后啟動定時器,每隔10s進行一次完整的數據采集。數據采集的處理過程如下:
TM32F103C8T6控制舵機在一個初始位置,然后啟動激光模塊進行數據測量,STM32F103C8T6對TFmini Plus采集的數據進行分析處理。如果超過預先設置的安全距離,啟動蜂鳴器進行聲音報警,三色燈開始閃爍進行燈光提示,同時,將獲取到對方來船的位置、速度和距離在LCD1602上進行顯示,并進行存儲。如果未超過預先設置的安全距離,單片機控制舵機轉動45°的位置進行再次檢測,重復第一次檢測的過程;如果舵機45°位置處尚未檢測到船只,再控制舵機轉動到90°的位置,依次類推,直至舵機回到原點時完成一次完整的數據采集。
系統的軟件流程如圖4所示。
4.2 激光模塊軟件設計
TFmini Plus有兩種數據輸出格式,即標準數據輸出格式和字符串數據格式,這兩種格式可通過指令代碼相互切換。
本文采用默認的標準串口數據輸出格式,TFmini Plus激光模塊在使用UART通信時要通過上位機軟件或串口調試助手進行相關參數的配置,模塊默認狀態下是串口通信模式,使用時只需向串口發送5A 08 06 H1 H2 H3 H4 SU(SU為checksum),設置波特率為115200即可。
激光模塊上傳的數據幀,每幀長度為9個字節,包含2字節幀頭(0x59 0x59)、2字節距離值(distance)、2字節信號強度值(strength)、2字節芯片溫度值(tempture)以及1字節數據校驗和(checksum)。數據格式為16進制(hex)。具體數據編碼[5]如表1所示。
TFmini Plus激光模塊軟件程序設計流程如圖5所示。
STM32F103C8T6單片機使能TFmini Plus激光模塊后,TFmini Plus開始進行數據測量,并當單片機收到激光模塊返回的數據后,判斷當前的測量次數,如果未達到測量次數NUM,將收到的數據插入數據接收隊列receive_queue(ushort data,uchar length),并調用數據解析函數analyz_data(ushort *data, uchar length),將距離參數解析出來存儲到數組valid_data,進行下一次數據的接收;如果當前測量次數大于等于NUM時,對valid_data數組內的數據進行分析,如果測量的距離小于預先設置的安全距離時,置位報警標志位alarm_flag,當單片機查詢到alarm_flag為1時,系統進行聲光報警,并在LCD1602上進行顯示,否則等待下一次測量。
5 結語
本文提出的船舶防撞預警系統由STM32F103C8T6單片機、TFmini Plus激光模塊、舵機、LCD1602等部分構成。該系統能夠進行船只間安全距離的檢測,當船只駛入安全距離時,系統進行聲光報警,提示工作人員采取有效的避障措施,由于成本較低、安裝方便靈活,可以應用在中小型船舶特別是漁船上,在船舶安全航行方面能發揮重要作用。該系統具有很好的擴展性,為了保證數據檢測的準確性可以擴展其他的傳感器,多個傳感器可以同時進行檢測,同時,也可以為該系統添加主控端和上位機端,更好地實現對系統的控制。
【參考文獻】
【1】周東柳.基于單片機的船舶主動避碰系統的設計[D].舟山:浙江海洋學院,2015.
【2】林玩杰,李水峰,毛立夫,等.基于STM32智能家居控制系統的設計[J].電子設計工程,2019(24):176-180.
【3】曾建清.基于STM32的多功能空氣質量檢測系統設計[D].成都:電子科技大學,2019.
【4】鄧威,張廬林,何鑫,等.基于移動互聯網安防設備的設計[J].電子世界,2019(20):141-142.
【5】張志堅.基于MSP430的夜間隧道照明系統的研究[D].太原:山西大學,2019.