第一章 為你介紹Galileo
用來構成Arduino平臺的硬體與軟體,其開發目的是為了要降低打造電子專題時的難度。這表示當你在使用科技進行實驗、創造與探索新創意時,不至於因不夠專精而被限制住。採用與Arduino相容的軟硬體,使Galileo可以提供一個更簡單上手的平臺,並且可做到比一般Arduino開發板更強大的功能。
什麼是Galileo? Galileo是一塊硬體開發板,也就是一塊可以協助你開發互動裝置的電路板,透過讀取現實環境的訊號並進行運算後,再呈現於現實環境中。如果將裝置連上網路,甚至也可以像網頁伺服器一樣與其他裝置進行溝通,整體而言,Galileo就是一塊可與Arduino相容的開發板。
什麼是Arduino? 「什麼是Arduino?」對於這個問題有幾個答案。第一個也是最基本的,那就是它跟Galileo一樣都是硬體開發板,而它有著許多型號,好比說Arduino Uno、Arduino Mega與Arduino Yun。每一個不同型號的Arduino都有不同的功能,而最基本的Arduino Uno也就是大家所泛指的「Arduino」。 此外,還有Arduino的開發環境軟體,可安裝於電腦中,用來協助你編寫程式碼與上傳程式到開發板中,而Arduino一詞也代表用來撰寫開發板程式的語法名稱。 如果你對於Arduino完全不了解,並且想要了解更多關於它的內容,可以到Arduino的官方網站(http://arduino.cc/)找到許多資源,其中包含了使用指南、參考資訊、社群、專題與最新的更新情況。而瑪西摩.班吉所寫的《Arduino使用指南》(歐萊禮出版社)就是我在使用這類熱門開發板時的第一本參考指南。書中有寫到Arduino的設計原理(Arduino的設計方式),並引導你從最基礎的部分開始使用它。這本書一樣也會包含許多基本原理,不過是主角從Arduino換成Galileo而已。 Galileo是一款與Arduino相容的開發板,這就表示它可以使用Arduino的開發環境與程式語言。其針腳位置與Arduino 1.0的一樣,此種設計可以讓人清楚地知道板子上的哪一個位置上對應哪一個針腳,而因為這種設計方式是可與Arduino 1.0相容,所以你可以在其上方裝上Arduino擴充模組,以堆疊的做法用來添加更多功能。常見的電路包含了馬達驅動模組、多顆LED的控制模組或是播放聲音的模組。此種設計也可以方便你在參考專為Arduino所撰寫的教學書籍時,用更簡單的方式來使用Galileo。
輸入端與輸出端 與其他硬體開發板一樣,Galileo可以讀取輸入端訊號並由輸出端進行控制。輸入端負責接收現實環境的訊號傳入開發板的處理器中,這些訊號可以由撥動按鈕或開關來得到,也可以是像你在混音板上看到的撥鈕或滑桿。另外,感測器也可以用來提供現實環境的訊號給輸入端,而感測器的種類繁多,包含溫度、亮度、音量、加速度等。 輸出端則是指Galileo這類的開發板如何作動於現實環境中,最簡單的例子就是發光二極體,或叫做LED,它會在電流流過時亮起。LED可以用來顯示裝置啟動與否,或是顯示錯誤動作的情況發生(此種情況適合閃爍紅色LED)。輸出端也可以是安裝在機器人身上用來控制輪子的馬達,或是顯示溫度的顯示器與播放音樂旋律的喇叭。 舉例來說,一個簡單的碼表就同時具有輸入端與輸出端,開始鈕即代表輸入端,當你按下開始鈕時,便會觸發一個計時器,並且會由輸出端將計時器的訊號顯示在碼表上。 而一個數位錄音裝置則是以麥克風做為聲音輸入端,小型喇叭做為聲音輸出端。它跟碼表一樣也具有一個按鈕替輸入端提供訊號,以控制錄音的開始與停止,並使用一個小型顯示器告訴你在填滿裝置的記憶體前,你還有多少時間可以進行錄製。
程式 當然這並不像連接Galileo上的輸入端與輸出端那麼的簡單,反而你必須告訴開發板你想要如何使其回應輸入端的訊號,以及如何控制輸出端。透過編寫開發板程式,就可以讓它理解你要它做些什麼。 舉例來說,一個簡單的恆溫器專題會定期地檢查溫度感測器傳回的數值,並比較使用者透過控制旋鈕所設定的溫度值。假設感測器偵測到的溫度比設定的溫度值要來得低,開發板便會開啟暖氣,讓溫度提高到接近設定的溫度值,而這類的邏輯判斷就是由你所編寫的程式定義而來。 Galileo可以讓使用者一再地重複編寫程式,而事實上,在開發專題的過程中,你將會重複進行編寫程式、上傳程式至開發板、檢查程式作動的結果、找出問題、重新調整程式,並重新上傳程式這幾個步驟。 你或許會發現你可能會在一個專題中使用開發板,而幾周後會將開發板取下,並重新編寫一套程式,用在另一個完全不同的專題中。
通訊方式 Galileo可以透過一些不同的方式與其他裝置進行溝通,你可以用USB將Galileo與電腦相連,並進行資料的傳輸與接收。你可以將Galileo正在執行的訊息傳遞到你電腦的控制視窗中,因此你便可以得知為什麼有些地方無法正常執行(這種方式又被稱為除錯)。抑或是你可以讓Galileo傳遞感測器的資訊到電腦上,直接呈現出動態圖形。 Galileo也可以藉由內建的乙太網路或是可額外選購的Wi-Fi模組來與其他裝置透過網路進行連接,因此它可以接收氣象資訊或是你的私人email,甚至還可以在Twitter進行搜尋等。此外還可以透過網路連接傳送溫度感測器的資訊、網路攝影機所拍攝的影像,或者是你家小狗的水盆目前的水量。
是什麼讓Galileo與眾不同? 如果你曾經使用過標準的Arduino平臺,比方說Uno,它們跟Galileo會有一些地方稍微不同。事實上,Galileo的整體規格使它看起來像Arduino Uno與低階電腦的綜合體。 Galileo外型要比Arduino Uno大上一些,但這種尺寸也替你帶來更高規格的處理器,在執行程式時可提供更大的記憶體暫存空間、更大的資料儲存空間、一個可以連上網路的乙太連接埠,還有可連接電腦週邊的USB埠與底部的Mini PCI傳輸連接埠。 而在Galileo上所使用的韌體則比目前Arduino Uno所用的還要更高階,在一般Uno或其他Arduino開發板上所用的韌體稱為載入器(bootloader),也就是說它只能幫助你上傳程式到開發板的處理器中,並執行程式而已。反觀在Galileo上的韌體,它不僅能幫你上傳程式到開發板並執行,還可以追蹤檔案、記錄日期與時間,並且可以協助分享開發板上的多種資源到多個同時執行的程式中,就這方面來看,Galileo更像一臺電腦。 事實上,在Galileo上的韌體其實是使用常見於桌上型電腦和伺服器中的免費作業系統Linux的某一個版本,Galileo或許沒有螢幕或桌面環境,但它還是可做到大部分作業系統可提供的功能。並且可以藉由這些功能來執行你編寫的程式,做出比一般Arduino更多的功能,舉例來說,如果你想要製作一個專題,運用網路攝影機拍下照片並寄送出去,如果只使用Arduino程式的話可能會非常困難,但是有了Linux的支援,這件事情就會變得很簡單。
|