李 棚 ,孔 健 ,項(xiàng)莉萍
(1.六安職業(yè)技術(shù)學(xué)院 信息與電子工程學(xué)院,安徽 六安237100;2.合肥幼兒師范高等專(zhuān)科學(xué)校 學(xué)前教育系,安徽 合肥230011)
智能車(chē)創(chuàng)客教育平臺(tái)是一款涉及到電子、機(jī)械、工程、軟件等技術(shù)的復(fù)合型平臺(tái),該平臺(tái)在教育領(lǐng)域擁有十分巨大的教育價(jià)值,在培養(yǎng)學(xué)生分析能力、創(chuàng)造能力和實(shí)踐能力等方面具有重要的現(xiàn)實(shí)意義[1].隨著科技的進(jìn)步,國(guó)內(nèi)市場(chǎng)推出了眾多的科技教育平臺(tái),這些平臺(tái)逐漸進(jìn)入到學(xué)校實(shí)驗(yàn)室、培訓(xùn)機(jī)構(gòu)和部分家庭,提高了對(duì)智能控制技術(shù)的認(rèn)知度和認(rèn)可度[2].由于涉及到商業(yè)利益的存在,各大公司開(kāi)發(fā)的教育平臺(tái),存在封裝嚴(yán)密、開(kāi)放性不足,結(jié)構(gòu)獨(dú)特、通用性不足,價(jià)格昂貴、親民性不足[3-4].筆者借助開(kāi)源軟件及硬件,構(gòu)建智能車(chē)創(chuàng)客教育平臺(tái),以友好的界面、開(kāi)放的接口、優(yōu)質(zhì)延續(xù)性、親民的價(jià)格,服務(wù)于中國(guó)青少年創(chuàng)客教育.
采用Arduino板作為智能車(chē)的控制核心,藍(lán)牙模塊通過(guò)串口實(shí)現(xiàn)信息的傳輸,通過(guò)電機(jī)控制模塊實(shí)現(xiàn)對(duì)電機(jī)的控制,控制Led燈模擬車(chē)燈和控制蜂鳴器鳴叫模擬車(chē)輛的鳴笛(見(jiàn)圖1).Arduino板是由米蘭交互設(shè)計(jì)學(xué)院David C和Massimo B設(shè)計(jì),于2005年推出基于開(kāi)放原始代碼的Simple I/O平臺(tái).該平臺(tái)的硬件采用AVR單片機(jī)制作開(kāi)源的、通用的開(kāi)發(fā)板,經(jīng)過(guò)多年的積累,已經(jīng)實(shí)現(xiàn)多版本、多系列、多應(yīng)用的公共平臺(tái)(見(jiàn)圖2)[5].軟件采用 Arduino IDE編譯器,該編譯器具有類(lèi)似 Java、C語(yǔ)言的開(kāi)發(fā)環(huán)境,可以快速使用Arduino語(yǔ)言與Flash、Processing、Android等軟件完成互動(dòng)作品設(shè)計(jì).
圖1 智能車(chē)硬件平臺(tái)結(jié)構(gòu)圖
圖2 MX1508電機(jī)驅(qū)動(dòng)模塊
硬件平臺(tái)的關(guān)鍵點(diǎn)在于對(duì)智能車(chē)電機(jī)的驅(qū)動(dòng),采用MX1508(SOP-16)四通道雙路有刷直流馬達(dá)驅(qū)動(dòng)芯片.該芯片的IC電路內(nèi)部集成了兩通道的H橋驅(qū)動(dòng)電路,具備從2 V到9.6 V較寬的工作電壓,最大持續(xù)輸出電流達(dá)到0.8 A,最大峰值輸出電流達(dá)到1.5 A.最大持續(xù)輸出電流達(dá)到1.5 A,最大峰值輸出電流達(dá)到2 A,能夠滿(mǎn)足2驅(qū)動(dòng)或4驅(qū)動(dòng)智能車(chē)的多個(gè)方向變速運(yùn)動(dòng).
為了降低青少年學(xué)習(xí)編程技術(shù)的入門(mén)難度,平臺(tái)采用Arduino Block編程軟件和App Inventor 2編程軟件.這兩種編程軟件,都采用圖形化、模塊化編程,通過(guò)搭積木的形式實(shí)現(xiàn)軟件程序的編寫(xiě)[6-7].青少年可以通過(guò)智能車(chē)創(chuàng)客教育平臺(tái)提供的學(xué)習(xí)輔導(dǎo)資料,快速的學(xué)習(xí)硬件控制程序開(kāi)發(fā)、App應(yīng)用開(kāi)發(fā),將自己的創(chuàng)意變成現(xiàn)實(shí)(見(jiàn)圖3).
圖3 智能車(chē)創(chuàng)客教育平臺(tái)系統(tǒng)框圖
采用智能車(chē)創(chuàng)客教育平臺(tái),通過(guò)圖形化編程軟件編寫(xiě)相關(guān)的App控制界面和下位機(jī)驅(qū)動(dòng)程序,在智能車(chē)平臺(tái)上實(shí)語(yǔ)音控制、加速度控制、按鍵控制,共3種控制模式,實(shí)現(xiàn)車(chē)燈、鳴笛、停止、前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、速度,共8種狀態(tài)的切換.
程序設(shè)計(jì)采用3位數(shù)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行車(chē)輛狀態(tài)控制,百位為功能狀態(tài),1為運(yùn)動(dòng)功能,2為速度功能,3為車(chē)輛輔助功能.個(gè)位為狀態(tài)參數(shù),在運(yùn)動(dòng)功能條件下,0為停止?fàn)顟B(tài),1為前進(jìn)狀態(tài),2為后退狀態(tài),3為左轉(zhuǎn)狀態(tài),4為右轉(zhuǎn)狀態(tài);在速度功能下,10~99是速度控制參數(shù);在車(chē)輛輔助功能下,1位車(chē)燈控制狀態(tài),2位鳴笛控制狀態(tài)(見(jiàn)圖4).
圖4 智能車(chē)控制平臺(tái)軟件流程圖
下位機(jī)接收到串口數(shù)據(jù)后,便通過(guò)對(duì)該數(shù)據(jù)的取模和求商獲得百位和個(gè)位的參數(shù),根據(jù)相應(yīng)的功能參數(shù)和狀態(tài)參數(shù),實(shí)現(xiàn)相應(yīng)的控制模式.圖5為串口數(shù)據(jù)的讀取與解析.
圖5 智能車(chē)平臺(tái)及Arduino Block串口數(shù)據(jù)數(shù)據(jù)處理流程
Arduino Block軟件采用模塊化結(jié)構(gòu),將串口數(shù)據(jù)的讀取進(jìn)行模塊化,只需要設(shè)置一個(gè)Num_serial變量,便可以將串口數(shù)據(jù)讀入到變量中.通過(guò)給模擬量賦值模塊,將串口Num_serial數(shù)據(jù)對(duì)100進(jìn)行除法運(yùn)算,獲得百位的數(shù)字,賦值給Functio變量,作為智能車(chē)功能控制判斷依據(jù).將串口Num_serial數(shù)據(jù)對(duì)100進(jìn)行求余運(yùn)算,獲得后兩位數(shù)據(jù),將后兩位數(shù)據(jù)賦值給Parameter變量,作為智能車(chē)運(yùn)動(dòng)狀態(tài)的判讀依據(jù).
手機(jī)與智能車(chē)進(jìn)行通信時(shí),安卓程序首先要進(jìn)行藍(lán)牙連接,在藍(lán)牙連接的基礎(chǔ)上進(jìn)行后續(xù)控制.其中,姿態(tài)控制與觸摸控制及語(yǔ)音控制為互鎖狀態(tài)的,即一旦姿態(tài)控制起作用的時(shí)候,語(yǔ)音識(shí)別和觸摸控制將失效,程序流程見(jiàn)圖6.
圖6 智能車(chē)安卓控制程序流程圖
姿態(tài)控制根據(jù)手機(jī)獲取的X,Y,Z三坐標(biāo)的值進(jìn)行車(chē)輛運(yùn)行狀態(tài)控制,為了減小控制誤差,將檢測(cè)數(shù)據(jù)放大10倍.當(dāng)X方向數(shù)據(jù)在-20~+20之間時(shí),為靜止?fàn)顟B(tài),向串口發(fā)送100數(shù)據(jù),實(shí)現(xiàn)車(chē)輛的停止控制;當(dāng)X方向數(shù)據(jù)大于20時(shí),為左傾狀態(tài),向串口發(fā)送103數(shù)據(jù),實(shí)現(xiàn)車(chē)輛左轉(zhuǎn);當(dāng)X方向數(shù)據(jù)小于-20時(shí),為右傾狀態(tài),向串口發(fā)送104數(shù)據(jù),實(shí)現(xiàn)車(chē)輛的右轉(zhuǎn);當(dāng)Y方向數(shù)據(jù)大于20時(shí),為后仰狀態(tài),向串口發(fā)送102數(shù)據(jù),實(shí)現(xiàn)車(chē)輛的后退;當(dāng)Y方向數(shù)據(jù)小于-20時(shí),為前仰狀態(tài),向串口發(fā)送101數(shù)據(jù),實(shí)現(xiàn)車(chē)輛的前進(jìn).手機(jī)的語(yǔ)音識(shí)別借助第三方插件,進(jìn)行語(yǔ)音識(shí)別,將識(shí)別的語(yǔ)音轉(zhuǎn)換成相關(guān)數(shù)據(jù),其中識(shí)別出來(lái)的“向前”轉(zhuǎn)換為“101”,“向后”轉(zhuǎn)換為“102”,“左轉(zhuǎn)”轉(zhuǎn)換為“103”,“右轉(zhuǎn)”轉(zhuǎn)換為“104”,然后,將相應(yīng)的數(shù)據(jù)通過(guò)串口發(fā)送出去,實(shí)現(xiàn)對(duì)車(chē)輛狀態(tài)的控制.
圖7 App Inventor 2編寫(xiě)界面及藍(lán)牙連接程序
采用App Inventor 2軟件編寫(xiě)前臺(tái)操作界面和后臺(tái)操作程序(見(jiàn)圖7).通過(guò)拖動(dòng)模塊及按鈕創(chuàng)建控制界面,使用程序模塊疊加實(shí)現(xiàn)控制程序的編寫(xiě).編寫(xiě)藍(lán)牙連接程序時(shí),控制界面上只需要一個(gè)“連接”按鈕,當(dāng)該按鈕被點(diǎn)擊后,根據(jù)按鈕上顯示文本進(jìn)行藍(lán)牙設(shè)備的狀態(tài)切換.當(dāng)顯示為“連接”時(shí),讓藍(lán)牙客戶(hù)端連接設(shè)備的參數(shù)地址為“選擇設(shè)備的選中項(xiàng)”,同時(shí)按鈕顯示字符為“斷開(kāi)”;當(dāng)顯示為“斷開(kāi)”時(shí)點(diǎn)擊按鈕,調(diào)用 “藍(lán)牙客戶(hù)端斷開(kāi)已連接設(shè)備”模塊,完成藍(lán)牙的斷開(kāi),同時(shí)按鈕顯示字符為“連接”.
智能車(chē)創(chuàng)客教育平臺(tái)可以作為青少年創(chuàng)客教育的綜合實(shí)訓(xùn)平臺(tái),該平臺(tái)滿(mǎn)足模塊化Arduino Block軟件、App Inventor 2軟件的編程教學(xué),通過(guò)這兩種模塊化的語(yǔ)言學(xué)習(xí)能夠降低控制語(yǔ)言的難度,增強(qiáng)青少年學(xué)習(xí)樂(lè)趣,掌握從移動(dòng)端到控制端的創(chuàng)客類(lèi)編程技術(shù).該創(chuàng)客教育平臺(tái)的軟硬件均具有開(kāi)源性,能夠作為后續(xù)高級(jí)編程語(yǔ)言學(xué)習(xí)的平臺(tái),價(jià)格適中,更能滿(mǎn)足廣泛的群體需求,進(jìn)而全面普及青少年創(chuàng)客教育.
[1]葛艷紅.基于物聯(lián)網(wǎng)的教育機(jī)器人關(guān)鍵技術(shù)研究[D].武漢:武漢理工大學(xué),2013:1.
[2]張劍平,王益.機(jī)器人教育:現(xiàn)狀、問(wèn)題與推進(jìn)策略[J].中國(guó)電化教育,2006(12):65-68.
[3]沈聰.基于創(chuàng)客教育理念的機(jī)器人教學(xué)模式初探[J].中國(guó)信息技術(shù)教育,2017(7):111-112.
[4]郭瀚成.淺析機(jī)器人與創(chuàng)客教育[J].中國(guó)信息技術(shù)教育,2017(2):106-108.
[5]胡洪鈞,肖順根.Arduino 教學(xué)實(shí)驗(yàn)箱設(shè)計(jì)與實(shí)驗(yàn)項(xiàng)目開(kāi)發(fā)[J].新鄉(xiāng)學(xué)院學(xué)報(bào),2017,34(3):70-73.
[6]田志穎.基于Android的移動(dòng)學(xué)習(xí)軟件設(shè)計(jì)與實(shí)現(xiàn)[D].曲阜:曲阜師范大學(xué),2016.
[7]高成英.項(xiàng)目教學(xué)法應(yīng)用于《App Inventor程序設(shè)計(jì)》教學(xué)[J].教育,2015(29):23-27.
韶關(guān)學(xué)院學(xué)報(bào)2018年3期