Arduino

ハードウェア

Arduino 基板上には、Atmel AVR マイクロコントローラ（ATmega8, ATmega168, ATmega328P, ATMega644P, ATmega1280, SAM3X）を中心とした回路がある。少なくとも5Vシリーズレギュレータと8MHzもしくは16MHzもしくは84MHzの水晶振動子（またはセラミック発振子）が含まれる。マイクロコントローラにはブートローダが事前にプログラムされている。
概念レベルでは、RS-232シリアル接続でプログラムされるが、ハードウェアの実装はバージョンによって異なる。シリアルArduino基板には、RS-232レベルの信号をTTLレベルの信号に変換する単純な回路が含まれる。Arduinoのほとんどの現行モデルはUSB経由でプログラムされるため、USB-to-serial アダプタチップ（FTDI FT232RLなど）が表面実装され、USB BタイプかミニBタイプの端子が付いている。Arduino Mini や非公式の Boarduino といった基板では、ホストコンピューターとの接続を基板外の USB-to-serial アダプタやケーブルに任せている。
Arduino 基板はマイクロコントローラーのI/Oピンのほとんどを他の回路で使えるようにそのまま開放している。Arduinoの主要モデル（現在はUno）では、14本のデジタルI/Oピンが利用可能で、そのうち6本はパルス幅変調信号を生成でき、他に6本のアナログ入力（デジタルI/Oピンとしても使用可能）がある。これらのピンは基板の一方の端にあるコネクターに集約されている。ここに接続するシールドと呼ばれる応用基板も発売されている。
Arduino Duemilanoveの後継機、Arduino UnoではFTDI製のUSB-シリアル変換ICを使わずに、USBインタフェースを装備したAVRマイコンを搭載し、このマイコンにプログラムすることで様々なUSBデバイスとして動作させることが出来るようになった。

Arduino IDE

Arduinoの統合開発環境はクロスプラットフォームのJavaアプリケーションであり、エディター、コンパイラー、基板へのファームウェア転送機能などを含む。その内部ではC言語のコンパイラーgccやアップロードプログラムavrdudeが使用されている。
開発環境は Processing ベースで、ソフトウェア開発に不慣れなアーティストでも容易にプログラミングできるよう設計されている。プログラミング言語は Wiring から派生したもので、C言語風の構文で制限の多い基板向けに最適化されている。Arduinoではプログラムをスケッチと呼ぶ。
典型的な最初のスケッチは、単純にLEDを点滅させる「blink」というものである。Arduino言語では、ユーザーはこのように記述するだけでよい。
#define LED_PIN 13void setup () {
    pinMode (LED_PIN, OUTPUT);     // 13番ピンをデジタル出力に設定する}void loop () {
    digitalWrite (LED_PIN, HIGH);  // LEDを点灯する
    delay (1000);                  // 1秒待機する(1000ミリ秒)
    digitalWrite (LED_PIN, LOW);   // LEDを消灯する
    delay (1000);                  // 1秒待機する}
上記のスケッチはgccコンパイラに直接には正しいソースコードとして認識されないが、ユーザーがArduino開発環境で「マイコンボードに書き込む」ボタンを押した際に必要な修正が施されたコードに変換されて一時ファイルに自動的に書き込まれる。
#include "WProgram.h"#define LED_PIN 13void setup () {
    pinMode (LED_PIN, OUTPUT);     // 13番ピンをデジタル出力に設定する}void loop () {
    digitalWrite (LED_PIN, HIGH);  // LEDを点灯する
    delay (1000);                  // 1秒待機する(1000ミリ秒)
    digitalWrite (LED_PIN, LOW);   // LEDを消灯する
    delay (1000);                  // 1秒待機する}int main(void){
    init();

    setup();
    
    for (;;)
        loop();
        
    return 0;}
「WProgram.h」はWiringライブラリの主要ヘッダーファイルで、main()関数は3つの関数、init()、setup()、loop()を呼び出す。init()関数はWiringライブラリで定義されているもので、setup()関数とloop()関数はユーザがスケッチで定義したものである。上述スケッチに先頭の#includeと末尾のmain()関数が追加された一時ファイルがgccによってコンパイルされ、hexファイルが作成される。リセット信号がトリガーとなって、ホストコンピュータのアップローダavrdudeとarduinoのマイクロコントローラに事前にプログラムされているブートローダが通信を開始し、hexファイルのアップロードが実行される。
Arduino IDEを使用せずにgccを使用して直接hexファイルを作成し、avrdudeを手動で使用してhexファイルをアップロードすることもできる。日本で作成されたavrdude用のGUIプログラムがあり、これを使用することでアップロード作業が容易に行えるようになっている。

Pduino

Pduinoとは、ビジュアルプログラミング言語Pure Data(Pd)をもとに開発されたArduino IDE相当の開発環境である。ホストPC側でMaxまたはPure Data(Pd)を使用し、Arduinoの開発にPduinoを使用することで、一貫したビジュアルプログラミング環境が提供される。画面上にグラフィックとしてArduinoのデジタルポートやアナログ入力ポートが表示され、GUIによって各ポートのデータの流れをプログラムする。非常に簡易にフィジカル・コンピューティングが実現できるため、映像・音楽方面のアーティストによって利用されている。

オープンハードウェアとオープンソース

Arduino のハードウェア設計は Creative Commons Attribution Share-Alike 2.5 ライセンスで提供されており、Arduino のWebサイトで入手可能である。レイアウトなどの情報もいくつかのバージョンのものが公開されている。統合開発環境のソースコードと基板上のライブラリはGPL v2ライセンスで提供されている。

名称の制限

ハードウェア設計もソフトウェアもコピーレフトライセンスで提供されているが、開発者は 「Arduino」 という名称が商標の普通名称化となることを避けたいと考えており、許諾無く派生製品に使うことを禁じている。Arduino という名称の使用に関する公式方針文書では、プロジェクトが第三者による作業結果を公式な製品に組み入れることについてオープンであることを強調している。

互換機

ハードウェア設計もソフトウェア製品もオープンソースであるため、他の設計者・製造業者も互換機製品をリリースしている。なお、前述の名称問題のため「Arduino」という名前は使っていない。公式のウィキサイトArduino Playgroundには、互換機の情報を掲載する場が設けられている。

Arduino AtHeart

Arduino AtHeart プログラムに参加し、売上の5%以下を支払うことで、互換機として紹介され、Arduino IDE のサポートをうけられる。現状、AVR の ATMega328, ATMega1280, ATMega2560, ATMega32U4, SAM3X を利用していることが条件。

Arduino Certified

Arduino Certified として、公式の認証を受けた Arduino 商品として、Intel Galileo や Intel Edison があり、Arduino IDE でもサポートされている。AVR 以外の CPU でも認証を受けられる。

非認可の互換機

Arduino IDE の hardware フォルダ内の boards.txt を書き換えることで、対応するマイコンボードを増やすことが出来る。このような例にアーテックの Studuino などがある。

非公式クローン

正確には把握されていないが、公式ボードの非公式クローンの販売台数は公式分よりも多いと予想されており、中国などの製造会社が安価な商品を生産している。

Arduino as ISP

Arduino を使い、Atmel AVR のマイクロコントローラに、Arduino IDE で書いたプログラムを転送することが出来る。まず、Arduino ボード自体に、「ArduinoISP」プログラムを「スケッチの例」から選んで転送し、Arduino ボードと AVR マイクロコントローラを適切に配線し、ArduinoIDE の書き込み装置の設定を「Arduino as ISP」にすることで転送が出来る。Arduino で使われている ATmega328 などのマイクロコントローラだけでなく、AVR の ATtiny などのより安価で小型のマイクロコントローラにも転送できる。

開発企業

設計はアメリカの企業 Arduino, LLC が行っている。会社の創業者は、Massimo Banzi、David Cuartielles、Tom Igoe、David Mellis。
生産はイタリアの企業 Arduino S.R.L. が行っていた。Arduino S.R.L. の創業者は Gianluca Martino。2015年1月23日にArduinoの権利を巡り Arduino, LLC. と Arduino S.R.L. の間で裁判が発生した。

入手

国内正規販売代理店が2008年に大幅に増え、入手性は大幅に改善された。Megaの発売日の2009年3月26日には、日本を含め、はじめて世界同時発売となった。