謝作如
MaKeyMaKey是大眾融資平臺Kickstarter上的一個項目,由兩位MIT在讀博士設計。它能將日常物品變成觸摸板,然后連上電腦和網(wǎng)絡。MaKeyMaKey由三個部分組成:MaKeyMaKey主板、鱷魚夾和數(shù)據(jù)線。對于任何導體(表面濕潤的絕緣體也可以)來說,只要用鱷魚嘴導線將物體與電路板上的各個金屬觸點相連,然后再連接電腦,就可達到觸摸板的效果,成為一個計算機輸入設備。
MaKeyMaKey能夠模擬鍵盤和鼠標的信號,結(jié)合電腦中現(xiàn)成的游戲和媒體播放器之類的軟件,不用編程,就能夠設計簡單的互動媒體作品了,常見的是用來做水果鍵盤,如圖1所示。MaKeyMaKey的意義在于它可以用極其簡單的方法讓藝術家創(chuàng)造藝術,讓孩子體驗技術帶來的樂趣,因而被稱為是孩子們21世紀的發(fā)明工具包。
MaKeyMaKey并不貴,淘寶上能買到,大概500元左右。但作為一名創(chuàng)客,當然要試著自己來做一塊。論技術難度倒真不高,只要稍微懂一點Arduino的基礎知識就能實現(xiàn)。
設計輸入模塊
MaKeyMaKey的神奇之處在于能夠把任何導體(包括人體、表面濕潤的絕緣體)變成輸入設備。對照運行圖2所示的工作原理,我們可以發(fā)現(xiàn),人體無非是一個選擇性的開關,讓不同的“鍵”(引腳)和“Gnd”連接起來,形成一個回路,讓單片機能識別,如圖3所示。
作為輸入設備,我們知道最基礎的電路如圖4所示。這其實就是一個典型的分壓電路,Vout的電壓是受R1和R2的電阻值大小影響的。R2的電阻越大,Vout分到的電壓也就越大。但是,由于作為輸入設備人體的電阻很大,所以如何選擇合適的電阻是重點。
如果熟悉計算分壓電路,可以試著計算一下。一般在干燥環(huán)境中,人體電阻大約在2千歐到20兆歐范圍內(nèi),那么作為匹配的電阻,應該選擇這一范圍的中間值,即10兆歐。經(jīng)過測試,一般來說,1~10兆歐的電阻基本上都能比較敏感地測出是否形成了回路。
控制板的選擇
控制板方面,我們當然要選擇開源硬件Arduino。MaKeyMaKey本身就和Arduino有著密不可分的關系。不信你可以查看MaKeyMaKey板子的背后,是否寫著Arduino的字樣?
Arduino也有多種型號,我們用Leonardo還是UNO?因為Leonardo直接使用了ATmega32u4的USB通信功能,取消了USB轉(zhuǎn)UART芯片,這使得Leonardo不僅可以作為一個虛擬的(CDC)串行/COM端口,還可以作為鼠標或者鍵盤連接到計算機。那么,第一選擇肯定是Leonardo了(如下頁圖5)。其實,國內(nèi)有很多Arduino的兼容產(chǎn)品,有些用的芯片就是ATmega32u4。只要是用這一芯片的,都可以改造為鍵盤和鼠標。
Arduino編程
Arduino IDE中直接提供了模擬鍵盤、鼠標功能的范例,在“示例”-“09 USB”中,如圖6所示。范例中有英文的注釋,很容易看懂。要實現(xiàn)鍵盤和鼠標功能,只需關注以下兩點:①在setup函數(shù)中,加上“Mouse.begin();Keyboard.begin();”的聲明。②輸入按鍵信息,直接用“Keyboard.press('l');”即可?!癒eyboard.releaseAll();”為釋放按鍵。特殊字符,可以用KEY_LEFT_ALT之類的常量來代替。
依樣畫葫蘆,我寫了如圖7的代碼,其中TouchSensitivity是用來調(diào)節(jié)輸入模塊的敏感度的。代碼中我定義了A0到A5口,分別對應“右、左、下、上”的方向鍵,以及空格和鼠標左鍵。
對MaKeyMaKey的改進
測試一下這塊自制的MaKeyMaKey,除了我僅僅寫了最常用的6個鍵外,其他幾乎一模一樣。既然是自制的MaKeyMaKey,我們總要做點改進。
1.解放另一只手
總是一只手接上Gnd線,另一只手觸碰導體,才可以模擬出按鍵或者鼠標的動作,還是不方便。如何做才能更方便?其實很簡單,如果將觸摸傳感器作為輸入設備,就可以解放另一只手了。當然,我們也可以用紅外測距傳感器、紅外遙控之類,連手都不用碰,也能和電腦交互,不是更有趣了嗎?
2.遠程控制
用藍牙把兩塊Arduino連接起來,其中一塊接電腦做接收端,模擬鼠標鍵盤,另一塊加上特定的傳感器做控制。哦,這不是無線鼠標了嗎?是啊,如果加上三軸加速度傳感器,就是空中飛鼠了。我看過有人把板子縫在帽子上,實現(xiàn)了用頭部控制鼠標來玩游戲。
其實,這款自制的Arduino能做的有很多,只要你大膽想象。那么,是不是只能用Leonardo之類帶ATmega32u4芯片的板子,才能模擬MaKeyMaKey?答案當然是否定的。在創(chuàng)客們的眼里,一件事情往往有很多種解決方案。例如,我們可以編一個客戶端,用串口和Arduino連接,然后把串口的信息轉(zhuǎn)化為模擬按鍵。國內(nèi)有一款很有名的產(chǎn)品叫酷樂宅,就是用這種方案來模仿MaKeyMaKey的。
如果對相關內(nèi)容感興趣,請關注主持人博客。