什麼是 Arduino?它的特色為何?可以拿來做什麼應用?本文將回答這些基本的問題,帶你認識 Arduino。
分享一個 Arduino 教學心得:學習 Arduino 最好的方法,就是買張 Arduino 控制板和一些電子零件,捲起袖子實際動手做,唯有如此,才能夠真正體驗 Arduino。所以,本文不會花太多的篇幅在文字上作描述,將很快速的介紹 Arduino,讓你在最短的時間內認識 Arduino。
什麼是 Arduino
如下圖,Arduino 是一張微控制器板子(microcontroller board),大約一個手掌大。
使用者可以在 Arduino 板子上接上各種電子裝置,例如 LED 燈、喇叭、馬達、開關、溫濕度感測器、紅外線發射與接收器、LCD 顯示裝置,以及 Ethernet, WiFi, XBee, Bluetooth, RFID, GPS 等各種通訊模組。
若再配合撰寫一些自動控制的程式,就能利用 Arduino 做出各式各樣的自動控制應用,例如利用溫度感測器控制風扇的運轉、使用可變電阻控制燈光的明暗、控制馬達的轉速、利用紅外線遙控家電/ 利用伺服機(Servo)控制機械手臂或機器人,以及製作自走車、飛行器等等。
Arduino 的特色
簡單來說,Arduino 有下列這些特色:
- 開放源碼。不僅軟體是開放源碼,連硬體也是開放的。開發軟體用的 IDE 可免費下載,Arduino 的電路設計圖也可以從網路上下載。
- 簡單好用資源多。傳統上,要開發微控制器的程式,開發者需要具備電子電機相關科系的背景,一般人不容易進入這個世界。Arduino 進入門檻低,即便沒有電子電機相關科系的背景,也可以很容易學會使用 Arduino。再者,由於 Arduino 開放的精神,很多人都樂於分享他們的作品,所以網路上有非常多的資源。很多時候,我們只要參考網友的作品,配合自己的需求調整一下設計,就可以在短時間內完成自己的作品。
- 物美價廉。一張微控制器板子動輒 3000 元台幣,相較於這類微控制板子,Arduino 控制板只要 30 美元左右,可以說是俗擱大碗。
Arduino 的應用
Arduino 的應用非常多,不勝枚舉,底下只舉幾個我所知的應用:
LilyPad - 可穿戴在身上的 Arduino,這東西應該可以拿來做鋼鐵人的發光手套。
Easy Robot 簡易機器人 - 一個很簡單的機器人自走車,網路上有完整的製作教學。
Robot ARM - 使用 Arduino 控制機械手臂。
ArduCam - 利用 Arduino 遙控相機
Drum Kit - 電子鼓,有了 Drum Kit,你也可以搖身一變成為一個鼓手
ArduCopter - 四軸直升機,哇嗚!這東西看了真是令人興奮,有錢應該買一台。
Home Power Monitoring - 家庭用電監測系統,利用電流感測器(Current Transducer)監測家庭用電,並且透過 Ethernet 把用電數據傳到網路上,以 Flash 圖表呈現,讓使用者透過瀏覽器就可以看到家裏的用電情形。
Arduino 硬體規格
底下說明 2010 年最新的板子 Ardunio UNO 的硬體規格。Arduino UNO 的外觀如下:
硬體規格:
微控制器 | ATmega328 |
工作電壓 | 5V |
輸入電壓(建議) | 7-12V |
輸入電壓(限制) | 6-20V |
數位 I/O Pins | 14 支(其中有 6 支腳位可提供 PWM 輸出) |
類入 Input Pins | 6 支 |
I/O pin 直流電流 | 40mA |
3.3V pin 直流電流 | 50mA |
Flash 記憶體 | 32KB, 其中 0.5KB 拿去給 bootloader 使用 |
SRAM | 2KB |
EEPROM | 1KB |
時脈 | 16MHz |
數位 I/O Pins:
14 支數位 I/O Pins 可以當作 input 使用,也可以當作 output 使用,使用方法是透過 pinMode(),digitalWrite(), and digitalRead() 這幾個函式。這 14 支數位 I/O Pins,其中幾支腳有特殊的功能:
Serial 通訊 | 0(RX) 和 1 (TX) 這兩支腳。用來接收(RX)與傳輸(TX) TTL 訊號的序列資料。這兩支腳也連接到 USB Converter 晶片中。 |
外部中斷 | 2 和 3 這兩支腳。這兩支腳可以利用外部事件觸發中斷。詳細內容請參考 attachInterrupt() 函式。 |
PWM | 3, 5, 6, 9, 10 和 11 共六支腳。透過 analogWrite() 函式可以提供 8-bit 的 PWM 輸出。 |
SPI | 10 (SS), 11 (MOSI), 12 (MISO) 和 13 (SCK) 這四支腳。這四支腳搭配 SPI Library 可提供 SPI 序列通訊。 |
LED | 13。內建一顆 LED,當 pin 腳為 HIGH 時,LED 打開,當 pin 腳為 LOW 時,LED 關閉。 |
類比輸入 Pins:
Arduino Uno 有 6 支類比輸入腳,標記為 A0 到 A5,每支腳都可提供 10 位元的解析 (即 1024 種不同的數值)。這些腳位所用的參考電壓預設為 0 到 5V,不過參考電壓也是可以更改的,方法是透過 AREF 腳和analogReference() 函式。
另外,有幾支腳也有特殊功能:
I2C | 4 (SDA) 和 5 (SCL) 這兩支腳。透過 Wire library 可以提供 I2C 通訊。 |
其它:
AREF | 類比輸入的參考電壓,搭配 analogReference() 函式一起使用。 |
Reset | 當 Reset 腳為 LOW 時,微控制器會重置。 |
Arduino 軟體開發環境
Arduino 的軟體開發環境是開放源碼的 IDE (Open-source IDE),可以在它的官網免費下載,它所用的程式語言語法類似於 C/C++,而且 Arduino IDE 是跨平台的,有 Windows, Macintosh OSX 和 Linux 的版本。Arduino IDE 的軟體介面如下:
Arduino 的程式叫作 Sketch,Sketch 意為腳本、素描、速寫或小品,因為 Arduino 程式都小小一個,不是很大,之所以取名為 Sketch,猜想大概有小品的意思。Arduino 程式主要由 setup() 和 loop() 這兩個函式組成:
1 | void setup() { |
2 | // setup 函式只會跑一次 |
3 | } |
4 |
5 | void loop() { |
6 | // loop 函式會不斷的執行 |
7 | } |
因為 setup() 和 loop() 是每支 Arduino 程式都會用到的兩個函式,為了方便,Arduino IDE 已經幫大家準備好程式骨架了,我們在寫 Arduino 程式的時候,可以直接點選 File > Examples > 1.Basics > BarMinimum 這個範本檔,另存新檔後,然後再填寫 setup() 和 loop() 兩個函式的內容即可。
Arduino 硬體版本
Arduino 控制板 (I/O Boards)有很多種版本,我們在使用的時候,可以依據自己的需求(例如用途、尺寸、容量、I/O 腳數量等)挑選適當的板子。底下條列幾款 Arduino 控制板,更多的資訊請上 Arduino 官網查詢。
Arduino Uno | Arduino Mega |
Arduino Duemilanove | Arduino Fio |
Arduino Nano 3.0 | LilyPad Arduino 02 |
Arduino Mini | Arduino BT (BlueTooth) |
Arduino 擴充板 (Shields)
Shields 是擴充板,就像好像堆積木一樣,擴充板可以直接疊在 Arduino 控制板上,讓 Arduino 增加更加的能力,例如控制搖桿、通訊、記憶卡、LCD 顯示、MP3 音樂播放等等。底下條列幾款擴充板,更多的資訊請上 Arduino Shield List 網站查詢。