作者:mznewfacer (Wolf Geek) 時(shí)間:2011年 11月20日 轉(zhuǎn)載需說明出處,謝謝 本人上學(xué)時(shí)學(xué)的都是軟的,作為硬件白癡的我,還是決定接觸些硬件吧,趁著現(xiàn)在有空。 其實(shí)想學(xué)點(diǎn)微控制器(Microcontroller)還是源于偶爾看到了國外Ye-Sheng Kuo, Sonal Verma, Thomas Schmid, and Prabal Dutta等人的hijiack項(xiàng)目,簡要來說他們就是想通過設(shè)計(jì)的音頻耳機(jī)硬件接口,來接受傳感生活中的數(shù)字、模擬信號。這個(gè)方向未來一定是迫切的需要,我們已經(jīng)看到了許多的應(yīng)用,不管是sixsensth(雖然只是demo,兩年多了也沒傳上去程序),iphone的siri,android 的ADK,當(dāng)然Microsoft的kinect(也有與wp7的整合應(yīng)用),很成功的Bump(不知微信的搖一搖何時(shí)能完美)??傊?,人們需要與虛擬世界更多樣的交互,我們需要的不僅僅是簡單的鼠標(biāo)、鍵盤、觸摸屏,我們的生活中無時(shí)無刻都需要更直接的交互。天天喊著云計(jì)算,是啊,我們更需要更直接的收集生活中有意義的數(shù)據(jù)利用所謂(數(shù)據(jù)挖掘/機(jī)器學(xué)習(xí)/模式識別 , 這三者概念區(qū)別至今我笨的沒搞清)來為我們生活的決策、聯(lián)系,提供多種清晰的選擇可能和服務(wù)。 就拿iphone來舉例,如果像digifit ,AliveCor這種應(yīng)用能夠快點(diǎn)有醫(yī)療標(biāo)準(zhǔn)出來,可以對收集的血壓心電等數(shù)據(jù)采集后實(shí)時(shí)分析,建立動態(tài)家庭醫(yī)療監(jiān)護(hù)網(wǎng)絡(luò),相信會挽救不少人的性命。多的不扯了,作為小白的我,要腳踏實(shí)地,從最基礎(chǔ)的開始。 回到hijiack項(xiàng)目,再簡單說一下他們的設(shè)計(jì)思路,下圖為系統(tǒng)架構(gòu)圖,
可以看到,從手機(jī)耳機(jī)端引出了四個(gè)線路,分別是左聲道、右聲道、公用信道信號、麥克風(fēng)。右聲道為能量收集電路(energy harvesting circuit)提供電源,左聲道將手機(jī)輸出的數(shù)據(jù)輸入到微處理芯片。麥克風(fēng)將微處理器的數(shù)據(jù)輸入回手機(jī)上。手機(jī)和微處理器都采用了頻移鍵控 (FSK)調(diào)制解調(diào)器。具體的設(shè)計(jì)細(xì)節(jié),請參考http://www.eecs./~prabal/pubs/papers/kuo10hijack.pdf。 以下是其簡單的示波應(yīng)用硬件搭建圖:
其中,微處理器是搭載了電阻式傳感器的電位計(jì),當(dāng)電阻傳感器改變時(shí),我們會看到手機(jī)上變換的相應(yīng)電壓波形。這里使用的微處理器是德州儀器的MSP430F1611。 以下是他們項(xiàng)目的兩個(gè)應(yīng)用,左圖為心電監(jiān)護(hù)裝置,右圖為土壤濕度傳感器。
Arduino目前的應(yīng)用就很多,遠(yuǎn)程泡茶,觸控門,無線監(jiān)控小車都還比較有意思,最后我們來看看Arduino的hello world 程序。 1.首先,下載Arduino 0023,解壓后直接能夠運(yùn)行。 2.將arduino 控制器用USB接入電腦(這里還用不上電源供電)。 3.安裝驅(qū)動,安裝成功后,會顯示端口。
4.IDE上選擇Tools->Board,控制器類型,在這里我用的就是Arduino Duemilanove Mega328。 5.配件安接 因?yàn)閺脑韴D上可以看出13管腳與ATmega的引腳之間連接了一個(gè)1K的電阻,能夠起到限流的作用,以保護(hù)二極管不被燒壞。發(fā)光二極管是有正負(fù)極性的,因此必須連接正確才能夠讓其正常發(fā)光。發(fā)光二極管腿比較長的一端是正極,需要接在Arduino數(shù)字I/O的13號管腳上;腿比較短的一端是負(fù)極,需要接在GND管腳上。 6.程序部分 好了,看看程序吧,
[cpp] view plaincopy
7.上傳用AVR-GCC編譯后的程序到板子上,值得一提的是,編譯后的文件,存儲于C:\Users\newfacer\AppData\Local\Temp\build3206993456004941706.tmp目錄下,
打開Blink.cpp可以看到,包含了 "WProgram.h"的頭文件,其在Arduino IDE\arduino-0023\arduino-0023\hardware\arduino\cores\arduino 目錄下,具體如何調(diào)用編譯器以及函數(shù)的調(diào)用關(guān)系,有興趣的可以自己搭建源代碼環(huán)境,當(dāng)然win下Cygwin,Java JDK,和ant是必須的,源碼在這里下載。 另外,相關(guān)配置參數(shù)的位置都在preferences.txt文件中,我的在C:\Users\newfacer\AppData\Roaming\Arduino文件夾下面。 為甚么會這樣,具體可以去看arduinoIDE\lib\preferences.txt 的內(nèi)容說明,可以照著說明更改相關(guān)屬性:
你可以更改這個(gè)配置文件以修改相關(guān)IDE編輯器的字體,硬件的板卡類型,控制臺輸出等等屬性,但是當(dāng)Arduino沒運(yùn)行的時(shí)候,改了才不會有問題。具體為什么會這樣,就只好請你去看IDE的源碼了,這里就不做多余解釋了。
8.運(yùn)行結(jié)果 當(dāng)上傳程序成功后,會發(fā)現(xiàn)發(fā)光二極管立即閃了一下,表明bootloader正常工作了。接著再過一段時(shí)間,會看到發(fā)光二極管間歇性地不斷亮滅,這就表明第一個(gè)Arduino程序已經(jīng)成功地運(yùn)行起來了。
面包板的連接也好弄,看下正負(fù)極別接反了,當(dāng)led燈的陽極通過限流電阻與板子上的數(shù)字I/O口相連,數(shù)字口輸出高電平時(shí),led接通,發(fā)光二極管發(fā)出亮光。這里二極管負(fù)極接GND,正極接PIN 4, 中間要加個(gè)220歐姆,讓二極管在正常范圍工作。當(dāng)然程序也就要重新改動LED_PIN=4,編譯后重新上傳。
后記: 如果覺得沒玩夠的,其實(shí)一個(gè)LED燈還能玩點(diǎn)東西,摩斯電碼。易懂的對照表是二叉樹的結(jié)構(gòu),如下圖
左子樹為短.,右子樹為長-。例如Wolf 為
· — —— — —· — · ·· · — · 我們可以通過設(shè)置LED燈亮的長短來表示不同的字母。 附加資料: 1.對自己微控制器硬件詳細(xì)接口感興趣的,可以到官網(wǎng)上下載相關(guān)文檔,我的板子在這里,其他的也可以在相應(yīng)的地方找到。 2.Arduino與Processing的接口:processing-arduino.zip,processing在這就不多介紹了,其支持 Java 語言架構(gòu),創(chuàng)始人Ben Fry, Casey Reas 都是mit media laboratory aesthetics + computation group Laboratory 的成員,鏈接里相信有不少資料。
|
|