祝洲杰,甘 偉,黃 暢,胡章豪,馮晨韜
(浙江機電職業(yè)技術(shù)學(xué)院,杭州 310053)
近年來,隨著信息技術(shù)和人工智能技術(shù)的飛速發(fā)展,國家對于青少年的科技智能教育越來越重視[1],明確指出要從中小學(xué)階段開始設(shè)置人工智能相關(guān)課程,逐步推廣編程教育,建設(shè)人工智能學(xué)科,培養(yǎng)復(fù)合型人才,因而基于青少年的編程、信息化教育在近幾年呈現(xiàn)出日漸火爆的趨勢。
與成年教育不同,青少年教育如何在教學(xué)過程和教學(xué)載體中重視趣味性、階段目標和項目的易實現(xiàn)性,從而克服編程及信息化教學(xué)中的難點和枯燥是非常重要的[2]。一款好的科教機器人可以兼顧機器人結(jié)構(gòu)設(shè)計、搭建和編程學(xué)習,能及時在教學(xué)中提供趣味性和階段反饋,是非常重要的教學(xué)載體。
目前中國的青少年機器及編程學(xué)習采用的基本為依托Lego、MakeBlock 為代表的成熟體系和以Scratch、Python 為代表的編程兩方面[3],前者以積木式圖形化編程為主,教學(xué)載體較封閉,開放性不足,因而教學(xué)項目往往局限于避障、循跡、走線等基本的機器人功能和編程思維,對于新功能的開發(fā)、創(chuàng)造和編程實現(xiàn)則涉足較少;后者則基本以設(shè)計游戲作為趣味點,主要為電腦端操作,實體的教學(xué)載體較少,而目前能兼顧兩者教學(xué)特點的自主研發(fā)教學(xué)載體并不多。
針對上述現(xiàn)狀和問題,設(shè)計和研發(fā)了一款小型模塊化多功能科教機器人,該機器人充分考慮了“STEM”的教育理念,在結(jié)構(gòu)上可適配多種模塊,且選用開放平臺,能在實現(xiàn)常用功能的基礎(chǔ)上,為新功能的開發(fā)和創(chuàng)新提供便利;另一方面,也能兼顧編程思維和代碼學(xué)習,為編程學(xué)習提供實感的教學(xué)反饋,是將兩方面教學(xué)特點結(jié)合較好的教學(xué)載體。
考慮到該移動機器人的設(shè)計初衷是青少年可以模塊化搭接并實現(xiàn)各種外擴功能的學(xué)習和研究載體,并能兼容Scratch類型的積木式圖形化編程和常規(guī)代碼編程。因而在方案設(shè)計時,為其設(shè)定的目標是:(1)功能模塊搭建需簡單,不使用焊接或特殊接頭等不便于快速搭建的方式,在搭建時只需簡單插接即可完成功能系統(tǒng)。除此之外,還需要考慮和現(xiàn)有成熟體系模塊的兼容性;(2)控制系統(tǒng)開放性強,便于實現(xiàn)更多的功能拓展訴求,交互性要好,同時還需要配套的軟件開發(fā)環(huán)境,能具備良好的功能模塊庫支持,并能支持形式較多樣的編程方式。
基于上述設(shè)定的目標,選擇在Arduino平臺架構(gòu)的基礎(chǔ)上設(shè)計搭建機器人系統(tǒng)。Arduino平臺的優(yōu)勢在于其硬件和軟件開發(fā)環(huán)境都是開源的,開放性好,功能拓展較簡單,與各類終端設(shè)備及功能模塊的對接方便,交互性強,很適合新功能的創(chuàng)新實現(xiàn)[4];而從軟件開發(fā)環(huán)境來說,Arduino 軟件開發(fā)環(huán)境既可以結(jié)合如ArduBlock等插件進行圖形化編程,也可以直接使用類似于Java、C 語言的Processing/Wiring 開發(fā)環(huán)境進行代碼編程,在功能的軟件實現(xiàn)上也比較符合需求。
在該移動機器人的功能設(shè)定方面,除了常規(guī)的系統(tǒng)控制、電機驅(qū)動、循線、避障功能之外,還從功能拓展性出發(fā),增加設(shè)計了抓取、搬運、書寫、噴水等動作模塊作為可選模塊。在這些功能的基礎(chǔ)上,還可以創(chuàng)新設(shè)計其他功能,使之能真正成為“STEM”教學(xué)中的良好載體。系統(tǒng)總體框圖如圖1所示。

圖1 系統(tǒng)總體框圖
在機器人的結(jié)構(gòu)設(shè)計上,由于外擴功能模塊眾多且不確定,為了兼顧教學(xué)的趣味性和搭建的方便,系統(tǒng)采用了各獨立模塊與主體小車自由聯(lián)接的結(jié)構(gòu)形式,且在各模塊聯(lián)接至主體時,設(shè)計了一種快換結(jié)構(gòu),效果示意如圖2所示。其中,主體小車與擴展功能模塊的接口處設(shè)計使用彈簧鎖聯(lián)接。當需要聯(lián)接時,只需在彈簧的作用下將鎖芯套入功能模塊內(nèi),起到定位鎖緊的作用;當需要松開功能模塊時,只需向外拉動鎖芯即可。這樣的形式可以使兩者在聯(lián)接過程中無需使用安裝工具,也不存在裝配的難度,適合學(xué)習和研究過程中的任意搭接。

圖2 快換結(jié)構(gòu)示意

圖3 便于外接Lego等搭建模塊的設(shè)計
除此之外,考慮到Lego和Makeblock等成熟體系中模塊在“STEM”教學(xué)中同樣承擔重要的載體作用,在該機器人上設(shè)計了相應(yīng)的適配位置和模塊,如圖3所示。這樣的模塊便于后續(xù)可以使用如Lego 等搭建模塊與主體聯(lián)接,實現(xiàn)更多樣的功能,使其具備更好的兼容性。
在硬件設(shè)計方面,如前文所述的方案設(shè)計,基于對各擴展功能模塊的硬件需求分析,選擇系統(tǒng)控制模塊以Arduino UNO作為主控單元,其核心是ATmega328-AU單片機,能滿足對大部分功能如紅外、超聲波傳感器及舵機等硬件的控制[5]。而電機的控制則需要附加相應(yīng)的擴展板作為電機驅(qū)動模塊,藍牙通訊和其余擴展功能模塊等也需要相應(yīng)地根據(jù)需求增加和擴展。
出于搭建便捷度的考慮,各模塊與主控單元的連接全部采用類似杜邦接頭的接插頭,在連接時只需確定接口完成接插即可,連接非常簡單方便。
針對機器人結(jié)構(gòu)和硬件的配套設(shè)計,可以大大降低搭建難度,減少常規(guī)組建硬件系統(tǒng)的繁復(fù)操作。比如,超聲波避障功能的搭接,只需將避障模塊通過快換完成與主體的搭接,并將信號線與相應(yīng)的接口完成插接即可,非常便于學(xué)習。
避障功能是移動機器人的常規(guī)功能之一,是通過超聲波傳感器來實現(xiàn)的。超聲波傳感器可實現(xiàn)前方障礙物的檢測,當小車到障礙物的距離達到設(shè)定距離時,超聲波傳感器測出距離值,進而小車實現(xiàn)停車或者轉(zhuǎn)向等避障活動[6]。
循跡功能也是移動機器人的常規(guī)功能之一,大多是通過紅外傳感器實現(xiàn)的。循跡模塊可以檢測到白底中的黑線,實現(xiàn)機器人沿黑線的前進、左右轉(zhuǎn)彎、停止等動作[7]。在本產(chǎn)品中,循跡模塊被設(shè)計成如圖4所示。與避障功能類似,只需將接插件插入主控板相應(yīng)位置即可。

圖4 循跡功能模塊

圖5 藍牙模塊控制
作為一款科教機器人,藍牙功能是必須的,這是完成Arduino 平臺和Android App 端的重要方式,Android App 端的引入可以為教學(xué)提供更好的反饋和趣味性。Arduino平臺適配的藍牙模塊使用非常普遍,如圖5所示,實現(xiàn)控制也較簡單。
抓取動作是展示機器人功能的最佳方式,在本產(chǎn)品中,抓手模塊與其余模塊一樣被設(shè)計成快換式,抓手的動作由舵機來驅(qū)動,舵機通過角度的變化來控制抓手的張開和閉合。Arduino 平臺對于舵機的支持較為豐富,因而安裝也較為簡單,只需將接插件插入主控板相應(yīng)位置即可。
搬運功能在本產(chǎn)品中展現(xiàn)為類似于叉車的抬升功能。從控制的實現(xiàn)來說,該功能的實現(xiàn)并不復(fù)雜,抬升和下降的動作由一臺電機控制螺桿正反轉(zhuǎn),從而使鏟板上升或下降即可。電機的控制與機器人本身的驅(qū)動輪一致,連接至擴展板的電機驅(qū)動模塊即可。
相比于上述的抓取和搬運功能,噴水功能屬于較創(chuàng)新的功能,該功能可向指定方向噴水。這個功能實現(xiàn)的關(guān)鍵是需要系統(tǒng)完成對氣泵的控制,如圖6 所示。對于 Arduino 平臺來說,氣泵電機的控制較簡單,只需將接插件插入主控板相應(yīng)位置即可。
諸如此類可開發(fā)的新功能還有很多,由于使用了開放性的平臺,使得該機器人可以作為功能拓展的良好載體。

圖6 Arduino的氣泵控制
由于使用的主控單元為Arduino UNO,因而上述機器人功能的實現(xiàn)即是通過Arduino的軟件開發(fā)環(huán)境來完成?;跈C器人的功能,軟件端程序分為Arduino 端程序和Android 端軟件。Android端軟件主要為藍牙模塊的通信和通過移動端進行機器人的控制。Arduino端程序則主要實現(xiàn)通過計算機完成圖形化編程或代碼編程,也是主要的學(xué)習工具。
Android端軟件主要是完成藍牙模塊的配對和控制。在機器人開啟的情況,藍牙模塊開始工作,進入控制界面后,執(zhí)行開啟藍牙的功能,使用Bluetooth Adapter.start-discover()方法命令手機端自動搜索周邊設(shè)備。同時桌面顯示出設(shè)備鏈表,用戶可以在設(shè)備鏈表中查看周邊可用的藍牙設(shè)備,選取移動機器人藍牙模塊對應(yīng)的藍牙設(shè)備名稱,創(chuàng)建Bluetooth-Socket 進行自主連接,創(chuàng)建RFCOMM 通信通道。待連接完成后,使用Item.setvisible()方法使方向控制按鈕顯示出來。連接完成后,點擊前進、后退、左轉(zhuǎn)、右轉(zhuǎn)、停止等按鈕即可控制移動機器人的運動。軟件監(jiān)聽每個的ButtonClick()點擊事件。在移動機器人的Arduino部分,通過其藍牙接收從安卓手機藍牙發(fā)送出來的控制指令,經(jīng)過分析處理后指揮移動機器人進行相應(yīng)的運動。
在Arduino端,用戶可以選擇借助ArduBlock和Arduino設(shè)計助手等插件進行圖形化編程,前者作為圖形化插件可以支持類似于Scratch 的編程思想,后者則通過形象化的搭建電路幫助設(shè)計新功能的實現(xiàn),如圖7~8所示。圖形化的編程和設(shè)計插件可以使編程過程變得更形象,比較適合編程初級學(xué)習,編程完成后可直接保存成Arduino傳至控制板,比較方便。

圖7 ArduBlock輔助圖形化編程

圖8 使用Arduino設(shè)計助手搭建控制電路
除使用插件之外,也可直接使用默認的Arduino軟件進行Processing/Wiring 開發(fā)環(huán)境代碼編程。其編程思路與Java、C語言類似[8]。圖9所示的代碼中,編寫了對于左右驅(qū)動輪的控制,這種類型的編程語言是與底層代碼的學(xué)習相對應(yīng)的。
由上述可知,Arduino 的軟件開發(fā)環(huán)境可以適配多種程序?qū)W習的需求,既能滿足圖形化編程,也可以進行底層代碼的學(xué)習,具備比較好的開放性,是非常適合作為軟件學(xué)習載體的。

圖9 Arduino代碼編程
在完成了系統(tǒng)全部的結(jié)構(gòu)、硬件和軟件設(shè)計之后,對該機器人進行了大量測試去驗證是否達到了設(shè)計要求,并需要判斷是否能達到最初的設(shè)計預(yù)期。在測試了機器人的自主移動功能之后,又通過試驗避障、循跡等基礎(chǔ)功能和抓取、搬運物品等功能,整個系統(tǒng)可以較好地滿足各功能的實現(xiàn),并且也達到了快速安裝的設(shè)計目的,具有非常好的功能擴展性。
為了測試該機器人是否能達到預(yù)期的教育載體的研發(fā)目的,將該機器人嘗試應(yīng)用于編程教育,在使用的過程中,大家普遍比較歡迎圖像化編程模式,并對于使用該機器人開發(fā)新功能,并快速編程實現(xiàn)的教學(xué)方式非常認可,效果比較好。
本文設(shè)計和實現(xiàn)了一種基于Arduino的多功能模塊化科教機器人,由于其特殊的設(shè)計初衷,講解了其獨特的結(jié)構(gòu)設(shè)計和功能模塊設(shè)計,并闡述了其軟硬件實現(xiàn)方法。測試結(jié)果表明,該科教機器人搭建簡單、結(jié)構(gòu)靈活、運行穩(wěn)定、硬件功能擴展性好。本機器人系統(tǒng)是青少年“STEM”教育的良好教學(xué)載體,具有較為廣闊的應(yīng)用前景,并為后續(xù)繼續(xù)研究提供了重要的參考價值。