Arduino
Arduino是一家制作开源硬件和开源软件的公司,同时兼有项目和用户社区,該公司负责设计和制造单板微控制器和微控制器套件,用于构建和,以便在物理和中感知和控制。该的产品是按照GNU宽通用公共许可证(LGPL)或GNU通用公共许可证(GPL)[1]许可的开源硬件和软件分发的,Arduino允许任何人制造Arduino板和软件分发。 Arduino板可以以预装的形式商业销售,也可以作为DIY套件购买。
Arduino Uno SMD R3 | |
研發商 | arduino.cc |
---|---|
製造商 | 許多 |
类型 | Single-board microcontroller |
作業系統 | None |
中央处理器 | Atmel AVR (8-bit), ARM Cortex-M0+ (32-bit), ARM Cortex-M3 (32-bit), Intel Quark (x86) (32-bit) |
内存(RAM) | SRAM |
硬盘儲存空間 | Flash, EEPROM |
網站 |
Arduino电路板设计使用各种微处理器和控制器。这些电路板配有一组数字和模拟I/O引脚,可以连接各种扩展板或面包板(屏蔽板)和其他电路。这些电路板具有,包括某些型号上的(USB),也用于从个人电脑加载程序。微控制器通常使用C/C++。除了使用传统的编译工具链之外,Arduino项目还提供了一个基于Processing语言的集成开发环境。
Arduino始于2003年,作为意大利伊夫雷亚地区伊夫雷亚交互设计研究所的学生,目的是为新手和专业人员提供一种低成本且简单的方法,以创建使用传感器与环境相互作用的设备执行器。适用于初学者爱好者的此类设备的常见示例包括简单机器人、恒温器和运动检测器。
Arduino这个名字来自意大利伊夫雷亚的一家酒吧,该项目的一些创始人過去常常会去这家酒吧。 酒吧以伊夫雷亚的Arduin(Arduin of Ivrea)命名,他是伊夫雷亚邊疆伯爵,也是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做出很酷的東西,比如對感測器作出回應,閃爍燈光,還能控制馬達。隨後馬西莫·班齊、大衛·奎提耶斯和大衛·梅利斯把設計圖放到了網上。保持設計的開放源碼理念,因為版權法可以監管開源軟體,卻很難用在硬體上,他們決定採用共享創意許可[3]。共享創意是為保護開放版權行為而出現的類似GPL的一種許可(license)。在共享創意許可下,任何人都被允許生產印刷電路板的複製品,還能重新設計,甚至銷售原設計的複製品。你不需要付版稅,甚至不用取得Arduino團隊的許可。然而,如果你重新發佈了引用設計,你必須說明原始Arduino團隊的貢獻。如果你調整或改動了電路板,你的最新設計必須使用相同或類似的共享創意許可,以保證新版本的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和Adafruit Industries設計。[8]。
- Arduino Diecimila in Stoicheia
- Arduino Duemilanove (rev 2009b)
- Arduino UNO
- Arduino Leonardo
- Arduino Mega
- Arduino MEGA 2560 R3(正面)[lower-alpha 1]
- Arduino MEGA 2560 R3(背面)[lower-alpha 1]
- Arduino Nano
- Arduino Due
(ARM Cortex-M3核心) - LilyPad Arduino (rev 2007)
- Arduino Yun
軟體
編寫於Arduino IDE上簡單的入門程式「Blink」的螢幕截圖 | |
開發者 | Arduino Software |
---|---|
穩定版本 | 1.8.8 (2018年12月7日[13]) |
源代码库 | |
编程语言 | Java, C and C++ |
操作系统 | Windows, macOS, Linux |
类型 | 整合開發環境 |
许可协议 | LGPL或GPL授權 |
网站 | arduino.cc |
在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計劃的整合開發環境。它是被設計於介紹程式編寫給藝術家和不熟悉程式設計的人們,且包含了一個擁有語法突顯、括號匹配、自動縮排和一鍵編譯並將執行檔燒寫入Arduino硬體中的編輯器。
Arduino Software IDE使用與C語言和C++相仿的程式語言,並且提供了包含常見的輸入/輸出函式的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 語言本身,其用途有三:
- 引入標頭檔:例如
#include <myLibrary.h>
或#include "myLibrary.h"
- 定義常數:例如
#define PI 3.14159
- 定義巨集:例如
#define AREA(r) PI*r*r
所以前置指令的功能一言以蔽之就是替換,include 就是在標頭處以指定之檔案內容替換;而 define 就是在程式中用到所定義之常數與巨集名稱時,以其內容替換。
巨集的功能事實上與函數類似,不同之處是函式呼叫使用堆疊,而巨集則是直接放在原始碼中,執行效率較快(但若很多地方都要用到時,編譯後就會比較大)。
標頭檔可用角括號 < > 或雙引號 "",差別是用雙引號時,前置處理器會先從原始檔所在位置開始去搜尋標頭檔;而用角括號則會先從 libraries 目錄開始找。
相關設備名稱
- BASIC Stamp
- OOPic
- PICAXE
- Parallax Propeller
- ARM express
- Fritzing
- Gumstix
- ioBridge
- Make Controller Kit
- Minibloq
- 樹莓派 - 单板機電腦
- Simplecortex
參見
注釋
- 這是替代廠商製作的MEGA 2560 R3的相容板[9]。
参考資料
- . arduino.cc. [2018-05-28]. (原始内容存档于2017-08-29).
- Justin Lahart. . The Wall Street Journal. 27 November 2009 [2014-09-07]. (原始内容存档于2014-12-20).
- ChiuHao Chen. . [2016-03-06]. (原始内容存档于2016-03-10).
- . [2016-03-06]. (原始内容存档于2016-03-04).
- M-SHORT. . [2016-03-06]. (原始内容存档于2016-03-08).
- . [2016-03-06]. (原始内容存档于2016-03-10).
- . smartprj.com. [2016-03-05]. (原始内容存档于2016-03-05).
- Schmidt, M. . Pragmatic Bookshelf. January 22, 2011: 201 (英语).
- . arduino.cc. [2016-03-05]. (原始内容存档于2016-03-07).
- . todbot blog. [2016-03-05]. (原始内容存档于2017-09-16).
- . tigoe.net. [2016-03-05]. (原始内容存档于2017-07-02).
- Jonathan Oxer. . [5 Nov 2013]. (原始内容存档于2016-03-04).
- . Arduino Project. [December 7, 2018]. (原始内容存档于2020-02-02).
- . Engblaze.com. [2013-01-18]. (原始内容存档于2012-08-28).
- . Arduino Project. [May 31, 2013]. (原始内容存档于2020-02-02).
- . Megunolink.com. [2013-01-18]. (原始内容存档于2013-01-28).
- . McGraw-Hill. Nov 8, 2011 [2013-03-28]. (原始内容存档于2019-09-19).
补充資料
- 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教學页面存档备份,存于