国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Arduino的電動(dòng)車(chē)與摩托車(chē)安全報(bào)警裝置

2018-12-17 09:17任環(huán)宇曹虎李道全
電腦知識(shí)與技術(shù) 2018年25期
關(guān)鍵詞:串口通信上位機(jī)

任環(huán)宇 曹虎 李道全

摘要:電動(dòng)車(chē)、摩托車(chē)在為了人們出行提供方便的同時(shí),也帶來(lái)了安全隱患。本設(shè)計(jì)開(kāi)發(fā)了一款用于安裝在電動(dòng)車(chē)、摩托車(chē)后置的危險(xiǎn)探測(cè)裝置。探測(cè)手段主要通過(guò)超聲測(cè)距傳感的方式,盡早地探測(cè)出電動(dòng)車(chē)、摩托車(chē)在行駛過(guò)程中遇到的距離過(guò)近的“危險(xiǎn)”,考慮到電動(dòng)車(chē)、摩托車(chē)在形式過(guò)程中的“視野盲區(qū)”,該設(shè)計(jì)為超聲測(cè)距探頭搭載了旋轉(zhuǎn)舵機(jī),以方便探頭周期性地對(duì)“視野盲區(qū)”的各個(gè)方向進(jìn)行有效探測(cè)。同時(shí)設(shè)計(jì)開(kāi)發(fā)了多種預(yù)警模塊,包括語(yǔ)音提示預(yù)警模塊、燈光閃爍預(yù)警模塊,模塊是基于arduino上位機(jī)、語(yǔ)音芯片做下位機(jī)的技術(shù)實(shí)現(xiàn)的。通過(guò)聲光交替預(yù)警的方式,提高后方車(chē)輛的警惕性,盡可能地避免追尾。

關(guān)鍵詞: arduino;超聲測(cè)距;上位機(jī);串口通信;語(yǔ)音合成;預(yù)警裝置

中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)25-0273-04

隨著經(jīng)濟(jì)的快速發(fā)展,人們生活水平的提高,出行方式的選擇成為與百姓生活息息相關(guān)的問(wèn)題。在較為發(fā)達(dá)的城市,為了避免出行的擁堵,越來(lái)越多的人選擇使用電動(dòng)車(chē)、摩托車(chē)等便攜式的出行方式。而在農(nóng)村,電動(dòng)車(chē)、摩托車(chē)也更是成為人們出行的主要交通工具。盡管這些交通工具較為方便,但是安全成為一大隱患,尤其是相對(duì)”鐵包肉”的汽車(chē)來(lái)說(shuō),無(wú)疑增大了安全隱患[1]。本項(xiàng)目旨在通過(guò)相關(guān)的設(shè)計(jì)開(kāi)發(fā)來(lái)解決這一隱患。

1 系統(tǒng)總體設(shè)計(jì)

1.1 總體設(shè)計(jì)概述

本項(xiàng)目的重點(diǎn)在各個(gè)模塊的獨(dú)立開(kāi)發(fā)以及各個(gè)模塊的拼接。通過(guò)調(diào)研,各個(gè)模塊所使用的外設(shè)都在arduino有統(tǒng)一的協(xié)議,有較為豐富的開(kāi)發(fā)資源(Arduino ide),非常方便開(kāi)發(fā)者做各種功能的組合實(shí)現(xiàn)。同時(shí),語(yǔ)音模塊和主控arduino板都是支持統(tǒng)一的串口通信協(xié)議,因此只需要做一個(gè)arduino上位機(jī)的通信邏輯,就可以完成該模塊的設(shè)計(jì)。

整個(gè)系統(tǒng)的功能可以分為如下的幾個(gè)模塊:超聲測(cè)距傳感器測(cè)距、舵機(jī)旋轉(zhuǎn)、燈條閃爍邏輯、語(yǔ)音報(bào)警模塊、主控板與語(yǔ)音模塊的串口通信。

系統(tǒng)的流程圖如圖1所示。

1.2 主要設(shè)備介紹

1.2.1 Arduinomega2560

Arduino是一款便捷靈活、方便上手的開(kāi)源電子原型平臺(tái)[2],如圖2所示。包含硬件(各種型號(hào)的Arduino板)和軟件(Arduino IDE)。Arduino能通過(guò)各種各樣的傳感器來(lái)感知環(huán)境,通過(guò)控制燈光、馬達(dá)和其他的裝置來(lái)反饋、影響環(huán)境。板子上的微控制器可以通過(guò)Arduino的編程語(yǔ)言來(lái)編寫(xiě)程序,編譯成二進(jìn)制文件,燒錄進(jìn)微控制器。同時(shí)其軟件平臺(tái)的高級(jí)設(shè)計(jì)語(yǔ)言是基于c語(yǔ)言開(kāi)發(fā)的,非常利于開(kāi)發(fā)者快速學(xué)習(xí)和開(kāi)發(fā)。同時(shí)其開(kāi)源平臺(tái)里有豐富的庫(kù)可用,降低了編程的難度,并提高了本項(xiàng)目的可行性。

1.2.2 超聲波探測(cè)頭

超聲波模塊是一個(gè)用來(lái)測(cè)量距離的電子模塊,如圖3 所示。本項(xiàng)目采用的超聲模塊有如下參數(shù)特性:工作電壓: 5V DC,工作溫度:-25~+80℃,測(cè)量角度:30度范圍內(nèi),測(cè)量范圍:3-400cm(誤差小于1cm),超聲波頻率:42kHz,控制方式:?jiǎn)螖?shù)字口控制。

根據(jù)其參數(shù)特性我們能夠看到,它的測(cè)量角度難以完成對(duì)“視角盲區(qū)”的全部覆蓋,所以搭載舵機(jī)模塊非常有必要。同時(shí)其的探測(cè)距離是3~400cm,在實(shí)際的使用是非常適合的。

1.2.3 舵機(jī)

本設(shè)計(jì)實(shí)用的舵機(jī)型號(hào)是MEDS15,如圖4。相對(duì)于市面上最便宜的9g小舵機(jī),雖然旋轉(zhuǎn)功能二者都可以實(shí)現(xiàn),但是實(shí)踐設(shè)計(jì)過(guò)程中發(fā)現(xiàn),9g小舵機(jī)的舵機(jī)臂固定超聲模塊非常不穩(wěn)定,而這一款舵機(jī)的舵機(jī)臂有一個(gè)常見(jiàn)尺寸的螺絲口,非常容易進(jìn)行結(jié)構(gòu)上的拓展,如圖5所示。

1.2.4 燈條

針對(duì)燈光閃爍預(yù)警模塊,這里簡(jiǎn)單的LED燈閃爍顯然報(bào)警效果太差,所以這里我們采用的是多個(gè)RGB燈串聯(lián)而組成的燈條,如圖6所示。

1.2.5 語(yǔ)音模塊

語(yǔ)音模塊采用的是外包公司基于固定語(yǔ)料庫(kù)開(kāi)發(fā)的獨(dú)立智能語(yǔ)音模塊,如圖7所示。該模塊本身是為語(yǔ)音處理所進(jìn)行量身剪裁的處理芯片,因此從概念上,語(yǔ)音模塊(語(yǔ)音處理芯片和喇叭)雖然也是作為“外設(shè)”,但是與上面給出的外設(shè)是有一些區(qū)別的。

1.2.6 串口通信、上位機(jī)、下位機(jī)簡(jiǎn)介

上文提到,語(yǔ)音模塊是一個(gè)獨(dú)立的處理芯片,為其獨(dú)立供電時(shí),它可以進(jìn)行固定詞條的識(shí)別和反饋發(fā)聲。加上控制燈條、舵機(jī)、超聲模塊的主控arduino處理芯片,因此在本設(shè)計(jì)中,有兩個(gè)處理器,這就存在處理芯片之間的通信邏輯的實(shí)現(xiàn)以及二者“地位”的關(guān)系,作為要控制燈條、舵機(jī)、超聲模塊、語(yǔ)音模塊的主控板arduino,它是上位機(jī),而語(yǔ)音模塊僅僅是用于接收通信信號(hào)之后,完成特定的預(yù)警輸出,因此它是一個(gè)下位機(jī)。而兩個(gè)處理器都支持統(tǒng)一的串口通信標(biāo)準(zhǔn),因此他們之間的信號(hào)傳輸通過(guò)串口通信協(xié)議實(shí)現(xiàn)即可[3]。上下位機(jī)組合圖如圖8所示。

2 系統(tǒng)實(shí)現(xiàn)

對(duì)照上文給出的模塊功能的分類(lèi),下面依次進(jìn)行模塊化的邏輯過(guò)程設(shè)計(jì)。

2.1 超聲模塊

上文提到,arduino開(kāi)發(fā)資源豐富,針對(duì)超聲模塊,本設(shè)計(jì)的arguinomega2560開(kāi)發(fā)板自帶了常用的模塊函數(shù)庫(kù),針對(duì)超聲模塊,直接調(diào)用函數(shù)即可返回測(cè)距結(jié)果。獨(dú)立模塊的測(cè)試參考如下[4]:

#include"MeMegaPi.h"

#include

#include

MeUltrasonicSensorultraSensor(PORT_8);

void setup(){

Serial.begin(9600);

}

void loop(){

Serial.print("Distance:");

Serial.print(ultraSensor.distanceCm());

Serial.println("cm");

delay(100);

}

2.2 舵機(jī)旋轉(zhuǎn):

舵機(jī)模塊的功能設(shè)計(jì)很簡(jiǎn)單,為了能夠讓其搭載的超聲模塊掃描身后180°的視野盲區(qū),設(shè)計(jì)舵機(jī)有如下的邏輯:

While(1){

舵機(jī)臂轉(zhuǎn)動(dòng)到0°處;

延時(shí)1秒;

舵機(jī)臂轉(zhuǎn)動(dòng)到90°處;

延時(shí)1秒;

舵機(jī)臂轉(zhuǎn)動(dòng)到180°處;

延時(shí)1秒

}

通過(guò)這樣一個(gè)簡(jiǎn)單的算法設(shè)計(jì),我們就能夠保證超聲模塊一直在做周期性的等時(shí)間間距的掃描動(dòng)作。關(guān)于舵機(jī)的驅(qū)動(dòng)程序的設(shè)計(jì)此處略去,主函數(shù)程序如下:

voidloop(){

servo_6_1.write(0);

_delay(1);

servo_6_1.write(90);

_delay(1);

servo_6_1.write(180);

delay(1);

_loop();

}

2.3 燈條閃爍邏輯

考慮到預(yù)警效果,這里燈條的閃爍邏輯為紅燈并且間隔延時(shí)較短。定義Dis是當(dāng)前時(shí)間超聲探頭模塊返回的障礙物距離,單位是厘米。

Void LightWarning()

If(Dis < 250){//后方障礙物距離小于2.5m,有追尾危險(xiǎn),開(kāi)始燈光報(bào)警

燈條各燈的RGB參數(shù)設(shè)置成(255, 0 ,0);

延時(shí)0.2s;

燈條各燈的RGB參數(shù)設(shè)置成(0,0,0);//達(dá)到閃爍效果

延時(shí)0.2s;

}

燈條驅(qū)動(dòng)程序細(xì)節(jié)略去,主程序如下:

void LightWarning(){

rgbled_6_2.setColor(0,255,0,0);

rgbled_6_2.show();

_delay(0.2);

gbled_6_2.setColor(0,0,0,0);

rgbled_6_2.show();

_delay(0.2);

_loop();

}

2.4 語(yǔ)音報(bào)警模塊

上文提及,該模塊是基于語(yǔ)料庫(kù)的外包處理器,使能夠單獨(dú)工作的。其能夠完成固定詞條的識(shí)別、對(duì)應(yīng)反饋文本的語(yǔ)音輸出,在這個(gè)設(shè)計(jì)中,我們只需要它的文本轉(zhuǎn)語(yǔ)音功能,以提示使用本設(shè)計(jì)的自電動(dòng)車(chē)、摩托車(chē)車(chē)主尾部存在追尾危險(xiǎn)。

語(yǔ)音模塊內(nèi)部實(shí)現(xiàn)了一個(gè)語(yǔ)音相關(guān)功能的指令協(xié)議,針對(duì)本設(shè)計(jì)所需要的功能,如下指令有關(guān):

@TextToSpeech#文本$

對(duì)該指令進(jìn)行簡(jiǎn)要的說(shuō)明”@”、“#”、“$”均為指令的控制符,用于指令編譯使用。TextToSpeech是關(guān)鍵字,表示這一條指令的功能是將文本轉(zhuǎn)化成語(yǔ)音。而想要轉(zhuǎn)換的具體的文字就在“文本”中體現(xiàn)。其工作模式是,語(yǔ)音模塊在通電之后自動(dòng)從串口中讀取字符串指令,當(dāng)遇到“$”控制符,完成一條指令的讀取,然后語(yǔ)音模塊中集成的編譯器對(duì)指令進(jìn)行解讀,將其轉(zhuǎn)化成可執(zhí)行代碼,然后執(zhí)行。

將語(yǔ)音模塊與PC進(jìn)行連接,打開(kāi)串口。

2.5 主控板與語(yǔ)音模塊的串口通信

對(duì)照上文給出的數(shù)據(jù)流圖,arduino作為探測(cè)傳感并發(fā)出控制指令的上位機(jī),在探測(cè)到障礙物距離過(guò)近的時(shí)候,將發(fā)送控制指令給串口,語(yǔ)音模塊下位機(jī)將自動(dòng)讀取串口中的數(shù)據(jù)并執(zhí)行指令[5]。算法偽代碼如下:

上位機(jī):

Void SpeechWarning()

Begin:

超聲探測(cè)模塊探測(cè),返回給整型變量Dis;

If(Dis < 250)//超聲模塊返回值單位是cm

Serial.print(“@TexttoSpeech#正前方/左后方/右后方存在障礙!$”);

End;

2.6 模塊綜合

分別完成各個(gè)模塊的獨(dú)立調(diào)試后,需要完成對(duì)各個(gè)模塊的連接工作,參照上文給出的數(shù)據(jù)流圖,本設(shè)計(jì)總的邏輯設(shè)計(jì)如下:

Void Solve(){

If(Dis > 250) retrun;

Else {

SpeechWarning();

LightWarning();

}

}

While(通電){

舵機(jī)旋轉(zhuǎn)到0°;

Dis = getDistance();

Solve();

Delay(1500);

舵機(jī)旋轉(zhuǎn)到90°;

Dis = getDistance();

Solve();

Delay(1500);

舵機(jī)旋轉(zhuǎn)到180°;

Dis = getDistance();

Solve();

Delay(1500);

}

3 結(jié)束語(yǔ)

通過(guò)上述設(shè)計(jì)與實(shí)現(xiàn),完成電動(dòng)車(chē)與摩托車(chē)后置安全的報(bào)警功能。本設(shè)計(jì)的優(yōu)點(diǎn)與創(chuàng)新主要有以下兩點(diǎn):

1) 采用聲音和語(yǔ)音報(bào)警模塊相結(jié)合的方式,對(duì)使用者后車(chē)體尾部的車(chē)進(jìn)行的雙向報(bào)警,這樣的模式能夠大大鏟除潛在危機(jī)。

2) 本設(shè)計(jì)將超聲模塊搭載在舵機(jī)上的創(chuàng)意思維,將超聲測(cè)距模塊的掃描范圍覆蓋了尾部的180°視野盲區(qū),這樣做能夠再次降低危險(xiǎn)發(fā)成的概率。

該系統(tǒng)當(dāng)前階段的缺陷在于,系統(tǒng)的穩(wěn)定性有待于進(jìn)一步測(cè)試和改善,在以后的升級(jí)過(guò)程中,將考慮主控模塊、芯片的進(jìn)一步裁剪工作。

參考文獻(xiàn):

[1] 熊和金.一種電動(dòng)車(chē)安全行駛的智能聲光報(bào)警裝置[P].實(shí)用新型專(zhuān)利:CN201521074280.7,2016.07.06.

[2] Makeblock硬件官方參數(shù)參考表目.http://learn.makeblock.com/cn/megapi/,2017,2.

[3] 趙司琦,俞繼偉,王廣田,謝怡寧.基于Arduino的Tennsy BadUSB改良型共享云盾的設(shè)計(jì)與研究[J].電腦知識(shí)與技術(shù),2017(36):36-38+45.

[4] Wolfram Donat .Chaim Krause. Learn Raspberry PiProgramming with Python[M].韓德強(qiáng)譯.北京:機(jī)械工業(yè)出版社,2017.

[5] 章杰瑞,周屹.基于Arduino和PIC單片機(jī)智能小車(chē)平臺(tái)的研究與設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2017(29):187-190.

【通聯(lián)編輯:梁書(shū)】

猜你喜歡
串口通信上位機(jī)
基于Qt和Flash的嵌入式Linux軟件架構(gòu)設(shè)計(jì)
延川县| 泸溪县| 乐平市| 临泉县| 江达县| 桦南县| 临洮县| 屏南县| 龙江县| 金湖县| 冕宁县| 屯门区| 九台市| 辰溪县| 安多县| 米易县| 三穗县| 呼图壁县| 夏邑县| 宝兴县| 茂名市| 进贤县| 明水县| 札达县| 赣榆县| 达州市| 乐平市| 炉霍县| 闻喜县| 德格县| 涿州市| 得荣县| 黔南| 霞浦县| 合阳县| 岳普湖县| 衢州市| 宁远县| 胶州市| 平阳县| 临漳县|