李沛澤
(鄭州大學國際學院 河南省鄭州市 450000)
本文采用STC89C52作為多功能安全頭盔的主控制器,STC89C52屬于增強型51單片機。51系列單片機是一款應用廣泛的8位單片機,它提供了一套完整的按位操作系統,同時具有乘法和除法指令,操作簡單,容易上手。STC89C52相比于51單片機,擁有更大的RAM和ROM存儲空間,增加了定時器數量和相應的特殊功能寄存器和中斷功能更強大。
1.1.1 接聽功能
配置藍牙外耳機,避免騎手以為佩戴入耳式耳機,對周圍聲音喪失基本的判斷,減少意外情況的發生,且不影響騎手對基本語音通話的使用。
1.1.2 測距功能
先用MPU6050測得行駛的加速度,通過算法測得速度,當速度達到15km/h以上觸發左后方和右后方超聲波測距模塊,當超聲波模塊測距距離為2m以內發出提示音提醒左后方或右后方有車,請注意安全。
1.1.3 事故報警功能
板子正常情況下是水平,一旦MPU6050檢測到板子不再水平即摔倒,蜂鳴器發出提示音,且摔倒的時間持續超過15秒后GSM模塊開始工作,向有關人員發送求救信息和GPS模塊得到的位置信息。
功能框圖如圖1所示。
(1)主控制器:STC89C52。
(2)測距功能:MPU6050,兩個HC_SR04,報警電路。
(3)事故報警功能:MPU6050,SIM800模塊,GPS模塊,報警電路。
(4)接聽功能:藍牙外耳機。
2.2.1 STC89C52
(1)屬于增強型8051單片機,相比于傳統的8051單片機,其功能更加強大。
(2)工作電壓:5.5V~3.3V(5V單片機)/3.8V~2.0V(3V單片機)。
(3)STC89C52共有32個I/O口,大多為弱上拉型,本系統需要兩個I/O口進行IIC通信,3個I/O口分別連接指示燈和控制按鍵以及蜂鳴器,4個I/O口分別連接兩個HC-SR04,同時還需要若干I/O口連接LCD1602液晶顯示屏。
(4)STC89C52有一個串口,我們需要用串口實現與GSM/GPS模塊的通信。
(5)共3個16位定時器/計數器。即定時器T0、T1、T2,我們用到了T0和T1定時器,T1定時器進行定時,T0定時器用于測距模塊。

圖1:功能框圖
2.2.2 HC-SR04超聲波測距模塊
(1)使用電壓:DC—5V。
(2)靜態電流:小于2mA。
(3)電平輸出:高電平5V。
(4)電平輸出:低電平0V。
(5)感應角度:不大于15度。
(6)探測距離:2cm-450cm。
(7)高精度可達0.2cm。
2.2.3 MPU6050
(1)尺寸:4*4*0.9mm。
(2)封裝:QFN。
(3)支持電壓:2.5v 5%,3.0v 5%,3.3v 5%。
(4)陀螺儀可測范圍:250,500,1000,2000 /秒。
(5)加速度計可測范圍:2,4,8,16g。
2.2.4 SIM800模塊
(1)尺寸:24*24*3mm。
(2)重量:3.1g。
(3)通過AT命令控制(GSM 07.07,07.05 and SIMCOM增
強AT命令集)。
(4)供應電壓范圍:3.4~4.4V。
(5)操作溫度范圍:-40℃~85℃。
2.2.5 GPS模塊
(1)5Hz定位更新速率。
(2)精確度:定位2.5MCEP,SBAS:2.0mCEP。
(3)捕獲冷啟動29s。
(4)溫啟動27s。
(5)輔助啟動<3s。
(6)熱啟動<1s。
(7)支持AssistNow Online及AssistNow Oラine。
(8)速度515m/s(1000節)。
(9)模塊輸入電壓:5V。

圖2:原理圖

圖3:主程序流程圖
2.3.1 mpu6050陀螺儀/六軸加速度傳感器
電路板位于頭盔的頂端,水平放置,正常情況下傾角為0度。MPU6050用于測量x方向和y方向的加速度以及電路板的傾角,正常情況下,mpu6050測得的傾角為0,同時兩個方向的加速度在正常的范圍內。當加速度的絕對值出現特別大的值(發生碰撞),之后傾角不為0(摔倒)且十五秒后不恢復0值,便觸發GSM模塊和報警模塊工作。
2.3.2 GSM/GPS模塊
GSM模塊采用SIM800A,其接收端與單片機串口的發送端相連用于接收單片機發送的信息并發送給對應的手機。GPS模塊用于測量經緯度信息并發送給單片機,在事故發生后,單片機將求救信息以及事故發生的經緯度信息通過串口發送給GSM模塊,GSM模塊發送給相應的手機。
2.3.3 由加速度計算速度的算法設計
假設y方向為正前方,由MPU6050測得y方向的加速度a,用定時器1做定時,以每100ms為間隔,讀取每個間隔的中間值作為a的值,然后累加10次,則 得到速度的值。
2.3.4 HC-SR04超聲波測距模塊
超聲波測距模塊用于測量在電動車高速運動時距離后方車輛的距離,當速度超過15km/h,啟動左后方和右后方的超聲波測距模塊,當測的距離小于兩米時,啟動提醒/報警電路進行提醒。
2.3.5 報警/提醒電路
該電路由蜂鳴器和二極管電路組成,當高速狀態下測距小于兩米時,電路發出間隔為1s的滴答聲進行提醒,當檢測到事故發生時,發出長時間的報警聲。
2.3.6 LCD1602液晶顯示屏
LCD1602用于顯示mpu6050測得的加速度和傾角的數值以及通過算法計算出的速度值以及左后方和右后方兩個HC-SR04測得的距離。用于進行調試,可以去掉。
2.4.1 引腳設計
(1)MPU6050的SCL時鐘線接單片機P21引腳,SDA數據線接單片機P20引腳,實現與單片機的IIC通信。
(2)單片機P22引腳通過三極管接蜂鳴器。

圖4:GSM模塊、GPS模塊子程序流程圖

圖5:定時器1、串口接收中斷服務函數流程圖
(3)GPS模板TXD輸出引腳連接單片機RXD串口輸入引腳RXD,向單片機發送位置信息。
(4)單片機TXD串口輸出引腳連接GSM模塊RXD輸入引腳TXD,控制GSM模塊向手機發送短信。
(5)兩個超聲波測距模塊的TX發送引腳分別接P10,P16引腳,接收引腳RX接單片機P11,P17引腳。
(6)LCD1602數據端接單片機P00到P07引腳,使能端接P27引腳,讀寫端接P26引腳,使能端P25引腳。
2.4.2 引腳設計特色
由于STC89C52只有一個串口,而GSM和GPS模塊都需要與串口進行通信,我們可以將單片機串口的接收端與GPS模塊的發送端相連,同時單片機串口的發送端與GSM模塊的接收端相連,實現了一個串口與兩個模塊的通信。
2.4.3 原理圖
原理圖如圖2所示。
本產品采用的開發環境為Keil5_C51,Keil集編輯、編譯、到連接、調試為一體,提供了一套完整的軟件開發流程。用Keil軟件對程序進行編譯形成HEX文件,將HEX文件用STC-ISP軟件和CH340通過串口燒錄到STC89C52,從而對整個系統實現控制。
主程序主要分為兩個部分,測距功能和事故報警功能。首先通過MPU6050和HC-SR04以及各種算法得到行駛時加速度,速度,傾角,距離等狀態。然后通過這些狀態判斷是否處于危險狀態或是否有事故發生,進而打開或關閉報警/提醒電路。報警電路可以通過按鍵進行取消。具體流程圖如圖3。
3.3.1 GSM模塊子程序(GSM_PROC())
GSM模塊用于向手機發送求救信息和GPS模塊測得的經緯度信息,使用GSM模塊首先需要單片機通過串口向GSM模塊發送相關的協議,之后才可以發送對應的手機電話號碼以及求救信息和位置信息,GSM模塊接收到單片機發送的這些信息之后,進而通過短信形式發送到相應的手機。
3.3.2 GPS模塊子程序(GPS_PROC())
GPS模塊用于獲取駕駛員的經緯度信息,GPS模塊的原始信息通過串口接收中斷函數獲得,GPS模塊的子程序主要用于處理GPS獲得的原始信息進而轉化成位置信息,及經緯度信息。之后通過串口把經緯度信息發送給GSM模塊。
GSM模塊、GPS模塊子程序流程圖如圖4所示。
3.3.3 超聲波測距模塊子程序(Wave_PROC())
超聲波測距模塊用到了兩個HC-SR04,用于同時測量左后方和右后方的距離。超聲波測距子程序用到了定時器0,通過定時器0完成了波的發送以及距離的測量,最終返回兩個模塊較小的距離。
3.4.1 定時器1中斷服務函數(Timer1_Routine()interrupt 3)
定時器1的周期為1ms,定時器1中斷服務函數用于對各個模塊進行一定周期的掃描,同時在中斷服務函數中含有速度的算法,用于通過加速度計算速度。是一個比較重要的中斷服務函數。
3.4.2 串口接收中斷服務函數(USART_Routine()interrupt 4)
單片機串口的接收端連接GPS模塊的發送端,GPS模塊所得到的原始信息通過單片機的串口接收中斷服務函數獲得,我們通過GPS模塊發送的協議獲取相應的原始信息,具體通過接收到的逗號次數判斷接收數據的類型,進而將原始信息放在相應的數組中。
定時器1、串口接收中斷服務函數流程圖如圖5所示。
基于51單片機的多功能安全頭盔可以在現代交通行業得到廣泛的應用,可以進一步提高摩托車、電動車騎乘人員和駕乘人員的安全防護水平。多功能安全頭盔擁有接聽、測距、事故報警三大功能,結構簡單,功能強大,成本低廉,可靠性強,具備較大的應用空間。