午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

Arduino 引言:移動互聯(lián)外設(shè)傳感展望

 quasiceo 2015-09-09
分類: Arduino 2011-11-21 19:12 4847人閱讀 評論(28) 收藏 舉報(bào)

      作者: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ù)裝置,右圖為土壤濕度傳感器。

 



以上就是他們做的移動傳感項(xiàng)目,像這樣的項(xiàng)目現(xiàn)在應(yīng)該很多。當(dāng)然,google也自從Android 3.1就引入了Android Open Accessory Development Kit(ADK),它就是推薦了Arduino作為外設(shè)選擇。

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.程序部分

好了,看看程序吧,

  1. const unsigned int LED_PIN = 13;  
  2. const unsigned int PAUSE = 1000;  
  3. void setup() {                  
  4.   // 引腳 13是大多數(shù)arduino板子上接LED燈的引腳  
  5.   pinMode(LED_PIN, OUTPUT);       
  6. }  
  7.   
  8. void loop() {  
  9.   digitalWrite(LED_PIN, HIGH);   // 打開LED燈  
  10.   delay(PAUSE);              // 等待  
  11.   digitalWrite(LED_PIN, LOW);    // 關(guān)閉LED燈  
  12.   delay(PAUSE);              // 等待  
  13. }  
程序很簡單,其中有兩個(gè)函數(shù)setup()和loop()。setup()這個(gè)函數(shù)主要用來完成相應(yīng)的初始化工作,在上面的例子中是將數(shù)字I/O的13號管腳設(shè)置為數(shù)字輸出。loop()這個(gè)函數(shù)則是Arduino程序的主函數(shù),相當(dāng)于C語言中的main() 函數(shù),一個(gè)Arduino程序要完成的主要功能都在該函數(shù)中實(shí)現(xiàn),在上面的例子中是通過變換13號管腳的高低電平,并設(shè)置相應(yīng)的延時(shí),從而使發(fā)光二極管能夠間歇性地不斷亮滅。值得注意的是,HIGH時(shí)給LED燈供給5V電壓,LOW則關(guān)閉。



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.zipprocessing在這就不多介紹了,其支持 Java 語言架構(gòu),創(chuàng)始人Ben Fry Casey Reas 都是mit media laboratory aesthetics + computation group  Laboratory 的成員,鏈接里相信有不少資料。

       

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多