Arduino Uno功能簡介


1.3 Arduino Uno功能簡介

本書的主角是Arduino Uno,而這是絕大多數Arduino入門者第一塊擁有的控制板,因此有必要對它做多一點的瞭解,這邊要再一次提醒的是,本書採取從做中學的做法,你不用試圖在這邊完整瞭解Arduino Uno控制板,略過這邊對之後的章節並不妨礙,這邊的介紹,只是對Arduino Uno控制板做個整理,以便後續必要時查閱方便。

圖1.11顯示了Arduino Uno幾個重要的元件,並可清楚看出腳位標示。

Arduino Uno控制板元件標示

圖1.11 Arduino Uno控制板元件標示

供電給Arduino Uno

首先要認識,也是最重要的,就是如何提供電源給控制板,Arduino Uno的運作直流電壓為5V,以正確方式提供電源,不只是為了讓控制板正常運作,也為了避免損壞控制板。
特別注意,接下來的說明是針對Arduino Uno,如果是其他控制板,請詳細閱讀Arduino官方網站上各控制板相關說明。

Arduino Uno可透過三個管道提供電源:USB連接埠、電源輸入插座、Vin腳位。

透過USB連接埠提供給控制板的電源必須是5V的電壓,最基本的方式,就是透過Type B USB連接控制板,而另一頭是Type A USB連接個人電腦,這可以提供5V、500mA的電源給控制板,這也是本書一開始採取的方式,因為電腦要透過USB傳送程式給Arduino。

如果採藍牙連線或其他無線方式來傳送資料給控制板,不用連接個人電腦與控制板的話,那麼可以使用USB電源供應器,像是插頭或者行動電源等,請注意必須是5V的直流電壓,至少2A電流的輸出。

使用USB供電給Arduino Uno

圖1.12 使用USB供電給Arduino Uno

如果要透過電源輸入插座供電,插頭直徑必須是2.1公釐,供應的電壓限制是6V至20V,建議是直流7V至12V,「低於7V的話,5V輸出腳位可能電壓不足,控制板可能運作不正常,高於12V的話,電壓調節模組可能過熱而損壞控制板」。透過電源輸入插座供電時,可以使用電源供應器、9V電池等來供應。

使用電源輸入插座供電給Arduino Uno

圖1.13 使用電源輸入插座供電給Arduino Uno

在圖1.11中,可看到電源輸入插座旁的直流電壓調節模組,這可以將輸入的直流電壓降為5V以及3.3V,5V除了可供控制板使用之外,也可以透過標示為5V的腳位輸出給其他電子電路元件使用,有些電子電路元件必須在3.3V才能正常運作,這可以透過標示為3.3V的腳位來提供。

透過Vin供電給控制板時,要求與透過電源輸入插座相同,Vin提供的電壓,也是經由直流電壓調節模組調整為5V與3.3V。由於直流電壓調節模組的輸入端連接了電源輸入插座供電與Vin,因此,如果你透過電源輸入插座供電,Vin也會量得與電源輸入插座相同的電壓,因此,當有兩塊Arduino控制板需要電源時,可將接有過電源輸入插座的控制板上Vin,連接至另一塊控制板的Vin。

在〈Arduino Uno〉官方說明文件中提到,直接將5V電源接至控制板上5V腳位來提供電源,雖然是可行的,不過這種方式沒有經過電壓調節,可能會損壞控制板,因此並不建議!

控制板上有個標示為ON的LED,用來指示電源供應狀況,如果在已提供電源的情況下,發現標示為ON的LED閃爍、黯淡或熄滅,應儘快拔除電源,檢查電源供應是否正常,以避免損壞控制板。
Arduino Uno控制板上有三個GND腳位,可作為電路上的電壓基準,應避免將5V、3.3V、Vin或其他輸出腳位直接連接GND,以免造成短路,嚴重時會損壞控制板。

數位輸出、輸入腳位

顧名思義,這些腳位可輸出高電位5V與低電位0V的數位訊號,也可接受數位訊號,腳位編號為0到13,不過通常會寫為D0到D13表示為數位腳位(D代表Digital)。圖1.11中可以看到,D3、D5、D6、D9、D10、D11的數字編號旁,還有個波浪符號(~),這表示這些腳位可以用數位訊號來模擬出類比訊號,使用的方式是PWM(Pulse Width Modulation),PWM在之後的實作中會再加以說明。

要注意的是D0與D1這兩個數位腳位,分別被標示了RX(Receiver)、TX(Transmitter),這兩個腳位用於序列埠傳送,且與USB序列埠連接,因此電腦若使用USB與控制板互傳資料時(可見到控制板上標示為RX、TX的LED閃爍),應避免使用D0、D1兩個腳位。

D13腳位連接著控制板上標示為L的LED,若是原廠控制板,預設會燒錄一個令D13定時切換高低電位的Blink程式,因此,首次接上電源時,會看到標示為L的LED不斷閃爍,這是初步檢視控制板是否功能正常的方式。

類比輸入腳位

圖1.11右下角有A0至A5六個腳位,可用來接受類比電壓輸入,但不能輸出類比電壓,如前所述,類比電壓必須透過數位腳位D3、D5、D6、D9、D10、D11,以PWM模擬。

控制板上ATmega328內建類比數位轉換器(Analog-to-digital converter,簡稱ADC),預設會將0V到5V轉換為0至1023的數值。對於輸出電壓為其他範圍的電路模組,可以透過AREF與analogReference函式,來提供參考電壓,例如對於輸出為0V到3.3V的電路模組,可以將0V至3.3V對應至0至1023的數值,獲得更高的解析度。

實際上,A0至A5也可作為數位輸出、輸入腳位使用,此時A0至A5分別可視為D14至D19。

重置鈕與RESET

控制板左上方有個重置鈕,按下重置鈕會使得控制板重新執行使用者燒錄之程式,控制板下方有個RESET腳位,當它處於低電位時,也會有相同的重置效果。

其他腳位與元件

控制板右方有個顯而易見的晶片,那就是控制板的大腦ATmega328,採雙列直插封裝(Dual in-line package),又稱DIP封裝,市面上有單獨銷售ATmega328,如果控制板上的ATmega328損壞,可以使用小的一字起子或尖嘴鉗將之撬起,用新的ATmega328取代。

ATmega328右上方有個2x3線上燒錄用的ICSP(In-Circuit Serial Programming)腳位,可連接ISP線上燒錄器(In-system programmer),對ATmega328進行程式燒錄,其中幾個腳位與D11、D12、D13連接在一起。

ATmega328與ICSP

圖1.14 ATmega328與ICSP

Arduino Uno本身也可以當作線上燒錄器,用來燒錄另一台Arduino控制板上的晶片,有興趣的話,可以參考Arduino官方網站上的〈Using an Arduino as an AVR ISP〉。

控制板左上也可看到控制USB的ATmega16U2,預設燒錄了USB轉序列埠的韌體,你也可以透過鄰近的ICSP腳位來燒錄新的程式,例如,令其成為USB鍵盤等設備,有興趣的話,可以參考Arduino官方網站上的〈Updating the Atmega8U2 and 16U2 on an Uno or Mega2560 using DFU〉。

控制板左上方有SCL(Serial Clock)、SDA(Serial Data)兩個腳位,這是用來連接支援I2C(Inter IC)協定的設備,此協定只採用兩條接線,可在感測器與控制板如Arduino之間傳遞資訊,SCL與SDA也分別與類比腳位A5與A4連接,方便接線之用。

D10、D11、D12、D13是作為SPI(Serial Peripheral Interface)協定的介面,SPI使用四條線連接控制板與支援之設備。Arduino同時支援I2C與SPI兩種協定,在一些介紹到使用I2C或SPI設備的Arduino書籍中,都會有相關的說明。

Arduino Uno有兩個可設定中斷(Interrupt)處理的腳位,中斷0與中斷1分別為D2與D3,可使用attachInterrupt函式來設定中斷服務常式(Interrupt Service Routine)。
控制板左下有個IOREF腳位,這可讓其他設備知道Arduino控制板的運作電壓,其左邊有個腳位目前(Arduino Uno R3)沒有任何作用。

1.4結語

如果能夠看到這個〈結語〉,表示你真的耐心地看完這個章節,這是個對Arduino的概要介紹,雖然這本書不會用到前面介紹到的所有元件,不過,瞭解這些,對於日後更進一步瞭解與運用Arduino時會有所幫助,這是我為何將這些介紹,以及一些網路文件的參考鏈結,放在第一個章節的原因,這是為了方便你日後查閱。

接下來就要進入實際操作了,首先當然是安裝mBlock,並初步瞭解到如何在mBlock中進行程式設計,感受一下視覺化程式語言的方便性,以及一些使用視覺化程式語言時該注意的事項。