自製「實物運算平台」:Arduino微電腦
文∕趙英傑
Arduino是一個「開放式硬體(open source)」微電腦控制板,你也可以稱它「實物運算(physical computing)平台」,聽起來很酷吧!任何人都可以在arduino.cc網站下載免費的線路圖和PCB版佈線圖,自己DIY一個Arduino,例如,底下的照片是筆者稍加修改後的自製Arduino控制板。
基本上,微電腦控制板就像是一個具有大腦和神經線,但是沒有感官和行動能力的物體。我們可以替它加上眼睛(如:紅外線或超音波感測器)、耳朵(如:麥克風)和手腳(如:伺服馬達),再加上自行撰寫的控制程式,就能做出各種自動控制應用。例如,加上溫度感測器和一些控制線路,以及判斷條件的程式碼,就能讓Arduino自動控制電風扇的運轉;加上伺服馬達∕步進馬達,以及感測器,即可組裝一台自走車或機器人。
Arduino控制板的硬體很簡潔,沒有什麼特殊的設計,除了開放式硬體架構之外,重點在於它提供了一個基於C/C++的程式語言來控制Arduino,並且有Windows, Mac OS X和Linux等跨平台環境的程式編輯工具。除了當成可獨立運作的微電腦控制器之外,它也能透過許多愛好者開發出的程式模組,和電腦上的其他程式語言通訊,例如:Flash ActionScript, Processing, Python, PHP,…等等。
微電腦自動控制的專業人士,大多優先選擇「組合語言」來撰寫程式,因為組合語言的執行速度快,而且佔用的記憶體空間小。但是對於業餘電子愛好者來說,組言語言深奧難懂,而且普通的電子專案也不需要對執行效能和記憶體空間錙銖必較。因此,以業餘玩家為訴求的微處理產品,大多選用C或BASIC等比較平易近人的高階語言來控制。
例如,基於PIC單晶片處理器、風靡歐美的Basic Stamp系列產品採用BASIC語言,麻省理工學院(MIT)的HandyBoard(同樣也提供免費的線路圖和跨平台的程式語言編輯環境)採用Interactive C(註:這個語言也有適用於樂高機器人的版本,可在BotBall網站下載)、HandyBoard Cricket更提供了圖像式Logo語言編輯環境,讓小朋友也能輕鬆駕馭微電腦!另一個知名的開放式硬體Wiring,也是採用類似C語言的語法,它的程式語言就叫做Wiring。實際上,Arduino的程式編輯器和語言,就是從Wiring借來的。
如果嫌高階語言不專業,您也可以安裝Atmel公司的AVR Studio開發工具,用組合語言或者AVR C語言撰寫Arduino的程式。
Arduino、Freeduino和Boarduino
“Arduino”取自11世紀北義大利的一個國王的名字。這個專案最早由Massimo Banzi, David Cuartielles, David Mellis和Nicholas Zambetti等人開始,目前已經發展出許多不同的版本,詳細的功能比較和外觀照片請參閱這個網頁。雖然說Arduino是個「開放式硬體」平台,但這群設計者並未完整提供歷代所有版本的PCB佈線圖。有了佈線圖,才能順利製作出印刷電路板,雖然使用者也可以自行繪製,但總不及現成的方便。如果用戶想要新版的Arduino,最簡便的方式就是在網站上購買現成的(或半成品)Arduino。
有鑑於此,有人建立了一個略帶諷刺的“Freeduino”網站,提供等同於較先進的Arduino Diecimilia版本的佈線圖免費下載。就在我製作好Arduino之後不久,Arduino的官方部落格終於在10/22日提供Arduino Diecimilia和Arduino BT(具備藍芽通訊功能)的PCB版資料,但目前還是沒有外觀尺寸類似Basic Stamp的Mini版本的佈線圖。
Arduino採用Atmel公司的AVR系列微處理器,舊版採用ATMEG8,內建的記憶體容量為8KB,新版本採用ATMEGA168,記憶體有16KB,並且多了一些輸出∕輸入埠。Wiring的硬體比較網頁提供了幾個知名微處理器控制板的功能比較。
另一個從Arduino衍生出來的控制板”Boarduino“,把板子做成適合直接插在麵包板上做實驗的尺寸,也有提供PCB佈線圖,並且採用ATMEGA168處理器,若有興趣嘗試自己動手做Arduino,這也是個不錯的選擇。
相關網站連結:
- 用麵包板組裝Arduino微電腦實驗板
- 台灣的Arduino樂園
- AVR系列處理器的愛好者網站AVR Freeks
請問老師你可以賣我一個Arduino微電腦控制板嗎?
這是否是把flash程式發佈的swf檔,放到Arduino微電腦控制板USB相對應的硬碟裡,然後開啟硬碟裡的swf檔,就能送信號給Arduino微電腦控制板嗎?
老師有出有關flash控制Arduino微電腦控制板相關的書籍嗎?
或是否請老師推薦相關的書籍給我,能用flash程式透過Arduino微電腦控制板,控制電子零件硬體這很實用。
1. 我沒有在賣Arduino,如果不要求美觀或者形式,其實自己組裝一個也很簡單。拍賣網站上也可以買到現成的。
2. Flash的swf檔和Ardunio之間的通訊,需要透過Socket Server軟體來轉換。
3. 我目前仍在忙著專案開發,今年內沒有寫作計畫。
4. 國外有幾本ardunio的相關書籍,像O’Reilly出版社的 Making Things Talk, Getting Started with Arduino 以及 Programming Interactivity等書籍的評價都很好。
拍賣找不到,雖然本身略懂一點電子但是英文程度不好所以才想跟老師買一咕:shock:
既然老師無法賣我,那我也只好自己去摸索了==
老師請問像諸如滑鼠連點程式或一些類似的自動程式,下載後開啟資料夾裡面含有dll檔、DAT檔…等等檔案的這些程式是用什麼軟體做出來的呢?
相關的程式語言正確學名叫什麼?是C++嗎?
很多程式語言都可以建立「動態連結程式庫(DLL)」,C++, Visual Basic, C#, Delphi… 基本上,只要是在Windows系統的通用程式開發工具都辦得到。
真厲害!!!
大大您是軟硬通吃呀!!!
真是令我望塵莫及…
沒有啦… arduino的創造者才厲害
ps. 我認識很多前輩都沒有部落格,也鮮少露臉,他們才是真正的大內高手。
請問老師,可以賣一各板子給我嗎
其實你可以用麵包板自己組一塊Arduino,今天稍後我再更新文章。
今天更新文章時想到,如果用麵包板自行組裝Arduino,你還需要燒錄器和連接電腦的轉接線…若無焊接電子零件的經驗,建議買個現成的Arduino板。我沒有賣,但是網拍上有很多賣家。
have fun!
jeffrey
您好~ 最近在研究 自製控制板
想請教~ 上述自製版的材料資訊 是要哪裡找呢>”<?
還是您能夠寄給我~
能發現這網站 真的很開心 很多資料都有阿 很棒 感謝筆者的用心
如果你打算自己洗電路板,可以在電子材料行購買感光PCB、顯影劑、蝕刻劑…等材料,但是過程有點繁瑣。假如只要少量製作,強烈建議用萬用PCB板(洞洞板)直接焊接零組件即可。全部材料都可以在電子材料行或網拍購得。
have fun!
jeffrey
這些東西 我們都有~ 未來 會自己洗電路板出來
不過 目前是想了解 一塊 自製版 需要的零件是那些 會先用麵包板模擬一次~
才想跟您請教一下 零件部分 有沒有詳細的介紹@@
有做了些許的研究 不過對於 上面的板子上的材料 實在還是不是很清楚
所以想麻煩您 可以提供一下資訊~~~ 再麻煩您囉
上文提及的Arduino官方部落格裡面有這塊板子的電路圖,電路圖裡面就有完整的零件列表。
thanks,
jeffrey
不好意思 請問在哪裡啊@@? 都找不到 方便提供連結嗎?
Arduino官網的Products選項,表列了所有產品,點選其中一個產品,例如Arduino UNO,即可連到該商品的說明頁(http://arduino.cc/en/Main/ArduinoBoardUno),在商品的說明頁裡面,包含電路圖(Schematic)的下載連結。
thanks,
jeffrey
您好~
http://imageshack.us/scaled/thumb/69/3csu.jpg
這是你上面所自己自做的 板子 有幾個地方的元件還是不大了解 可以提供一下嗎 已經有畫圈圈囉
你畫圈的部份是排插、電容和電壓調節元件。
thanks,
jeffrey
老師好
能否請問在程式中要傳送一個和
是不是寫成下面這樣?
Serial.write(0x0D); /*或者 Serial.write(13); */
Serial.write(0x0A); /*或者 Serial.write(10); */
而按下Ctrl-z \ ESC
是不是要寫成下面這樣?
Serial.write(26);
謝謝
送出CR和LF,使用prinln()指令即可,像這樣:
Serial.println();
另外,ESC的ASCII是27,請再測試看看。
thanks,
jeffrey
您好
當傳送一個AT指令給MODEM時通常會有回傳
請問如何讀取這個回傳?
例如 我輸入AT 會回傳 OK
所以程式如下\
if (Serial.available(){
char val=Serial.read();
Serial.print(val);
}
觀察Serial監視口
AT
y
‘應該回覆OK
但卻看到y
不知是何原因?
請問AT指令後面要加上什麼結尾?例如,當你用一般的序列埠通訊程式測試時,後面有指定NL或CR結尾嗎?例如:
Serial.print(“AT\n”);
thanks,
jeffrey
老師您好,
我想DIY一個俱有CCD(行車記錄器那種),可以循環錄影,並且存成mp4的檔案格式,影片檔存在SDCARD裏面,然後有個按鍵,按下之後能夠以按下的時間點為基準,截取前後各30秒的影片,另存成一個檔案,然後把這個檔案透過藍牙介面傳輸到電腦或是智慧型手機~
請問用Arduino可以做出上述的功能嗎?能不能請老師給我一些方向,該準備哪些材料,謝謝。
hi yuhao:
普通的Arduino只是一個8位元的微控器,不具備圖像處理晶片,主記憶體也很小,連拍照都有問題,更遑論錄影了。
如果要DIY行車記錄器,你需要高階的嵌入式裝置開發板或者Raspberry Pi,像這個老外的Raspberry Pi Dash Camera網站有完整的DIY說明,只是整個費用將是市售的行車記錄器數倍的價錢。
have fun!
jeffrey
謝謝老師,
請問那如果我只要單純能夠讀取SDCARD上面的檔案,然後可以透過藍牙或是WIFI傳輸,這樣用Arduino可以辦到嗎?如果可以要購買哪些材料?
請不吝賜教,謝謝。
SD記憶卡採用SPI介面,Arduino也有現成的SD程式庫,提供建立資料夾(mkdir)、開檔(open)、寫入文字檔(println)、關檔(close)、刪除(remove)…等操作指令。
底下的程式片段取自adafruit網站的Micro SD Card Breakout Board Tutorial教學文件(文章裡面有列舉材料和延伸應用,例如GPS座標記錄器):
have fun!
jeffrey
謝謝老師,
我試試看,有問題再向您請教,謝謝。
我也想洗一塊,可是官網上的似乎都是SMD
我看到老師是改用我們平常在用的零件
可否跟老師要一份SCH跟PCB檔
謝謝~
hi bluesea:
因年代久遠,我也不知道存在哪個硬碟裡。不過,你可以搜尋 “arduino duemilanove 2009 pcb” 關鍵字,即可找到相關圖檔。
have fun!
jeffrey