潘承斌,蔣旭中,溫懷疆
(浙江傳媒學(xué)院 媒體工程學(xué)院,浙江杭州, 310018)
近年,人們?nèi)粘3鲂薪?jīng)常采用自行車、摩托車、電動(dòng)車。騎行越來越多,在騎行中,會(huì)經(jīng)常用到左轉(zhuǎn)彎、右轉(zhuǎn)彎、剎車等操作。由于摩托車、電動(dòng)車和自行車等的行車狀態(tài)沒有提示燈或者是提示燈不夠醒目,在光線不好時(shí)或改變行車狀態(tài)時(shí)(比如突然剎車、轉(zhuǎn)彎等),容易讓行人或其他車輛避讓不及引發(fā)交通事故。為此我們研究設(shè)計(jì)了一種騎車人使用的安全騎行輔助設(shè)備,同時(shí)頭盔也能通過傳感器自動(dòng)感應(yīng)轉(zhuǎn)彎和車距,并自動(dòng)亮起相應(yīng)的轉(zhuǎn)彎提示燈和提示語音,提醒周圍的車輛或行人注意避讓,從而有效地減少交通事故,提高騎車的安全性。在保證傳統(tǒng)頭盔的安全性前提下,對(duì)其進(jìn)行智能化的嵌入,更好地給人們帶來便利。
本安全騎行輔助設(shè)備裝置的系統(tǒng)分為兩個(gè)系統(tǒng),一個(gè)部分為儀表系統(tǒng),另一個(gè)為頭盔系統(tǒng)。首先,儀表系統(tǒng)中,通過JY61姿態(tài)傳感器把車把手地轉(zhuǎn)向的變化信息轉(zhuǎn)化為信息數(shù)據(jù)傳送到主MCU2處理。MCU2通過算法處理將數(shù)據(jù)顯示在0.96寸的OLED屏幕上,同時(shí)通過HC-05藍(lán)牙模塊將姿態(tài)數(shù)據(jù)傳送到安裝在頭盔上的主MCU1。另一個(gè)系統(tǒng)中,通過藍(lán)牙模塊得到車身轉(zhuǎn)向的數(shù)據(jù),相應(yīng)的控制對(duì)應(yīng)方向的WS1812燈條閃爍,以實(shí)現(xiàn)提示功能。MVR2EB激光測(cè)距模塊通過檢測(cè)后方的車輛距離,主控MCU1接收并處理傳感器數(shù)據(jù),當(dāng)距離到達(dá)設(shè)定的閾值,車距過近。MUC1控制語音模塊發(fā)出對(duì)應(yīng)的提示音。實(shí)現(xiàn)提醒功能。電源模塊使用7.4V/2550mAh的鋰電池為兩個(gè)系統(tǒng)的各個(gè)模塊供電,通過LDO轉(zhuǎn)化5V給兩個(gè)MCU供電。
本系統(tǒng)采用的主控MCU是Arduino Nano單片機(jī),在設(shè)計(jì)前期我們使用的是Arduino UNO開發(fā)板,設(shè)計(jì)過程中發(fā)現(xiàn)該開發(fā)板體積過大,而且不適合便攜開發(fā)。Arduino Nano有尺寸小,易便攜、性能良好的特點(diǎn),而且適用于作為本系統(tǒng)的處理核心,其處理器核心ATmega328(NANO 3.0),同時(shí)具有14路數(shù)字輸入/輸出口(其中6路可作為PWM輸出),8路模擬輸入,一個(gè)16MHz晶體振蕩器,一個(gè)mini-B USB口,一個(gè)ICSP header和一個(gè)復(fù)位按鈕。另外該開發(fā)板相應(yīng)配套的軟件(Arduino IDE,集成開發(fā)環(huán)境)功能強(qiáng)大,界面簡(jiǎn)潔,編譯燒錄程序方便,大幅度提升編寫代碼的效率。
圖1 系統(tǒng)整體結(jié)構(gòu)設(shè)計(jì)圖
Arduino Nano芯片自帶的一個(gè)硬件串口外,Arduino還提供了Software Serial類庫,可以將其他數(shù)字引腳通過程序模擬成串口通信引腳,在本系統(tǒng)設(shè)計(jì)中,傳感器與單片機(jī)之間通信都使用串口通信,Nano開發(fā)板的這個(gè)優(yōu)點(diǎn)讓它適合多串口通信開發(fā)。
JY61模塊此六軸模塊采用高精度的陀螺加速度計(jì)MPU6050,通過STM8處理器讀取 MPU6050 的測(cè)量數(shù)據(jù)。然后通過串口輸出,同時(shí)精心的 PCB布局和工藝保證了MPU6050 收到外接的干擾最小,測(cè)量的精度最高。模塊內(nèi)部自帶電壓穩(wěn)定電路,可以兼容 3.3V/5V 的嵌入式系統(tǒng),連接方便。采用先進(jìn)的數(shù)字濾波技術(shù),內(nèi)部結(jié)合了動(dòng)力學(xué)解算與動(dòng)態(tài)卡爾曼濾波算法,能有效降低測(cè)量噪聲,提高測(cè)量精度。配備相應(yīng)的上位機(jī),通過上位機(jī)監(jiān)測(cè)模塊傳輸數(shù)據(jù),與實(shí)際結(jié)果的校正。
卡爾曼濾波算法簡(jiǎn)述:對(duì)于姿態(tài)傳感器模塊來說,角度解算來源于兩種類型的數(shù)據(jù),第一種是通過加速度和磁場(chǎng)數(shù)據(jù)進(jìn)行運(yùn)動(dòng)學(xué)解算可以求出三軸的姿態(tài)角,優(yōu)點(diǎn)是沒有長(zhǎng)期漂移和誤差累計(jì),但缺點(diǎn)是精度差,而且僅在靜態(tài)時(shí)能保證精度。第二種是通過陀螺儀測(cè)量出來的角速度進(jìn)行積分運(yùn)算,可以得出三軸姿態(tài)角,優(yōu)點(diǎn)是精度高,可以進(jìn)行動(dòng)態(tài)測(cè)量,對(duì)加速度不敏感,缺點(diǎn)是有累積誤差和漂移,時(shí)間越長(zhǎng)累積誤差越大??柭鼮V波就是一種數(shù)據(jù)融合算法,結(jié)合加速度計(jì)和陀螺儀的信息,共同來解算姿態(tài),集合二者的優(yōu)點(diǎn)獲得在動(dòng)態(tài)環(huán)境下可以準(zhǔn)確測(cè)量姿態(tài)的方法。
該模塊內(nèi)部MPU6050輸出的數(shù)據(jù)為姿態(tài)的歐拉角數(shù)據(jù),其中滾轉(zhuǎn)角是z軸與通過x軸的鉛垂面的夾角,x軸投影到水平面與導(dǎo)航系的夾角即為航向角,俯仰角則是x軸與水平面的夾角。本設(shè)計(jì)中運(yùn)用了模塊輸出的航向角來表示車身轉(zhuǎn)向信息, JY61模塊通過串口(TTL)將姿態(tài)數(shù)據(jù)傳送給Nano開發(fā)板處理,最后做出相應(yīng)提示操作。
圖2 模塊與單片機(jī)連接圖
本模塊的設(shè)計(jì),我們分析了現(xiàn)有幾種測(cè)距方式的優(yōu)缺點(diǎn),其間對(duì)測(cè)距模塊進(jìn)行了測(cè)試和數(shù)據(jù)分析。
該MVR2EB模塊利用激光對(duì)目標(biāo)的距離進(jìn)行準(zhǔn)確測(cè)定,激光測(cè)距模塊在工作時(shí)向目標(biāo)射出一束很細(xì)的激光,由光電元件接收目標(biāo)反射的激光束,計(jì)時(shí)器測(cè)定激光束從發(fā)射到接收的時(shí)間,計(jì)算出從觀測(cè)者到目標(biāo)的距離,采用 TOF(Time-of-Flight 飛行時(shí)間)技術(shù),850nm 光源,配合獨(dú)特的光學(xué)、電子、結(jié)構(gòu)設(shè)計(jì)而成的激光測(cè)距模組,模組會(huì)計(jì)算通過發(fā)射調(diào)制過的紅外光信號(hào),在被測(cè)物體反射之后返回到模組接收傳感器的時(shí)間來計(jì)算出相對(duì)距離值,可以實(shí)現(xiàn)0.3~14m高速測(cè)距需求(室外),且測(cè)試速度快而準(zhǔn)確。模塊小巧玲瓏,體積小適合集成化,重量輕,僅9 克,對(duì)于佩戴和使用者該重量沒有不適感。模塊UART串口通信,將數(shù)據(jù)以HEX形式發(fā)送到MCU中。數(shù)據(jù)簡(jiǎn)潔易讀取,方便進(jìn)行數(shù)據(jù)轉(zhuǎn)化處理。
圖3 模塊外形和測(cè)距原理圖
由于儀表系統(tǒng)和頭盔系統(tǒng)是分開運(yùn)行,在儀表系統(tǒng)中傳感器得到數(shù)據(jù)之后需要通過數(shù)據(jù)通訊,讓頭盔系統(tǒng)的MCU做出對(duì)應(yīng)處理。中間的數(shù)據(jù)通訊橋梁,本系統(tǒng)采用兩片HC-05藍(lán)牙模塊進(jìn)行數(shù)據(jù)通訊。
該藍(lán)牙模塊連接迅速、連接穩(wěn)定、易于開發(fā)、性價(jià)比高,在智能家居、遠(yuǎn)程控制、監(jiān)控系統(tǒng)方面有著廣泛應(yīng)用。從藍(lán)牙適用距離和性能參數(shù)考慮,該藍(lán)牙模塊可以用于本系統(tǒng)完成兩個(gè)系統(tǒng)的數(shù)據(jù)通訊。
在使用該藍(lán)牙模塊需要設(shè)置主從機(jī),根據(jù)系統(tǒng)要求將儀表系統(tǒng)的藍(lán)牙模塊設(shè)置為從機(jī),用于傳輸傳感器的數(shù)據(jù)。頭盔系統(tǒng)的藍(lán)牙模塊設(shè)置為主機(jī),用于接受從機(jī)發(fā)送的數(shù)據(jù)。
圖4 藍(lán)牙規(guī)格
圖5 AT指令配置藍(lán)牙
本裝置設(shè)計(jì)使用0.96寸,像素點(diǎn)為128×64的OLED顯示屏,用于顯示傳感器獲得數(shù)據(jù)。模型調(diào)試階段,可以通過屏幕顯示的信息直接判斷轉(zhuǎn)向姿態(tài)數(shù)據(jù)。后期可以通過屏幕實(shí)時(shí)反饋車身姿態(tài)數(shù)據(jù)。
圖6 OLED連接示意圖
轉(zhuǎn)向提示燈部分采用WS2812燈條。WS2812是一個(gè)集控制電路與發(fā)光電路于一體的智能外控LED光源。其外形與一個(gè)505LED燈珠相同,每個(gè)元件即為一個(gè)像素點(diǎn)。像素點(diǎn)內(nèi)部包含了智能數(shù)字接口數(shù)據(jù)鎖存信號(hào)整形放大驅(qū)動(dòng)電路,還包含有高精度的內(nèi)部振蕩器和可編程定電流控制部分,有效保證像素點(diǎn)的顏色高度一致。
數(shù)據(jù)協(xié)議采用單線歸零碼的通訊方式,像素點(diǎn)在上電復(fù)位以后,DIN端接受從控制器傳輸過來的數(shù)據(jù),首先送過來的24bit數(shù)據(jù)被第一個(gè)像素點(diǎn)提取后,送到像素點(diǎn)內(nèi)部的數(shù)據(jù)鎖存器,剩余的數(shù)據(jù)經(jīng)過內(nèi)部整形處理電路整形放大后通過DO端口開始轉(zhuǎn)發(fā)輸出給下一個(gè)級(jí)聯(lián)的像素點(diǎn),每經(jīng)過一個(gè)像素點(diǎn)的傳輸,信號(hào)減少24bit。像素點(diǎn)采用自動(dòng)整形轉(zhuǎn)發(fā)技術(shù),使得該像素點(diǎn)的級(jí)聯(lián)個(gè)數(shù)不受信號(hào)傳送的限制,僅僅受限信號(hào)傳輸速度要求。我們采用三個(gè)燈條為一組提示燈,將三個(gè)燈條的信號(hào)線統(tǒng)一,單片機(jī)輸入程序,產(chǎn)生一種閃爍流水燈的效果,該視覺效果比簡(jiǎn)單的亮燈,流水燈動(dòng)態(tài)更吸引人體視覺注意,本設(shè)計(jì)的提示效果。
圖7 典型電路設(shè)計(jì)
圖8 燈條流水效果示意
本系統(tǒng)采用LX-MP3模塊和一個(gè)4Ω3W的揚(yáng)聲器組成。在電腦端提前將使用到的語音錄入到模塊的SD卡中,再將單片機(jī)的IO口接入到模塊預(yù)留的A1~A9端口。該模塊有兩種觸發(fā)模式,在使用語音少的情況下可以使用單鍵觸發(fā)模式,可以直接用單片機(jī)拉低電平觸發(fā)。另一種在使用語音數(shù)量較多時(shí)可以使用編碼觸發(fā)模式,最多可以觸發(fā)31首語音。本系統(tǒng)使用了單鍵觸發(fā)模式。
圖9 模塊示意圖
對(duì)于本系統(tǒng)使用到多種傳感器和模塊,設(shè)計(jì)一個(gè)可以集成化的PCB電路板,預(yù)留傳感器模塊接口,方便安裝,可以減小設(shè)備的體積,并且提高整個(gè)電路的連接穩(wěn)定性。
根據(jù)需求預(yù)留了單片機(jī)接口、藍(lán)牙模塊接口、OLED顯示屏接口、傳感器模塊接口、燈帶接口。設(shè)計(jì)電壓轉(zhuǎn)化電路,保留電源指示燈。
圖10 語音模塊和揚(yáng)聲器實(shí)物圖
圖12 MCU1電路原理圖
軟件部分流程主要從傳感器數(shù)據(jù)獲取外部信息—單片機(jī)讀取傳感器反映的外部數(shù)據(jù)—通過藍(lán)牙實(shí)現(xiàn)雙MCU的數(shù)據(jù)傳輸—單片機(jī)執(zhí)行相應(yīng)設(shè)定的行為—最終實(shí)現(xiàn)相應(yīng)功能。根據(jù)兩個(gè)功能的實(shí)現(xiàn)要求,分別設(shè)計(jì)相應(yīng)代碼,具體細(xì)節(jié)如下。
圖13 MUC2的電路原理圖
圖14 頭盔系統(tǒng)PCB電路板
圖15
圖16
在該部分設(shè)計(jì)中,首先對(duì)于姿態(tài)模塊JY61的數(shù)據(jù)獲取,我們調(diào)用JY901.h庫文件處理基礎(chǔ)數(shù)據(jù),將處理后的有效的姿態(tài)數(shù)據(jù)以串口方式讀取到單片機(jī)中。通過SoftwareSerial.h定義軟串口,使數(shù)據(jù)通過藍(lán)牙模塊進(jìn)行傳輸。最后,在主MCU程序中,將偏航角進(jìn)行補(bǔ)正,將偏航角限定在1°~360°內(nèi),然后前后兩次的偏航角數(shù)據(jù)進(jìn)行對(duì)比,如果偏差幅度超過設(shè)定值,并執(zhí)行對(duì)應(yīng)的亮燈閃爍程序。提示燈部分使用數(shù)組編碼,達(dá)到流水燈提示效果。
在該部分設(shè)計(jì)中主要從測(cè)距模塊中獲取到實(shí)時(shí)距離數(shù)據(jù),通過閱讀數(shù)據(jù)模塊手冊(cè)確定距離數(shù)據(jù)在第三和第四字節(jié),將該字節(jié)獲取,并進(jìn)行高位轉(zhuǎn)換,將十六進(jìn)制轉(zhuǎn)化為十進(jìn)制數(shù),讀取到單片機(jī)中,將讀取的數(shù)據(jù)與設(shè)定值比較,距離過近,則拉低控制語音模塊引腳電平,發(fā)出提示語音。
本文介紹了一種以Arduino nano[4]為主 控 系 統(tǒng),將轉(zhuǎn)向檢測(cè)、安全提示、距離監(jiān)測(cè)和藍(lán)牙數(shù)據(jù)通信等多種功能有機(jī)結(jié)合的智能安全騎行輔助裝置。該系統(tǒng)硬件電路簡(jiǎn)單、實(shí)時(shí)性好,軟件設(shè)計(jì)成本低、功能可擴(kuò)展,能夠提高騎行交通安全事故的發(fā)生率、減少人員傷亡。該系統(tǒng)作為智能設(shè)備的一個(gè)典型應(yīng)用,具有功能多樣化、應(yīng)用廣泛的特點(diǎn),對(duì)交通安全騎行建設(shè)起到一定的推動(dòng)作用。