Arduinoのメインボード徹底解説
以下の記事では、Arduinoのメインボードについて、初心者から中級者・上級者までが「これだけ読めばすべてがわかる」と感じられるよう、できるだけ詳しく解説していきます。各種ボードの比較表や基本的なサンプルコードなども織り交ぜながら、Arduinoの基礎から応用までをカバーします。
Arduinoとは?
Arduino(アルドゥイーノ)は、手軽にプログラミングと電子工作が始められるオープンソース・プラットフォームです。主に以下の特徴を持ちます。
- シンプルな開発環境: Arduino IDEと呼ばれる開発環境を使うことで、C/C++に近い形でプログラミングが可能。初心者でも比較的取り組みやすい。
- 豊富なドキュメントとコミュニティ: 世界中のユーザーや開発者がドキュメントやサンプルコードを公開しており、学習やトラブルシューティングがしやすい。
- 拡張性: Arduinoボードの上に重ねる形式で使える拡張基板(シールド)が多数存在し、センサーや無線通信などの機能を簡単に追加できる。
- 多彩なラインナップ: Arduino UnoやArduino Megaなど多くの種類があり、プロジェクトの規模や用途に合わせて選択できる。
Arduinoの主なボード
Arduinoには多くの種類が存在しますが、ここでは代表的な以下のボードを紹介します。
- Arduino Uno
- Arduino Mega 2560
- Arduino Leonardo
- Arduino Nano
- Arduino Micro
- Arduino Due
- Arduino MKR シリーズ(MKR1000など)
それぞれのボードは、搭載マイコン、I/Oピン数、動作電圧、メモリ容量などが異なり、用途や必要とするリソースに応じて使い分けます。
代表的なArduinoボード比較表
ボード名 | マイコン | 動作電圧 | クロック周波数 | フラッシュメモリ | SRAM | デジタルI/Oピン | アナログ入力ピン | USBインターフェース | 特徴 |
---|---|---|---|---|---|---|---|---|---|
Arduino Uno | ATmega328P | 5V | 16MHz | 32KB | 2KB | 14 (6 PWM) | 6 | Type-B(オス) | もっとも一般的。初心者におすすめ |
Arduino Mega 2560 | ATmega2560 | 5V | 16MHz | 256KB | 8KB | 54 (15 PWM) | 16 | Type-B(オス) | 大規模プロジェクト向け。I/Oピン数が非常に多い |
Arduino Leonardo | ATmega32U4 | 5V | 16MHz | 32KB | 2.5KB | 20 (7 PWM) | 12 | microUSB | USB-HID(キーボード/マウス化)が可能 |
Arduino Nano | ATmega328P | 5V/3.3V* | 16MHz | 32KB | 2KB | 14 (6 PWM) | 8 | miniUSB | 小型・ブレッドボード上での使用に適する |
Arduino Micro | ATmega32U4 | 5V | 16MHz | 32KB | 2.5KB | 20 (7 PWM) | 12 | microUSB | Leonardoに近いがさらに小型 |
Arduino Due | SAM3X8E(32bit ARM) | 3.3V | 84MHz | 512KB | 96KB | 54 (12 PWM) | 12 | microUSB | 32ビットマイコン搭載、高速演算が可能 |
Arduino MKR1000 | SAMD21(32bit ARM) | 3.3V | 48MHz | 256KB | 32KB | 8 (All PWM可能) | 7 | microUSB | Wi-Fiモジュール内蔵、IoTプロジェクト向け |
> ※UnoやMegaなどの5V動作ボードでも3.3Vピンが出力されますが、基本ロジックは5Vです。
> ※Nanoは出荷時には5Vロジックが一般的ですが、3.3Vで動かす改造例もあります。
各ボードの詳細解説
Arduino Uno
- 概要: Arduinoシリーズの定番。初心者向けの学習教材やサンプルがもっとも多く、書籍やネット上の情報も豊富。
- 特徴:
- ATmega328Pを搭載し、5V駆動で16MHz。
- デジタルI/Oが14本(うち6本がPWM対応)、アナログ入力が6本。
- シールドとの互換性が非常に高い。ほぼすべてのシールドがUnoを基準に設計される。
- おすすめポイント:
- 入門用に最適。トラブルシューティングも容易。
- 多くの拡張シールドがそのまま利用可能。
- 価格も比較的安価。
Arduino Mega 2560
- 概要: I/Oピン数やメモリが大幅に増強された上位互換版。
- 特徴:
- ATmega2560を搭載し、5V駆動で16MHz。
- フラッシュメモリが256KB、SRAMが8KBと大容量。
- デジタルI/Oが54本、アナログ入力16本を備え、大規模なプロジェクトに最適。
- おすすめポイント:
- 多数のセンサーやモーターを同時に制御したい場合。
- 大規模なコードやライブラリを多用するプロジェクトでも、メモリ面の余裕が大きい。
Arduino Leonardo
- 概要: ATmega32U4を搭載し、USB機能がマイコン内蔵。
- 特徴:
- キーボードやマウスとして振る舞うUSB-HID機能を簡単に実装可能。
- デジタルI/O 20本、アナログ入力12本で、Unoよりも少し多い。
- おすすめポイント:
- PCと直接USBデバイス(キーボードやマウス)として連携させるプロジェクトに最適。
- UnoよりもI/Oピン数が若干多いので、少し複雑なプロジェクトでも対応しやすい。
Arduino Nano
- 概要: Uno同等の機能をより小型にしたボード。ピンヘッダをハンダ付けすれば、ブレッドボードに直接挿せる。
- 特徴:
- ATmega328P搭載。基本的にはUnoと同スペック。
- ブレッドボードプロトタイピングに便利。
- microUSBではなく、miniUSBまたはマイクロUSBへ変換して使用するタイプがある。
- おすすめポイント:
- 小型で安価。量産やコンパクトなプロジェクトで利用しやすい。
- 同等のチップであるため、Unoと同じスケッチがほぼそのまま動作する。
Arduino Micro
- 概要: Leonardoとほぼ同じ機能をさらに小型化したボード。
- 特徴:
- ATmega32U4搭載。USB-HID機能が使える。
- 小型でブレッドボードや省スペースなプロジェクトに向く。
- おすすめポイント:
- キーボード/マウス化のようなLeonardo固有の機能を、小型で実装できる。
- Wearable(ウェアラブル)など、スペースが限られた応用に適する。
Arduino Due
- 概要: 32ビットARMコア(SAM3X8E)を搭載し、高速演算が可能なモデル。
- 特徴:
- 動作電圧は3.3V、84MHzのクロック。
- フラッシュメモリ512KB、SRAM 96KBと大容量。
- デジタルI/O 54本、うち12本がPWM対応。アナログ入力12本。
- 5Vを入力ピンに直接接続すると破損するリスクがあるので注意。
- おすすめポイント:
- 浮動小数点演算や高速処理を必要とするプロジェクトに最適。
- 3.3V専用なので他の5Vボードと電圧が異なり注意が必要。
Arduino MKR シリーズ
- 概要: MKR1000やMKRZero、MKR WAN 1300など、IoT向けに特化した小型ボード群。
- 特徴:
- SAMD21(32bit ARMコア)を搭載。3.3V動作、48MHz。
- MKR1000はWi-Fi内蔵、MKR GSM 1400はセルラー通信内蔵など、ネットワーク機能を強化したモデルが多数。
- コンパクトでピンが少ない分、低消費電力にも向く。
- おすすめポイント:
- IoT(Internet of Things)プロジェクトに最適。
- ネットワーク機能が標準搭載されており、追加モジュールを要さずに通信が可能。
ピン配置とI/O機能
Arduinoのボードには、デジタルI/Oピンとアナログ入力ピンがあります。それぞれの使い方を簡単に整理します。
- デジタルI/Oピン
pinMode(pin, INPUT/OUTPUT);
で入力か出力かを指定。
出力に設定した場合は、digitalWrite(pin, HIGH/LOW);
で電圧HIGH(5V/3.3V)またはLOW(0V)を出力。
入力に設定した場合は、digitalRead(pin);
でHIGHかLOWかを読み取る。 - PWMピン
デジタルピンの一部はPWM(パルス幅変調)に対応。
analogWrite(pin, 値);
で0~255の値でデューティ比を制御できる(実際のアナログ信号ではなく疑似アナログ出力)。 - アナログ入力ピン
analogRead(pin);
で0~1023の範囲(10ビット)の値を取得。
例えば、可変抵抗(ポテンショメータ)やセンサーなどのアナログ信号を読み取るのに使用。 - シリアル通信
Unoなどではピン0(RX)とピン1(TX)がハードウェアUARTに対応。
他のボードでもSerial1, Serial2など複数UARTを持つ場合がある(Megaなど)。
Arduinoスケッチとプログラミング
Arduinoのプログラムはスケッチと呼ばれ、C/C++をベースとした独自の関数や構造を使って記述します。Arduino IDEでコードを書き、USB経由でアップロードすると、すぐに動作を確認できます。
基本構造は以下の2つの関数で構成されます。
void setup() {
// 初期化処理をここに書く(ピンモード設定、シリアル通信開始、など)
}
void loop() {
// メインループ。ここに繰り返し実行したい処理を書く
}
setup() 関数は、スケッチが起動した時に一度だけ呼び出されます。主にピンの入出力モードの設定や通信の初期化を行います。
loop() 関数は、setup()の後に繰り返し呼ばれます。Arduinoのメイン処理はここに書きます。
例:LED点滅プログラム(Blink)
Arduinoの最も基本的なサンプルとして、LEDを点滅させるコードを示します。Arduinoボードには通常「13番ピン」にLEDが接続されています(UnoやMegaなど)。
// Blink.ino
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // LED_BUILTINは通常13番ピンと定義されている
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // LEDを点灯
delay(1000); // 1000ミリ秒(1秒)待機
digitalWrite(LED_BUILTIN, LOW); // LEDを消灯
delay(1000); // 再び1秒待機
}
digitalWrite(pin, HIGH/LOW);
のHIGHとLOWを1秒ごとに切り替えることで点滅を実現しています。
delay(ms);
は指定ミリ秒だけ処理を停止させるArduino標準関数です。
電源と動作電圧
ArduinoにはUSBからの給電のほか、外部電源ジャックやVINピンなどからの給電が可能です。ただし、ボードごとの動作電圧や入力電圧の範囲を守る必要があります。
- Uno, Mega, Leonardo, Micro など(5V系)
通常の動作電圧は5V。
USB接続時は5Vが供給される。
外部電源(7-12V推奨、最大20V程度)をジャックから入力するとボード上のレギュレータで5Vに降圧。 - Due, MKRシリーズ(3.3V系)
動作電圧が3.3V。
5V入力をピンに与えると故障する恐れがある。
外部電源入力は7-12V程度まで可能だが、ボード上のレギュレータで3.3Vへ降圧される。 - 電源ピン
5Vピン: Unoなど5Vボードは出力として5Vを供給。
3.3Vピン: 一部ボードで3.3Vが使用可能。
GNDピン: グラウンド(0V)。 - 注意点
大電流を必要とするセンサーやモーターを駆動する場合は、Arduinoの電源ピンから供給せず、外部電源を用意し、GNDを共通化するのが一般的。
電圧レギュレータやリセット回路の最大許容電流を超えないようにする。
シールド拡張と互換性
Arduinoには豊富な拡張シールドが存在します。たとえば以下のようなものがあります。
- Ethernetシールド: LANケーブルを使って有線でネットワーク通信が可能。
- Wi-Fiシールド: 無線LAN(Wi-Fi)を使ったネットワーク通信が可能。
- Motor/Driverシールド: DCモーターやステッピングモーターなどを簡単に駆動できる。
- LCDシールド: LCDディスプレイとボタンがまとまった拡張ボード。
- GPSシールド: GPS機能を簡単に追加できる。
シールドは一般的にArduino Unoのピン配置に準拠して設計されているため、UnoやMegaなどはほぼそのまま差し込めます。ただしDueやMKRシリーズなど、ピン配置や電圧が異なる場合もあるので、動作電圧やピン互換性を必ず確認しましょう。
選び方のポイント
- 初心者
まずは迷わずArduino Unoを選ぶのがおすすめ。情報量が多く、学習に適している。 - I/Oピン数が足りない/大規模プロジェクト
センサーやモーターを大量に接続する場合はArduino Mega 2560がよい。メモリも多く、スケッチが大きくなっても安心。 - USB-HID機能を活かしたい
Arduino LeonardoまたはArduino Micro。PC側でキーボードやマウス入力をシミュレーションできる。 - 小型・省スペースにしたい
Arduino NanoやMicro。ブレッドボードでの利用やウェアラブル・組み込み向けに最適。 - 高速演算や32ビット精度が必要
Arduino Due。ただし3.3V専用である点に注意。 - IoT/ネットワーク機能が必要
Arduino MKR シリーズ(MKR1000, MKR WiFi 1010など)。Wi-FiやGSM、LoRaなど無線通信モジュールを標準搭載しているモデルもある。
応用例:複数センサーを使うプロジェクト
Arduinoを使って複数のセンサーを読み取り、PCに送信するプロジェクトの例です。たとえば、温度センサー(アナログ入力)と照度センサー(アナログ入力)の値を読み取り、シリアルモニタに出力するコードを紹介します。
// SensorRead.ino
// センサーが接続されたピン(アナログ入力)を定義
const int tempPin = A0;
const int lightPin = A1;
void setup() {
Serial.begin(9600); // シリアル通信開始
pinMode(tempPin, INPUT); // アナログ入力はpinMode不要だが、明示的に書いても問題なし
pinMode(lightPin, INPUT);
}
void loop() {
int tempValue = analogRead(tempPin); // 0~1023の値
int lightValue = analogRead(lightPin); // 0~1023の値
// 仮に温度センサーが10mV/℃ (例) の場合などは、ここで計算処理を行う
// 実際はセンサーの仕様に合わせた計算式が必要
float temperature = tempValue * (5.0 / 1024.0) * 100.0; // 仮の換算例
// シリアル出力
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" C, Light: ");
Serial.println(lightValue);
delay(1000); // 1秒ごとに読み取り
}
Arduino Unoの場合、アナログリファレンス電圧は5Vが標準なので、(5.0 / 1024.0)
で電圧に変換しています。
MKRやDueなど3.3V駆動のボードを使う場合は、リファレンス電圧が3.3Vになるため、計算式を変える必要があります。
トラブルシューティングのコツ
- 書き込みエラー
USBケーブルの接続を確認する。
Arduino IDEで正しいボードとポートが選択されているかチェック。
ボードのリセットボタンを押してから再度書き込みを試す。 - 電源が入らない・動作しない
外部電源使用時はボードに適した電圧を供給しているか。極性が正しいか。
USBポートがデータ通信用のものか(充電専用ケーブルの場合、データ通信ができず書き込めないことがある)。 - ピンが応答しない・センサー値が0固定
ピン番号や配線を間違えていないか。
アナログ入力とデジタル入力を混同していないか。
GNDがちゃんと共通化されているか。 - ライブラリの競合
同じ機能を持つ複数のライブラリをインストールしている場合、エラーが発生することがある。不要なライブラリを削除または無効化して再コンパイル。
まとめ
- Arduinoはオープンソースのハードウェア/ソフトウェアプラットフォームで、電子工作やプロトタイピングに最適。
- メインボードは用途に応じて多様なバリエーションがあるが、初心者はArduino Uno、大規模I/Oが必要ならMega、USBデバイス化ならLeonardo/Micro、高速・32ビット演算ならDue、IoTならMKRシリーズを選ぶと良い。
- シンプルなプログラミング構造と豊富なシールド・ライブラリにより、短時間でプロトタイプを作成できる。
- 動作電圧(5V系と3.3V系)やピン互換など、ボード特性を理解してプロジェクトに適切なボードを選択することが大切。
この記事を参考に、ぜひ自分に合ったArduinoボードを選び、自由な発想で電子工作やIoTプロジェクトを楽しんでください。Arduinoの豊富なコミュニティとドキュメントがあなたの創造を強力にサポートしてくれます。
コメント