在“當(dāng)圓夢(mèng)小車遇上 Arduino ……”一文中,就提出了設(shè)計(jì)一款 Arduino 小車控制器的想法,如今兌現(xiàn)了!
在設(shè)計(jì)過程中,隨著對(duì) Arduino 了解的深入,又發(fā)現(xiàn)了一個(gè)基于PC機(jī)的開源平臺(tái):
Processing!
基于這個(gè)編程感覺又回到了 DOS 時(shí)代的 Basic,環(huán)境十分簡(jiǎn)潔,不像目前基于 Windows 的開發(fā)環(huán)境,光環(huán)境設(shè)置就足以讓初學(xué)者卻步。
Processing 雖說(shuō)延續(xù)了 Basic 的那種簡(jiǎn)潔,但對(duì) windows 帶來(lái)的資源優(yōu)勢(shì)卻絲毫沒有忽略,可以十分方便的操控屏幕畫圖,獲取鼠標(biāo)信息,乃至方便的視覺處理……,并未因簡(jiǎn)單而“無(wú)能”,摒棄了繁瑣的環(huán)境設(shè)置后,可以讓你將思維集中于控制邏輯的構(gòu)思以及算法和數(shù)據(jù)結(jié)構(gòu)的嘗試。
最美好的是,Processing 和 Arduino 有著密切的關(guān)聯(lián),它們同出一門。
為了讓它們之間能夠“親密無(wú)間”,小車設(shè)計(jì)了一個(gè)無(wú)線通道,對(duì)應(yīng)的在PC側(cè)設(shè)計(jì)了無(wú)線適配器,使之通過無(wú)線可以暢快的交流。
小車由以下兩部分組成:
控制板核心是 Arduino 控制器,使用Mega328P:
從圖中可以看出,用無(wú)線通道代替了Arduino標(biāo)準(zhǔn)的USB轉(zhuǎn)UART接口,使通訊和程序下載均變?yōu)闊o(wú)線方式。
PC側(cè)的無(wú)線適配器細(xì)節(jié)如下:
可以看出,相當(dāng)于將原來(lái)的UART連線斷開,兩側(cè)各插入了一個(gè)無(wú)線模塊,是有線方式的UART連接變成無(wú)線方式。這對(duì)小車很重要,因為小車需要移動(dòng),拖著尾巴會(huì)大大降低使用體驗(yàn)。
注意:小車控制板元件是安裝在背面的,表面很“平整”,為何?
是為了這個(gè):
看了后面的內(nèi)容就知道了^_^ 小車使用 4節(jié) 7號(hào) NiH 電池供電,因?yàn)?4 節(jié)充電電池電壓不足 5V,為保證 Arduino 控制器可靠工作,配置了電源管理電路,內(nèi)含升壓穩(wěn)壓,保證 5V 供應(yīng)。同時(shí)為方便使用,內(nèi)置了充電電路,可以方便的直接在小車上充電。 之所以沒有選擇鋰電池,主要是從安全角度考慮,尤其是自帶充電。 未來(lái)是軟件的世界,硬件設(shè)計(jì)已由少數(shù)人所完成,多數(shù)人只是基于現(xiàn)成的硬件編寫軟件,使其具有不同的功能。PC 時(shí)代已見端倪,而 iPhone、iPad 則將此推向極致。 從就業(yè)角度,未來(lái)軟件外包將成趨勢(shì),國(guó)人在軟件上就業(yè)的機(jī)會(huì)將大于其它任何形式。 而編程學(xué)習(xí)通常很枯燥,無(wú)工作需求時(shí)少有人問津,導(dǎo)致編程水平難以提高。 期望小車能使編程變得有趣,讓你在娛樂中不斷提高自己。 其次: 如今娛樂東西很多,有PK反應(yīng)的,PK智力的,PK手眼協(xié)調(diào)的,還有一些完全滿足身體需求的…… 小車主要“娛樂”模式 一、全局視覺定位 典型的項(xiàng)目就是“機(jī)器人足球”: 二、局部視覺導(dǎo)航 利用與 Arduino 同門的 PC 開源平臺(tái):Processing ,就可以方便的實(shí)現(xiàn)上述需求,有很多愛好者分享的視覺處理庫(kù)可以嘗試,由于是開源,會(huì)不斷有新資源分享,使你的學(xué)習(xí)過程可以不斷持續(xù)、深入。 為何如此構(gòu)思? 此次小車設(shè)計(jì)放棄了傳感器,將機(jī)器視覺作為小車的全部信息來(lái)源,相當(dāng)于人的眼睛。 小車使用傳感器主要是知道自己的位置及環(huán)境,如今機(jī)器視覺已不稀罕,借助于PC和攝像頭,很容易實(shí)現(xiàn)圖像識(shí)別。為降低難度,還可在小車上貼色標(biāo),圖像識(shí)別變成了最簡(jiǎn)單的色塊捕捉。 微軟的Kinect出現(xiàn),證明了這是趨勢(shì)。 之所以將小車設(shè)計(jì)的很小,就是為了便于攝像頭的捕捉,因?yàn)閿z像頭的拍攝區(qū)域有限。 以往 Windows 下實(shí)現(xiàn)圖像采集和識(shí)別是比較專業(yè)的事,使用了 Processing,事情變得極為簡(jiǎn)單。 之所以沒有采用藍(lán)牙,是因?yàn)樗{(lán)牙實(shí)現(xiàn)廣播困難,而所構(gòu)思的活動(dòng)形式需要以廣播方式發(fā)送坐標(biāo)。 特別聲明! 本小車所期望構(gòu)建的是娛樂平臺(tái),而非應(yīng)對(duì)專業(yè)的“機(jī)器人足球”比賽!按照目前的價(jià)位,連一個(gè)專業(yè)足球機(jī)器人的電機(jī)都買不來(lái),當(dāng)然性能也就沒法和專業(yè)的足球機(jī)器人相比。 在所有機(jī)器人活動(dòng)中,唯有“機(jī)器人足球”最有趣,最具挑戰(zhàn)性,同時(shí)也最有延伸的空間,不會(huì)像許多比賽內(nèi)容,很快進(jìn)入“飽和”狀態(tài),很難再提升。目前的“智能車大賽”就有此跡象。 做此小車是想讓“機(jī)器人足球”比賽走下圣殿,成為像棋、牌、桌球一樣的百姓娛樂內(nèi)容,在娛樂中順帶提高素質(zhì),實(shí)現(xiàn)“學(xué)有趣,玩有益”! 以下方式供參考: 1、在前后壁上打孔,固定銅柱: 2、有了這些支點(diǎn),傳感器可以按如下方式安裝: 如果想加裝小機(jī)械手之類的設(shè)施,可利用: Arduino 控制板上的2個(gè)固定螺絲是經(jīng)過銅柱固定在底盤上的,所以比較牢固。 還可以: 在這樣一個(gè)小平臺(tái)上,做上述擴(kuò)展應(yīng)該夠了吧? 結(jié)語(yǔ): 小車只是一個(gè)平臺(tái)。 作為學(xué)生,可以把它看成一個(gè)工程“應(yīng)用題”,期望能幫助你學(xué)會(huì)運(yùn)用所學(xué)知識(shí)去解決問題,但不失趣味! 作為玩家,可以把它看成一個(gè)“可編程玩具”,讓你隨時(shí)可以活動(dòng)活動(dòng)大腦,但不完全是消遣!就像打球,娛樂之外還可健身。 換一種心態(tài)編程,或許能更好的發(fā)揮,刺激出靈感。 Arduino 是開源的,雖說(shuō)所服務(wù)的是非專業(yè)人士,但編寫 Arduino的絕非等閑之輩,源程序中也許有你需要的思想。 由于 Arduino的簡(jiǎn)化,使很多不想糾纏于Datasheet、但又想操控硬件與現(xiàn)實(shí)交互的人有了可能。 同時(shí)還是很好的啟蒙手段,可以陪孩子玩。目前教育中怪題、難題將孩子訓(xùn)練得熱衷于“劍走偏鋒”,而大量的選擇式答題導(dǎo)致孩子思維無(wú)序,編程將使孩子“跳躍”的思維重歸條理。 但愿小車能物盡其用!
小車設(shè)計(jì)初衷:
首先:
為學(xué)習(xí)編程者提供有趣的編程素材。
創(chuàng)建首款(至少我沒有聽說(shuō)過)將編程作為PK內(nèi)容的娛樂平臺(tái)。
在無(wú)處不使用電腦的世界中,卻獨(dú)缺一個(gè)PK編程水平的游戲,希望這個(gè)平臺(tái)能補(bǔ)上這個(gè)缺!
用PC攝像頭拍攝小車的活動(dòng)區(qū)域,基于小車上的色標(biāo)獲取小車的位置,通過無(wú)線通道發(fā)送給小車。
將無(wú)線攝像頭(建議選用模擬的)安裝在小車上,攝像頭的無(wú)線通道將圖像傳送至PC,由PC上的程序負(fù)責(zé)圖像識(shí)別等處理,將處理結(jié)果再通過小車的無(wú)線通道送回小車。實(shí)現(xiàn)一般傳感器所能達(dá)到的功能,如走軌跡,避障。
智能小車算是“機(jī)器人”的一種。而提到“機(jī)器人活動(dòng)”,立刻想到的是“走軌跡”、“避障”等,糾纏于各類傳感器,編程反被忽視。由于傳感器的局限性(缺錢、沒時(shí)間),很多想法只能放棄,使活動(dòng)總在低水平上重復(fù)。
無(wú)線通訊也是為此服務(wù),實(shí)現(xiàn)PC 和小車的信息交互。
不過,可能還是有客戶希望加裝傳感器,這個(gè)小車上可以嗎?