牟曉東
1.實(shí)驗(yàn)?zāi)康?/b>
在樹(shù)莓派上搭載超聲波傳感器、顯示屏等外設(shè),通過(guò)古德微“積木”編程實(shí)現(xiàn)對(duì)行車前方的障礙物進(jìn)行距離實(shí)時(shí)測(cè)量與警示的“行車?yán)走_(dá)”功能。超聲波傳感器將測(cè)量的距離值傳給樹(shù)莓派,樹(shù)莓派將數(shù)值顯示到屏上,如果該距離到達(dá)設(shè)定的“危險(xiǎn)”值(比如6cm),則顯示“危險(xiǎn)!危險(xiǎn)!”的警示信息,同時(shí)LED燈也進(jìn)行閃爍報(bào)警。
2.實(shí)驗(yàn)器材及連接
器材清單:樹(shù)莓派3B+(帶電源線)一塊,古德微擴(kuò)展板一塊,HC-SR04超聲波傳感器一個(gè),OLED顯示屏一個(gè),LED燈一支,聯(lián)網(wǎng)電腦一臺(tái)。
HC-SR04超聲波傳感器包括發(fā)射和接收兩個(gè)探頭,工作原理類似于蝙蝠的飛行覓食過(guò)程:發(fā)射出超聲波遇到前方障礙物后發(fā)生反射,反射波被接收端檢測(cè)到并根據(jù)發(fā)送與接收的時(shí)間差來(lái)計(jì)算出與障礙物間的距離。
首先將古德微擴(kuò)展板帶卡槽的一側(cè)對(duì)準(zhǔn)樹(shù)莓派40Pin引腳,注意從四周均勻用力下壓,以免對(duì)引腳和電路板造成損傷;HC-SR04超聲波傳感器有四個(gè)引腳,根據(jù)標(biāo)注(VCC、Trig、Echo和GND)判斷方向,輕輕插入至擴(kuò)展板20和21處的四個(gè)引腳;然后,將OLED顯示屏小心插入擴(kuò)展板內(nèi)側(cè)的I2C接口(標(biāo)注有“Up”列),同樣也要注意OLED顯示屏的四個(gè)引腳(VCC、GND、SCL和SDA)必須與擴(kuò)展板的四個(gè)引腳(VCC、GND、CLK和DATA)一一對(duì)應(yīng);接著,將LED燈插入5號(hào)引腳,長(zhǎng)腿為正極、短腿為負(fù)極;最后,給樹(shù)莓派接通電源,啟動(dòng)操作系統(tǒng)(如圖1)。
3.實(shí)驗(yàn)步驟
(1)登錄古德微機(jī)器人平臺(tái)進(jìn)行“連接設(shè)備”
在瀏覽器中訪問(wèn)古德微機(jī)器人平臺(tái)(http://www.gdwrobot.cn/),輸入賬號(hào)和密碼進(jìn)入“積木”編程區(qū);接著點(diǎn)擊“連接設(shè)備”按鈕,如果樹(shù)莓派已經(jīng)正常啟動(dòng)的話,此時(shí)會(huì)彈出“服務(wù)器連接已經(jīng)建立”等五個(gè)綠色對(duì)鉤提示,并且會(huì)顯示出內(nèi)網(wǎng)連接IP地址(如圖2),說(shuō)明樹(shù)莓派與古德微網(wǎng)站已經(jīng)“對(duì)接”成功。
(2)超聲波傳感器部分代碼
將超聲波傳感器檢測(cè)到的距離值顯示在LOG編程調(diào)試區(qū)。
首先從“循環(huán)”區(qū)拖動(dòng)建立一個(gè)“重復(fù)當(dāng)‘真執(zhí)行”的積木語(yǔ)句塊;接著建立一個(gè)名為“dis”的變量,賦值為“智能硬件→常用→超聲波測(cè)距”;然后使用“輸出調(diào)試信息”語(yǔ)句進(jìn)行輸出,同時(shí)借助“數(shù)學(xué)→四舍五入”對(duì)dis變量進(jìn)行保留一位小數(shù)的處理(單位是cm);最后,添加一條“等待0.3秒”的時(shí)間等待,點(diǎn)擊“運(yùn)行”按鈕(如圖3)。此時(shí),隨著超聲波傳感器前障礙物的靠近和遠(yuǎn)離移動(dòng),LOG顯示區(qū)每隔0.3秒就顯示出一個(gè)數(shù)值:6.0、10.0、22.0、9.0……
(3)OLED顯示屏部分代碼
在OLED顯示屏上顯示超聲波傳感器的測(cè)距值或提示“危險(xiǎn)”。
OLED顯示屏在進(jìn)行顯示時(shí)需要調(diào)用相關(guān)的語(yǔ)句進(jìn)行初始化,比如“初始化OLED顯示屏,設(shè)備型號(hào)為‘ssd1306”;接著,建立一個(gè)名為“圖片對(duì)象”的變量,設(shè)置好對(duì)應(yīng)的圖片模式為RGB;然后,為圖片對(duì)象添加顯示內(nèi)容為:“測(cè)距:”+“dis的四舍五入值”+“cm”,同時(shí)設(shè)置其大小為16號(hào)、顯示坐標(biāo)為(10,20);最后,添加一個(gè)“如果dis小于等于6,則執(zhí)行顯示‘危險(xiǎn)!危險(xiǎn)!信息”選擇分支語(yǔ)句。運(yùn)行程序進(jìn)行測(cè)試,隨著障礙物距離的不同,在OLED顯示屏上會(huì)有測(cè)距值或“危險(xiǎn)”提示信息的出現(xiàn)(如圖4)。
(4)LED燈部分代碼
當(dāng)檢測(cè)距離值小于等于6cm時(shí),LED燈閃爍。
這一步非常簡(jiǎn)單,而且到上一步已經(jīng)基本實(shí)現(xiàn)了“行車?yán)走_(dá)”的主要功能。在選擇分支結(jié)構(gòu)中,添加一個(gè)“重復(fù)3次執(zhí)行”的循環(huán)結(jié)構(gòu),依次使用“控制5號(hào)小燈亮”、“等待0.1秒”和“控制5號(hào)小燈滅”語(yǔ)句來(lái)實(shí)現(xiàn)LED燈的三次閃爍(如圖5)。
(5)程序的保存與運(yùn)行
程序編寫完畢后,點(diǎn)擊“保存”按鈕并進(jìn)行運(yùn)行測(cè)試,結(jié)果與預(yù)期的完全一致。
4.實(shí)驗(yàn)改進(jìn)與設(shè)想
(1)LED燈的閃爍頻率是固定的,可嘗試通過(guò)建立閃爍等待時(shí)間變量與障礙物距離的關(guān)系公式,實(shí)現(xiàn)與障礙物的間距越近,LED燈的閃爍頻率越快(類似于真實(shí)倒車?yán)走_(dá)的不同頻率的“嘀嘀”報(bào)警聲)。
(2)加入多支LED燈,組成微型“呼吸”式燈帶,動(dòng)態(tài)顯示測(cè)距值的大小范圍。
(3)加入蜂鳴器,進(jìn)行不同頻率鳴叫的報(bào)警;或者接入音箱,根據(jù)不同的測(cè)距值進(jìn)行語(yǔ)音播報(bào)式報(bào)警。
(4)配合搭載有馬達(dá)和車輪的拓展包,當(dāng)測(cè)距值接近于設(shè)置的最低危險(xiǎn)值(比如4cm),控制馬達(dá)立刻停轉(zhuǎn)或是反向小幅度旋轉(zhuǎn),杜絕“撞墻”事故。
(5)如果有兩套樹(shù)莓派+古德微擴(kuò)展板+超聲波傳感器+攝像頭+馬達(dá)+車輪的套件,就可以實(shí)現(xiàn)按地面實(shí)線行走,前后兩個(gè)超聲波傳感器共同動(dòng)態(tài)測(cè)距前提下,同時(shí)控制前后兩組馬達(dá)車輪,不管是前行還是倒車,均能實(shí)現(xiàn)OLED顯示屏實(shí)時(shí)顯示及LED燈光報(bào)警,且前后均不會(huì)產(chǎn)生碰撞。