第2章 認識arduino - ntpc.edu.tw

37
第2章 認識Arduino 2-1 淺談Arduino 2-2 Arduino 系列控制板介紹 2-3 Arduino 系統架構 2-4 Arduino 接腳

Upload: others

Post on 26-Mar-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 第2章 認識Arduino - ntpc.edu.tw

第2章 認識Arduino

2-1 淺談Arduino

2-2 Arduino 系列控制板介紹

2-3 Arduino 系統架構

2-4 Arduino 接腳

Page 2: 第2章 認識Arduino - ntpc.edu.tw

2-1 淺談Arduino

Arduino 是如何開始的呢?根據維基 百科所提,發起人Massimo Banzi之前 是義大利 Ivrea 鎮一家高科技設計學 校的老師,他的學生們經常抱怨市面 上可用的微控制器與零件太過昂貴, 在2005 年Massimo Banzi 跟David Cuartielles 討論後決定設計自己的電路板,且引入Massimo Banzi 的學生David Mellis 設計電路板及編寫程式,並以Ivrea 鎮有名的歷史人物Arduin(11 世紀北義大利國王)為名,這才開啟了Arduino 的一切。 詳細內容可見David Kushner 在IEEE Spectrum 的介紹 http://spectrum.ieee.org/geek-life/hands-on/the-making-of-arduino/0 。

Page 3: 第2章 認識Arduino - ntpc.edu.tw

2-1 淺談Arduino

Arduino 使用了Atmel AVR 單晶片,採用了基於開放原始碼(source code)的軟硬體平臺,此平臺不只包含了一塊簡單I/O 功能的電路板,也使用簡化的C/C++ 程式語言,提供眾多函式庫,方便開發。比起其它微控制器,Arduino 具有下列的優勢:

1.價廉物美:比起其他微控制器Arduino 板是相對便宜的,因為Arduino的硬體電路圖在網路上開放下載,使用者可以自行焊接組裝,或是直接購買Arduino 官方或第三方廠商製作的開發板;而程式開發軟體ArduinoIDE 則可從網路上免費下載使用,將學習與開發的成本降至最低。

2.跨平臺:Arduino 的開發軟體可在不同的作業平臺下執行,包含Windows,Macintosh OSX 和Linux。

Page 4: 第2章 認識Arduino - ntpc.edu.tw

2-1 淺談Arduino

3. 簡單、清晰的編程環境:Arduino 將單晶片編程的繁瑣細節包起來,也簡化了與微控制器的工作,讓開發流程更加順暢,是一個適合教學與學習的環境。

4. 開放原始碼和可擴展的軟體:Arduino 軟體採用開放原始碼的方式,任何經驗豐富的程式設計師都可從官網下載後,根據自己的需求予以擴展;Arduino 的函式庫由C++ 撰寫,若想了解技術細節可從中學習。

5. 開放原始碼和可擴展的硬體:Arduino 是基於Atmel 的ATmega168、Atmega328 微處理器,其開發板的設計電路圖允許在創用CC(Creative Commons)的許可下,讓經驗豐富的電路設計者依自己的設計予以擴展和改善,由於官方網站的教學內容豐富,社群分享的參考資料多,讓即使缺乏經驗的用戶也能自行建立電路板,節省金錢。

Page 5: 第2章 認識Arduino - ntpc.edu.tw

2-1 淺談Arduino

Arduino 內建ADC 以及PWM 方式輸出的DAC,是個親和性很高的物 理訊號處理平臺(第1 章圖 1-5 所示),透過感測器(sensor)可取得周遭生活中的物理量,包括溫濕度、亮度、聲音、位移變化等,經過C 語言處理後,以文字、聲、光呈現,非常適合藝術家、設計師、業餘愛好者;且Arduino 具備標準的串列傳輸介面,很容易與Microsoft Visual Studio、Flash、Processing、Scratch、Max/MSP 等軟體溝通,快速打造出互動的科技藝術裝置作品。

Page 6: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

2-2.1 官方版Arduino 來自Arduino 義大利原廠的控制板種類繁多,各有各的特色,使用者可依需求選用: 1. UNO 板是Arduino 在2010 年推出的標準版本,R3 板子上有兩個處理器,一個負責與電腦的USB 通訊Atmega16U2,另一個負責處理程式ATmega328,適合一般實驗用途。

Page 7: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

2. Leonardo 板使用內建USB 通訊功能的ATmega32u4 晶片,此MCU 具備USB 通訊加ATmega328 二合一功能,因此價格較低廉,且可兼任類似電腦一樣,同時與鍵盤與滑鼠進行通訊和運作的功能,適合希望透過USB控制到電腦鍵盤、滑鼠需求的場合。註:此硬體技術叫做HID(Human Interface Device 人性化介面裝置)。

Page 8: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

3. Arduino Fio 板使用3.3V 的高速處理器晶片,板子的下方有一個可以連接無線傳輸XBee 的孔座,Fio 適用於需要無線傳輸或以無線的方式進行燒錄程式的專案。為降低成本,Fio 將大多Arduino 板都會有的FTDI 晶片(USB 通訊)移除,若要燒錄需使用USB to TTL3.3V 轉接板,或使用XBee 無線方式傳輸。Fio 上的USB 接頭無法與電腦端溝通,單純用來供電與充電(Fio 內建鋰聚合電池的充電電路)。

Page 9: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

4. Arduino Yún(讀音為雲)與Leonardo 一樣,是以ATmega32U4 為核心的控制器,加上獨立內嵌的AR9331 處理器組成一個具有Wifi 功能的控制板,適合需要無線傳輸或無線燒錄程式的專案。

對Yún(雲)板有興趣的同學,可Google一下網站上的相關教學與報導。

Page 10: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

5. 若UNO 及Leonardo 板提供的類比/ 數位IO 不夠用, 可選擇Arduino的巨大版Mega 系列,提供了有16 個類比輸入、54 個數位I/O、14 個PWM、4 個UART,十分強大,但CPU 時脈同UNO 板只有16MHz。 6. Arduino Due 是基於32 位元ARM Cortex-M3 核心的Atmel SAM3X8E微控制器開發板,不只I/O 功能強大,CPU 時脈84MHz 也很快。

Page 11: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

7.若需要與麵包板結合使用,則可選擇Arduino Micro 板、Nano 板或Mini板,其腳位與麵包板上的間距相同,可直接插在麵包板上開發、實驗。

8.若需要小型或搭配在衣服上的應用,則可選擇LilyPad,其圓形鈕扣狀的設計很容易嵌入織品中,設計給表演藝術者製作互動型的T-shirts。

Page 12: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

表2-1 為各版本針對核心CPU、時脈頻率、可用的類比及數位I/O 數進行的比較表

Page 13: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

Page 14: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

2-2.2 第三方Arduino Arduino 採用開放原始碼的創用CC 概念,吸引了很多創客(maker)的眼光並競相效仿,因此看到原廠板子不符合需求時, 創客便會參考Arduino 官方網站公開的硬體電路,開始自製有別於原廠的Arduino 板,但因為Arduino 為註冊商標,因此大多以xxxduino 來命名, 例如Seeeduino、Freeduino、Boarduino、Roboduino、Teensyduino、Sanguino、RFduino 等,也有一些從名稱上看不出相關字眼的板子,如Funnel IO、Arduclema、OZONE;下列介紹幾款常見的版本。

Page 15: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

1. Seeeduino:是Arduino 相容性產品中支援最多的一家廠商,其外觀大小、IO 腳位與Arduino 差異不大,可互相支援。有別於Arduino,Seeeduino有幾個獨特的設計,包括手自動的RESET 選擇,容易與周邊模組連接的4pin Grove 介面等。

2. Boarduino、Teensyduino:皆為實驗時,方便接至麵包板所設計的開發板。

圖 2-2 第三方Arduino外觀圖(圖片來源:各開發公司網站)

Page 16: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

3. Roboduino:針對機器人應用時,需同時控制很多伺服機而設計的開發板。

4. RFduino:只有指頭大小的RFduino 為超迷你的Arduino 開發板,內建低功率藍牙無線傳輸,可與任何支援藍牙4.0 的智慧型手機溝通。RFduino 使用32 位元的ARM cotex-M0 處理器功能強大,若要擴充其它功能,直接插在麵包板上即可擴展,或可透過其專屬的擴展板疊接。

圖 2-2 第三方Arduino外觀圖(圖片來源:各開發公司網站)

Page 17: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

5. OZONE: 完全與Arduino Leonardo 相容, 除此之外, 還加上利基公司特有的共用通道匯流排(cmdBUS),在不占用原有I/O 情況下進行LCD、鍵盤、三軸加速度感測等模組的功能擴充。此控制板於第16 章有詳細介紹。

Page 18: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

另外有一些比較高階應用的板子,例如Spark Core 和Arduino Yún 一樣是塊Wifi 的開發板,可透過Wifi 無線網路連接並進行程式開發,且內建雲端開發平臺,可隨時進行雲端服務;UDOO 採用和Arduino Due 一樣的處理器,且擁有雙核或四核的ARM cortex-A9 CPU,可安裝Android 或是Linux 的作業系統,進行複雜的運算或運用。

Spark Core

圖片取自露天拍賣網站

UDOO

圖片取自露天拍賣網站

Page 19: 第2章 認識Arduino - ntpc.edu.tw

2-2 Arduino 系列控制板介紹

2-2.3 擴展板(shield) Arduino 標準版的I/O 及電源均可透過杜邦母座與外部電路連接,除了可使用跳線連接至應用電路外,更可採疊接的方式,擴展出不同的功能,目前針對Arduino 標準版所發展出來的擴展板有很多,例如馬達控制擴展板、乙太網路擴展板、RFID 擴展板、Wifi 擴展板、GPRS 擴展板、藍牙擴展板、GPS 擴展板、按鍵搖桿擴展板等,可視需要購買,堆疊出所求的功能。

Page 20: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

2-3.1 AVR 族群簡介 Arduino 採用Atmel 公司的AVR(Alf and Vegard's RISC processor)系列晶片,AVR 主要應用在Atmel 公司8 位元的AT90、ATmega、ATtiny系列的單晶片微控制器上,後期AVR 還有應用在8/16 位元的Xmega 系列、32 位元的AVRs 系列,其記憶體大小、速度、腳位和周邊都愈來愈多,其中:

1. AT90 系列為最早開發出來的AVR 單晶片微控制器產品。 2. ATmega 系列為AT90 系列功能提昇版本。 3. ATtiny 系列為AT90 的產品簡化版,其IC 腳數最少只有8pins,

方便將產品小型化。

Page 21: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

2-3.2 ATmega328 晶片的特性與系統架構 本節主要介紹UNO 板 R3 上的單晶微控制器ATmega328,此晶片的主要特性摘要如表2-2 所示,從核心的元件特性來看Arduino UNO,應該會有更不一樣的認識。同樣是UNO 板,有些板子上的ATmega328 封裝不一樣,如圖 2-4 所示,有PDIP 塑膠雙排針腳式封裝,及TQFP 薄型方形扁平封裝兩種。

Page 22: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

Page 23: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

Page 24: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

圖 2-5 為AVR 系列ATmega328 的微控制器內部方塊圖,由圖中可看出ATmega328 除了微電腦的五大單元外,尚包括了許多周邊電路,方便使用者運用,例如: 1. T/C(計時器timer/ 計數器counter):方便CPU 計算時間及計

數外部脈波的次數,ATmega328 提供了二個8 位元的計時/ 計數器,一個16 位元計時/ 計數器;Arduino 中提供了很方便的延遲指令delay、模擬類比輸出analogWrite、計算脈波寬度pulseIn 等,皆為T/C 完成的。

2. Watchdog Timer(看門狗計時器WDT):看門狗計時器主要是用來防止CPU 執行時跳到未知的地方,或者進入閉環等當機情況發生的機制。其動作原理是設計一個可以獨立計時,不受CPU 振盪電路控制的看門狗計時器WDT,當WDT 被啟動,CPU 必須配合WDT 時間,不斷的將計時器清除,當CPU 發生當機,無法將看門狗計時器清除時,WDT 便會計時結束,而自動發出重置訊號,使系統重新開機,這就是利用WDT 來防止CPU 當機的方法。

Page 25: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

3. Oscillator Circuits/Clock Generation(振盪電路/ 時脈產生器):所有的微電腦系統都是同步式的順序邏輯(sequential logic)系統,整個系統的工作完全依賴系統內部的時脈信號,利用它來產生各種動作週期及同步信號。使用時只需要接上石英振盪晶體(16MHz)及電容就可以讓系統產生正確的時脈信號,或是不接任何元件,直接使用內部振盪電路的時脈(8MHz)。

4. A/D Conv.:提供類比信號(感測器量測到的溫度、濕度、亮度等物理量)轉換為數位信號的電路,方便進行控制。

Page 26: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

5. 5. 通用串列傳輸介面:AVR 提供了三種通用的串列傳輸介面,大幅提高AVR 對外的溝通能力與使用方便性,這也是Arduino 好用的原因之一。

1) USART 介面:此為通用同步異步接收發送器(universal synchronousasynchronous receiver/transmitter)的縮寫,主要負責與周邊或一些通訊介面(例如RS-232、RS-485)進行同步或非同步的串列傳輸。

Page 27: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

2) SPI 介面:為串列周邊介面(serial peripheral interface bus)的縮寫,是一種4 線或3 線的同步串列資料協定,主要提供程式燒錄用,讓AVR 可以線上即時燒錄(ICSP:in-circuit serial programming),或與SPI 的周邊模組進行資料傳輸。

3) TWI 介面:即IIC 介面(inter-integrated circuit;內部整合電路),亦可寫為I2C,唸作I square C;I2C 匯流排為PHILIPS 公司開發的兩線式串列匯流排,用於連接微控制器及其周邊設備。I2C 由資料線SDA 和時脈SCL 構成,可在MCU 與周邊IC 間、或周邊IC 與IC 間進行雙向傳送,標準傳送速率為100kbps。

Page 28: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

Page 29: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

Page 30: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

2-3.3 開機載入程式bootloader Arduino 之所以平易近人,並非只有AVR 的架構及功能所致,主因還有bootloader(開機載入程式)。bootloader 屬於韌體(firmware),是一支前置在程式記憶體起動區中的程式,透過bootloader 便可以直接把待燒錄的程式上傳到晶片上,不需要額外的AVR ISP 燒錄裝置。Arduino 開發板的微控制器晶片皆預先燒錄好bootloader,開機流程為:

1. bootloader 先等幾秒看看是否要進行燒錄。 2.若要燒錄, 則由Arduino 開發軟體中的燒錄程式與Arduino 板

子中的bootloader 通力合作燒錄程式。 3.若不燒錄,則將控制權交給一般程式區裡的程式碼。

Page 31: 第2章 認識Arduino - ntpc.edu.tw

2-3 Arduino 系統架構

Bootloader 讓燒錄的工作變得非常方便,但也出現了二個缺點: 1.會占用部分flash(程式記憶體),UNO 板的bootloader 占約

0.5KB,Leonardo 板占約4 KB(ATmega328 的flash 為32KB)。 2.因啟動時需先等幾秒判斷是否要燒錄的動作,故正常應用時也無

法一開機就動作,此問題在UNO 板R3 已改善,但Leonardo 板仍可看到此問題。

•平常使用Arduino IDE 進行實驗時,既不用準備AVR ISP 燒錄器,也不需在 ICSP 介面上接任何連接線,只要透過USB 介面就可上傳程式,會這麼方便全因有 bootloader 的關係。

Page 32: 第2章 認識Arduino - ntpc.edu.tw

2-4 Arduino 接腳

•為方便實驗,本節介紹最穩定、耐操、適合入門的UNO 板接腳,還有比較新可控制到電腦鍵盤、滑鼠需求場合的Leonardo 板。

2-4.1 UNO 板接腳 •圖 2-6 所示為實際UNO 板上的腳位圖,其中粉紅色底的數字為

數位IO、綠色底數字為類比IO,另外也標示了電源、SPI(ICSP)、I2C 及中斷用途接腳。詳細說明如下:

1.使用者可透過數位(digital)I/O 接腳(D0 ~ D13)控制LED

燈亮滅、喇叭發聲、馬達控制,或讀入開關狀態。 2.部分的數位接腳也可以脈波寬度調變PWM(Pulse Width

Modulation)的方式模擬類比(analog)輸出,可控制LED 明暗、馬達速度快慢,如圖 2-6 中的3、5、6、9、10、11 腳,在UNO 板上以「~」標示。

Page 33: 第2章 認識Arduino - ntpc.edu.tw

2-4 Arduino 接腳

3. 類比接腳(A0 ~ A5)可進行溫度、濕度、亮度等感測器的物理量量測。

4. TX/RX 支援串列埠傳輸UART,當使用時,D0、D1 不可作為數位I/O 使用。

5. 當數位腳位不夠用時,類比接腳A0 ~ A5 可拿來使用,宣告為D14 ~ D19。

6. 當需要使用ICSP 進行燒錄時或與其它周邊傳輸資料時,可透過圖 2-6 右側的ICSP 插座,或是D10 ~ D13 進行。

7. UNO 板提供二個硬體中斷I/O(INT0、INT1),可設定為正緣、負緣或正負緣觸發。

Page 34: 第2章 認識Arduino - ntpc.edu.tw

2-4 Arduino 接腳

Page 35: 第2章 認識Arduino - ntpc.edu.tw

2-4 Arduino 接腳

2-4.2 Leonardo 接腳 •圖 2-7 為Leonardo 的腳位圖,與UNO 板相比,雖然尺寸大

小、杜邦母座的數目與位置都一樣,但功能略有不同,差異說明如下:

1.類比輸入接腳多了6 個,共有12 個通道可用,A0 ~ A11。 2.可進行PWM 的接腳,多了D13。 3. Leonardo 板提供五個硬體中斷I/O(INT0 ~ INT4),可設

定為正緣、負緣或正負緣觸發。 4. I2C/TWI 介面部分,UNO 板使用A4(SDA) 與A5(SCL) 腳,

而Leonardo 使用2(SDA)與3(SCL)腳。 5. SPI 介面部分,UNO 板同時配線至ICSP 腳座及一些數位IO

上SS(10)、MOSI(11)、MISO(12)、SCK(13),但Leonardo 的SPI 都在ICSP 上,SS 則位於板子左邊與RX LED 相連。

Page 36: 第2章 認識Arduino - ntpc.edu.tw

2-4 Arduino 接腳

6. Leonardo 的核心晶片與UNO 不一樣,只使用一個處理器,可同時建立USB 通訊及處理程式執行,故在USB 端沒有ICSP 的接頭。

7. 由於Leonardo 把建立的串列通訊功能放在bootloader 中,不建立在電腦中,故每次按下Reset 進行重置時,Leonardo 板會將先前建立的串列通訊埠中斷並重新建立連線,所以Leonardo 會在每次燒錄程式時先中斷串列通訊埠,然後再建立連線(會聽到電腦端有解除裝置然後又裝上裝置的聲音);而像UNO 板上有USB 通訊專用的微處理器處理,即使板子Reset,仍會保持與電腦端的USB 通訊。

Page 37: 第2章 認識Arduino - ntpc.edu.tw

2-4 Arduino 接腳