Arduino

**Arduino** 是一個開源嵌入式硬體平台，用來供使用者製作可互動式的嵌入式專案。此外 Arduino 作為一個開源硬體和開源軟體的公司，同時兼有專案和使用者社群。該公司負責設計和製造 Arduino 電路板及相關附件。這些產品按照 GNU 寬通用公共許可證（LGPL）或 GNU 通用公共許可證（GPL）許可的開源硬體和軟體分發的，Arduino 允許任何人製造 Arduino 板和軟體分發。 Arduino 板可以以預裝的形式商業銷售，也可以作為 DIY 套件購買。

Arduino 專案始於 2005 年，作為義大利伊夫雷亞地區伊夫雷亞互動設計研究所的學生專案，目的是為新手和專業人員提供一種低成本且簡單的方法，以建立使用感測器與環境相互作用的裝置執行器。適用於初學者愛好者的此類裝置的常見範例包括感測器、簡單機器人、恆溫器和運動檢測器。

Arduino 這個名字來自義大利伊夫雷亞的一家酒吧，該專案的一些創始人過去常常會去這家酒吧。 酒吧以伊夫雷亞的 Arduin（Arduin of Ivrea）命名，他是伊夫雷亞邊疆伯爵，也是 1002 年至 1014 年期間的義大利國王。

## 關於

Arduino 系列電路板的設計大多使用 Atmel AVR 單片機。這些電路板配有一組數字和類比 I/O 引腳，可以連接各種擴展板或麵包板（Shields 擴充版) 和其他電路。這些電路板具有串列埠，包括某些型號上的通用串列匯流排（USB），也用於從個人電腦載入程式。

軟體編程方面，通常使用 C/C++ 程式語言，官方提供了一個 Arduino IDE 用開發。除了使用傳統的編譯工具鏈之外，Arduino 項目還提供了一個基於 Processing 語言專案的整合開發環境。另外，一些少兒編程教育軟體提供了對 Arduino 的可視化編程。

## 開發沿革

Arduino 的核心開發團隊成員包括：馬西莫・班齊（Massimo Banzi）、大衛・奎提耶斯（David Cuartielles）、湯姆・伊果（Tom Igor）、贊布羅塔・馬提諾（Gianluca Martino）、大衛・梅利斯（David Mellis）和尼可拉斯・蘭比提（Nicholas Zambetti）。

據說馬西莫・班齊之前是義大利 Ivrea 一家高科技設計學校的老師。他的學生們經常抱怨找不到便宜好用的微控制器。2005 年冬天，馬西莫・班齊跟大衛・奎提耶斯討論了這個問題。大衛・奎提耶斯是一個西班牙籍晶片工程師，當時在這所學校做訪問學者。兩人決定設計自己的電路板，並引入了馬西莫・班齊的學生大衛・梅利斯為電路板設計程式語言。兩天以後，大衛・梅利斯就寫出了程式碼。又過了三天，電路板就完工了。這塊電路板被命名為 Arduino。幾乎任何人，即使不懂電腦編程，也能用 Arduino 做出很酷的東西，比如對感測器作出回應，閃爍燈光，還能控制馬達。隨後馬西莫・班齊、大衛・奎提耶斯和大衛・梅利斯把設計圖放到了網上。保持設計的開放原始碼理念，因為著作權法可以監管開源軟體，卻很難用在硬體上，他們決定採用創用 CC 許可。創用 CC 是為保護開放著作權行為而出現的類似 GPL 的一種許可（license）。在創用 CC 許可下，任何人都被允許生產印刷電路板的複製品，還能重新設計，甚至銷售原設計的複製品。你不需要付版稅，甚至不用取得 Arduino 團隊的許可。然而，如果你重新發佈了參照設計，你必須說明原始 Arduino 團隊的貢獻。如果你調整或改動了電路板，你的最新設計必須使用相同或類似的創用 CC 許可，以保證新版本的 Arduino 電路板也會一樣的自由和開放。唯一被保留的只有 Arduino 這個名字。它被註冊成了商標。如果有人想用這個名字賣電路板，那他們可能必須付一點商標費用給 Arduino 的核心開發團隊成員。

贊布羅塔・馬提諾創立的 Arduino Srl 被 2009 年創立的 Arduino LLC 控告侵犯了他們的著作權，這第二家被控侵權的 Arduino（也就是 Arduino Srl），原先叫做 Smart Projects Srl，以前是在義大利負責生產製造 Arduino 控制板的公司。而第一家 Arduino（也就是我們較熟悉的 Arduino LLC）則負責開發控制板，並管理周邊的開源專題與社群。在之前，原本雙方是合作的關係；2014 年馬提諾與另外四位共同創辦人，對於 Arduino 品牌的發展方向意見不合，導致馬提諾另外請費德里科・穆斯托擔任 Smart Projects 的新執行長，並把公司名稱改為 Arduino Srl。

## 特色

* 基於創用 CC 開源的電路圖設計。
* 免費下載，也可依需求自己修改，但需遵照姓名標示，按照作者或授權人所指定的方式，表彰其姓名。
* 依相同方式分享，若改變或轉變著作，當散布該衍生著作時，需採用與本著作相同或類似的授權條款。
* Arduino 可使用 ICSP 線上燒入器，將 Bootloader 燒入新的 IC 晶片。
* 可依據 Arduino 官方網站，取得硬體的設計檔，加以調整電路板及元件，以符合自己實際設計的需求。
* 可簡單地與感測器及各式各樣的電子元件連接，如紅外線、超音波、熱敏電阻、光敏電阻、伺服馬達等。
* 支援多樣的互動程式，如 Adobe Flash、Max/MSP、VVVV、Pure Data、C 及 Processing 等。
* 使用低價格的微處理控制器（Atmel AVR）（ATmega8、168、328 等）。
* USB 介面，不需外接電源。另外有提供直流（DC）電源輸入。

## 硬體

### 官方硬體

原始的 Arduino 硬體是從一間義大利公司 Smart Projects 製造有些 Arduino 硬體則是被官方授權由美國公司 SparkFun Electronics 和 Adafruit Industries 設計。。

* Arduino 硬體範例
* * * * * * * * * * * *

### Shields

「Shields」擴充版能夠插入 Arduino 和 Arduino 相容硬體，用途是增加 Arduino 硬體本身沒有的功能，如馬達控制、GPS、有線網路、液晶顯示器或者是麵包板。使用者也可以自己動手做 Shields 擴充版。

* Arduino shields 擴充版範例
* * * * *

## 軟體

在 Arduino 上執行的程式可以使用任何能夠被編譯成 Arduino 機器碼的程式語言編寫，Arduino 官方推薦使用整合了 arduino 庫的 C++ 進行編程。

多數 Arduino 電路板上 MCU 的製造商 Atmel 公司也提供了數個可以開發 Atmel 微處理機程式的整合開發環境，AVR Studio 和更新的 Atmel Studio。

目前微軟在其 Visual Studio 也有提供 Arduino 的 SDK，在編譯執行上更方便。

 

### IDE

Arduino 計劃也提供了 Arduino Software IDE，一套以 Java 編寫的跨平台應用軟體。Arduino Software IDE 源自於 Processing 程式語言以及 Wiring 計劃的整合開發環境。它是被設計於介紹程式編寫給藝術家和不熟悉程式設計的人們，且包含了一個擁有語法突顯、括號匹配、自動縮排和一鍵編譯並將執行檔燒寫入 Arduino 硬體中的編輯器。

Arduino Software IDE 使用與 C 語言和 C++ 相仿的程式語言，並且提供了包含常見的輸入 / 輸出函式的 Wiring 軟體函式庫。在使用 GNU toolchain 編譯和連結後，Arduino Software IDE 提供了一個程式「avrdude」用來轉換可執行檔成為能夠燒寫入 Arduino 硬體的韌體。

### Sketch

使用 Arduino Software IDE 編寫的程式被稱為「sketch」。一個典型的 Arduino C/C++ sketch 程式會包含兩個函式，它們會在編譯後合成為 main () 函式：

* setup ()：在程式執行開始時會執行一次，用於初始化設定。
* loop ()：直到 Arduino 硬體關閉前會重複執行函式放的程式碼。

## 相關裝置名稱

* BASIC Stamp
* OOPic
* PICAXE
* Parallax Propeller
* Fritzing
* Gumstix
* ioBridge
* Make Controller Kit
* Minibloq
* 樹莓派 - 單板機電腦
* Simplecortex

## 參見

* 創作共享

## 注釋

## 參考資料

### 補充資料

* _Exploring Arduino: Tools and Techniques for Engineering Wizardry_; 2nd Ed; Jeremy Blum; Wiley; 512 pages; 2019; ISBN 978-1119405375.
* _Arduino For Dummies_; 2nd Ed; John Nussey; John Wiley & Sons; 400 pages; 2018; ISBN 978-1119489542.
* _Programming Arduino Next Steps: Going Further with Sketches_; 2nd Ed; Simon Monk; McGraw-Hill Education; 320 pages; 2018; ISBN 978-1260143249.
* _Programming Arduino: Getting Started With Sketches_; 2nd Ed; Simon Monk; McGraw-Hill Education; 192 pages; 2016; ISBN 978-1259641633.
* _Beginning C for Arduino: Learn C Programming for the Arduino_; 2nd Ed; Jack Purdum; Apress; 388 pages; 2015; ISBN 978-1484209417.
* _Arduino: A Quick Start Guide_; 2nd Ed; Maik Schmidt; Pragmatic Bookshelf; Pragmatic Bookshelf; 323 pages; 2015; ISBN 978-1941222249.
* _Make: Getting Started with Arduino_; 3rd Ed; Massimo Banzi, Michael Shiloh; Make Community; 262 pages; 2014; ISBN 978-1449363338.
* _Make: Sensors_; 1st Ed; Tero Karvinen, Kimmo Karvinen, Ville Valtokari; Make Community; 400 pages; 2014; ISBN 978-1449368104.
* _Arduino Workshop: A Hands-On Introduction with 65 Projects_; 1st Ed; John Boxall; No Starch Press; 392 pages; 2013; ISBN 978-1593274481.

## 外部連結

* Arduino（頁面存檔備份，存於網際網路檔案館）
* Make Magazine article on the Arduino
* "Wiring" software project: http://wiring.org.co/（頁面存檔備份，存於網際網路檔案館）
* Flickr 上有關 Arduino 的圖片（頁面存檔備份，存於網際網路檔案館）
* Arduino tutorial（頁面存檔備份，存於網際網路檔案館） – broken into several lessons with photographs and suggestions for appropriate tools for beginners.
* Introduction to the Arduino - Weekend Project Podcast
* Sheepdog Software's Introduction to Arduino（頁面存檔備份，存於網際網路檔案館）："Getting Started" pages and sequenced programming tutorials, with help on hardware.
* Wired article about open source hardware, focusing on Arduino（頁面存檔備份，存於網際網路檔案館）
* 新竹交通大學毛先生的資料（頁面存檔備份，存於網際網路檔案館）
* Freeduino 索引
* 自製 USB AVR 燒錄器（頁面存檔備份，存於網際網路檔案館）
* Arduino: Robotics for beginners (Spanish with English subtitles)（頁面存檔備份，存於網際網路檔案館）
* Arduino tutorial – in portuguese, but with source codes and videos.
* Cooper Maa 的 Arduino 筆記（頁面存檔備份，存於網際網路檔案館）
* Arduino 中文教程 - Arduino 中文社群（頁面存檔備份，存於網際網路檔案館）
* Arduino 中文教程
* 柯博文老師的 arduino 教學（頁面存檔備份，存於網際網路檔案館）