本頁使用了標題或全文手工轉換

Arduino

維基百科,自由的百科全書
跳至導覽 跳至搜尋

Arduino是一家製作開源電腦硬體和軟體的公司,同時兼有專案和用戶社群,他負責設計和製造單板微控制器和微控制器套件,用於構建數位裝置和互動式物件,以便在物理和數位世界中感知和控制物件。該專案的產品是按照GNU寬通用公共許可證(LGPL)或GNU通用公共許可證(GPL)[1] 許可的開源硬體和軟體分發的,Arduino允許任何人製造Arduino板和軟體分發。 Arduino板可以以預裝的形式商業銷售,也可以作為自製(DIY)套件購買。

Arduino電路板設計使用各種微處理器和控制器。這些電路板配有一組數字和模擬輸入/輸出(I/O)引腳,可以連接各種擴充功能板或麵包板(屏蔽板)和其他電路。這些電路板具有串列埠,包括某些型號上的通用串列匯流排(USB),也用於從個人電腦載入程式。微控制器通常使用C/C++程式語言。除了使用傳統的編譯工具鏈之外,Arduino專案還提供了一個基於Processing語言專案的整合開發環境(IDE)。

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

Arduino這個名字來自義大利伊夫雷亞的一家酒吧,該專案的一些創始人過去常常會去這家酒吧。 酒吧以伊夫雷亞的Arduin命名,他是1002年至1014年期間伊夫雷亞三國和義大利國王的統治者。[2]

關於[編輯]

它使用 Atmel AVR 單片機,採用開放原始碼的軟硬體平台,構建於開放原始碼 simple I/O 介面板,並具有使用類似 Java,C 語言的 Processing/Wiring 開發環境。

開發沿革[編輯]

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

據說馬西莫·班齊之前是義大利Ivrea一家高科技設計學校的老師。他的學生們經常抱怨找不到便宜好用的微控制器。2005年冬天,馬西莫·班齊跟大衛·奎提耶斯討論了這個問題。大衛·奎提耶斯是一個西班牙籍晶片工程師,當時在這所學校做存取學者。兩人決定設計自己的電路板,並引入了馬西莫·班齊的學生大衛·梅利斯為電路板設計編程語言。兩天以後,大衛·梅利斯就寫出了程式碼。又過了三天,電路板就完工了。這塊電路板被命名為Arduino。幾乎任何人,即使不懂電腦編程,也能用Arduino做出很酷的東西,比如對感測器作出回應,閃爍燈光,還能控制馬達。隨後馬西莫·班齊、大衛·奎提耶斯和大衛·梅利斯把設計圖放到了網上。保持設計的開放原始碼理念,因為版權法可以監管開源軟體,卻很難用在硬體上,他們決定採用創用CC許可。[3]創用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。[4]

特色[編輯]

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

硬體[編輯]

官方硬體[編輯]

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

Shields[編輯]

"Shields"擴充版能夠被插入Arduino和Arduino相容硬體。用途是增加Arduino硬體上沒有的功能,如馬達控制, GPS, 有線網路液晶顯示器,或者是麵包板。使用者也可以自己動手做Shields擴充版。[10][11][12]

軟體[編輯]

Arduino Software IDE
編寫於Arduino IDE上簡單的入門程式「Blink」的螢幕截圖
編寫於Arduino IDE上簡單的入門程式「Blink」的螢幕截圖
開發者 Arduino Software
穩定版本
穩定版本
1.8.5
(2017年9月29日,​10個月前​(2017-09-29[13]
程式語言 Java, C and C++
作業系統 Windows, macOS, Linux
類型 整合開發環境
許可協定 LGPLGPL授權
網站 arduino.cc
原始碼庫 github.com/arduino/Arduino

在Arduino上執行的程式可以使用任何能夠被編譯成Arduino機器碼的程式語言編寫。

而Atmel也提供了數個可以開發Atmel微處理機程式的整合開發環境,AVR Studio[14]和更新的Atmel Studio[15][16]

目前微軟在其Visual Studio 也有提共Arduino 的SDK 可以使用 在編譯執行更方便


IDE[編輯]

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

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

Sketch[編輯]

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

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

Arduino語言[編輯]

int LED_PIN=13;

void setup () {                    // 初始化副程式,程式起始時僅執行一次
    pinMode (LED_PIN, OUTPUT);     // 以數位輸出方式啟用Pin13
}

void loop () {                     // loop副程式,重複不斷執
    digitalWrite (LED_PIN, HIGH);  // 打開LED(發光二極管)
    delay (1000);                  // 等待一秒,delay內含數值1000,代表延遲1000毫秒,即一秒。
    digitalWrite (LED_PIN, LOW);   // 關閉LED
    delay (1000);                  // 等待一秒
}                                  // loop副程式結束

這是Arduino的Blink範例程式。

Arduino 程式可由五個部分組成 :

//1. 匯入函式庫與定義 (可有可無)

#include <SoftEasyTranfer.h>

#define LEDPIN 13;

//2. 宣告常數與全域變數 (可有可無)

const float PI=3.14159;

int r;

//3. 設定函式 (必要)

void setup() {}

//4. 無限迴圈  (必要)

void loop() {}

//5. 自訂函式 (可有可無)

float area(float r) {

  float a=PI*r*r;

  return a;

  }

其中 setup()loop() 是一定要有的函式 (均無參數無傳回值), 其他則視需要而定. Arduino 語言採用 C/C++ 語法,

加上以 Wiring 為基礎的電子設計核心函式庫組合而成, 包括 Digital I/O, Analog I/O 等函式庫. 內建的函式庫可直接調用,

但若有使用第三方函式庫(例如驅動感測器模組所需的函式庫), 則必須使用 include 前置指令引入. 此外, 也可以用前置指令 define 定義一個常數或巨集 (運算式).

前置指令乃 C 編譯器指令, 不屬於 C 語言本身, 其用途有三 :

  1. 引入標頭檔 : 例如 #include <myLibrary.h> 或 "myLibrary.h"
  2.   定義常數 : 例如 #define PI 3.14159
  3.   定義巨集 : 例如 #define AREA(r) PI*r*r

所以前置指令的功能一言以蔽之就是替換, include 就是在標頭處以指定之檔案內容替換; 而 define 就是在程式中用到所定義之常數與巨集名稱時, 以其內容替換.

巨集的功能事實上與函式類似, 不同之處是函式呼叫使用堆疊, 而巨集則是直接放在原始碼中, 執行效率較快 (但若很多地方都要用到時, 編譯後就會比較大).

標頭檔可用角括號 < > 或雙引號 "", 差別是用雙引號時, 前置處理器會先從原始檔所在位置開始去搜尋標頭檔; 而用角括號則會先從 libraries 目錄開始找.

相關裝置名稱[編輯]

參見[編輯]

注釋[編輯]

  1. ^ 1.0 1.1 這是替代廠商製作的MEGA 2560 R3的相容板。[9]

參考資料[編輯]

  1. ^ Arduino - Introduction. arduino.cc. 
  2. ^ Justin Lahart. Taking an Open-Source Approach to Hardware. The Wall Street Journal. 27 November 2009 [2014-09-07]. 
  3. ^ ChiuHao Chen. OPEN的力量:ARDUINO開放硬體計畫. [2016-03-06]. 
  4. ^ Arduino的雙胞戰爭:創始團隊的分裂始末. [2016-03-06]. 
  5. ^ M-SHORT. Installing an Arduino Bootloader. [2016-03-06]. 
  6. ^ Arduino Single-Sided Serial Board (version 3). [2016-03-06]. 
  7. ^ Redirect.... smartprj.com. 
  8. ^ Schmidt, M. Arduino: A Quick Start Guide. Pragmatic Bookshelf. January 22, 2011: 201 (英語). 
  9. ^ Arduino - ArduinoBoardMega2560. arduino.cc. 
  10. ^ Arduino breadboard shield: $10 & 10 mins. todbot blog. 
  11. ^ Arduino Shields for Prototyping. tigoe.net. 
  12. ^ Jonathan Oxer. Arduino Shield list. [5 Nov 2013]. 
  13. ^ Arduino Software Release Notes. Arduino Project. [April 9, 2017]. 
  14. ^ Using AVR Studio for Arduino development. Engblaze.com. [2013-01-18]. 
  15. ^ Arduino Software Release Notes. Arduino Project. [May 31, 2013]. 
  16. ^ Using Atmel Studio for Arduino development. Megunolink.com. [2013-01-18]. (原始內容存檔於2013-01-28). 
  17. ^ Programming Arduino Getting Started with Sketches. McGraw-Hill. Nov 8, 2011 [2013-03-28]. 

補充資料[編輯]

  • O'REILLY歐萊禮原文 - Getting Started with Arduino
  • O'REILLY歐萊禮原文繁體中文翻譯書 - 踏進互動科技世界使用Arduino

外部連結[編輯]