ArduinoはこれまでにUnoやNano・Megaなど多くのボードがリリースされています。
Arduino Uno Rev3の後継機にあたるRev4の発売も開始されましたね!
Arduino UnoはボードサイズやI/O端子の数、また各種シールドが使えることから扱いやすく一般的によく使われるArduinoボードだと思います。
そしてArduinoにはUnoと同じ形状・ボードサイズのものでArduino Leonardoがあります。
Unoよりも少し安価で購入できるボードですが、ほぼUnoと同様に扱うことが出来るため「Unoの廉価版」と称されることもあるArduinoボードです。
Arduino LeonardoとUnoとの大きな違いは搭載されているMCU(マイコンチップ)にあります。
UnoにはArduinoではおなじみのATmega328Pが使われているのに対してLeonardoではATmega32U4が使われています。
ボード上ではI/O端子をUno互換で配置しているのでLeonardoを扱う場合もほぼUnoと同じ感覚で使うことが出来ますが、I2C端子やSPI端子の位置、またシリアルの扱いなど一部異なる部分があります。
そしてUnoとの大きな違いはATmega32U4チップを搭載することにより、USB経由でPC上のマウスやキーボード操作を行うといったHID(ヒューマン・インターフェース・デバイス)機能が備わっているところです。
Arduino Leonardoと同仕様(使えるI/O端子の数は少なくなっています)の小型ボードとして(Arduino) Pro Microというボードがあります。
Arduino互換で作られていますが、正確には製造はSparkFunのボードとなります。
このPro MicroもMCUにATmega32U4が使われているのでLeonardoと同様にHID機能が使えることから、自作キーボードを製作する際にPro Microが使われているのをよく見かけます。
このHID機能が使えるところがLeonardoとUnoの大きな違いになります!
こちらは以前製作したArduino無線コントローラーを使いPC上のファミコン(NES)エミュレーターを動かしている様子です。
コントローラーから無線送信されたスティック操作を一旦Leonardo(動画ではPro Microを使っています)で受信してゲームパッドのキー配列に合わせてPCを操作をさせています。
このようなマウスやキーボード操作といったHID機能が使えるのがArduino Leonardoの大きな特徴となります。
この投稿をInstagramで見る
そして先述のようにLeonardoはI2CやSPI端子、またシリアルの扱いなどUnoと異なる部分があります。
今回はUnoと比較しながらArduino Leonardoの基本仕様を見ていきたいと思います。
目次
Arduino Leonardoの基本仕様・ピン配列等まとめ!
こちらがArduino公式のLeonardo純正ボードです。(画像引用:Arduino Store)
ボード形状&サイズはArduino Unoと同じでUSB端子がmicroUSBとなっています。
Arduino Unoと同サイズでI/O端子は完全にUno互換で配置されているので、基本的にUnoや他のArduinoボードと同じように扱うことが出来ます。
またUno用の各種シールドを使うことも出来ます。
・・・しかし若干の仕様の違いがあるのでUnoと比較しながら見ていきます。
基本仕様
Arduino Leonardoは1つのマイコンチップ(ATmega32U4)でスケッチを動かし、またUSB通信も行っている点が他のArduinoボードと異なります。
例えばUnoではATmega328Pというマイコンチップでスケッチを動かし、USB(シリアル)通信はATmega16U2という別のマイコンチップを使って行っています。
チップの違いはありますが、他のArduinoボードでも同様です。
Leonardoではスケッチの動作とUSB通信というこれら2つの機能を1つのマイコンに統合する事によりPCとの通信を柔軟に行うことが出来るようになっています。
基本仕様をUnoと比較するとこのようになります。
ほぼUnoと同様な仕様となっています。
Arduino Leonardo | Arduino Uno | |
マイコンチップ(MCU) | ATmega32U4 | ATmega328P |
動作周波数 | 16MHz | |
フラッシュメモリ (ブートローダー容量) | 32KB(4KB) | 32KB(0.5KB) |
SARAM | 2.5KB | 2KB |
EEPROM | 1KB | |
動作電圧 | 5V | |
USBシリアル | ATmega32U4 | ATmega16U2 |
フラッシュメモリの容量は32KBとUnoと同じですが、LeonardoではATmega32U4チップ1つでUSBシリアルの機能も担っているのでブートローダーのサイズが4KBと大きくなっているため、実質使えるのは28KB程度となります。
またArduino Unoには同スペックの小型ボードとしてArduino NanoやPro Miniがあります。
Arduino Leonardoの小型ボードとしてはArduino公式ではありませんが、SparkFun社製のPro Microがあります。
Pro MicroもATmega32U4が使われているためLeonardoと同仕様となりますが、ボードサイズが小さいためD11/D12/D13/A4/A5が引き出されていません。
参考までに!
ピンアウト
Leonardoのピン配列は以下図のように完全にUno互換で作られていますが、若干異なる部分があるので見ていきます。
デジタル / アナログ端子の違い
Arduino Leonardoはピン配置がUno互換で作られているため、ほぼUnoと同様に扱うことが出来ます。
20個のI/O端子(D0~D13/A0~A5)は、D0~D13はデジタル入出力端子として使え、A0~A5はアナログ入力端子としてやデジタル端子として使うことも出来るのはUnoと同様です。
異なるのはアナログ入力端子です。
Unoと同様にA0~A5までの6本のアナログ入力端子は同じ位置にありますが、A6~A11までのアナログ入力もLeonardoでは使うことが出来るようになっています。
LeonardoではA0~A11までの計12個のアナログ入力(ADC)が使えるということです。(Unoでは6本)
A6~A11はそれぞれデジタルピンD4・D6・D8・D9・D10・D12で使えます。(analogRead();)
PWM(アナログ出力)
UnoではPWM出力は6本(D3/D5/D6/D9/D10/D11)使えますが、Leonardoではそれに加えD13端子もPWM出力で使えます。
analogWrite()関数を使ってのPWM出力(アナログ出力)はLeonardoでは計7本使えることになります。(Unoは6本)
アナログ出力の分解能は8ビット(0~255)となっているのは他のArduinoと同様です。
SPI端子
Arduino UnoではSPI端子はICSP端子またはD10(SS)/D11(MOSI)/D12(MISO)/D13(SCK)が使えますが、Arduino LeonardoではUnoとは異なりSPI端子はD10~D13ではありません。
またSSピンはTX LEDに使われています。(ArduinoのSSピンはソフトウェア的に割り振れます)
SPI端子はUnoのようにI/O端子には接続されていないので、ICSP端子から使わなければなりません。
SPI端子 | Arduino Leonardo | Arduino Uno |
MOSI | ICSP4 | D11 / ICSP4 |
MISO | ICSP1 | D12 / ICSP1 |
SCK | ICSP3 | D13 / ICSP3 |
SS | (TX LED) | D10 |
I2C端子
Arduino UNOではI2C端子(SCL/SDA)はデジタル端子の横に用意されている端子以外にもA4(SDA)/A5(SCL)が使えましが、LeonardoではA4/A5端子はI2C端子として使えません。
Arduino LeonardoのI2C端子は、D2がSDA、D3がSCLとなっています。
I2C端子 | Arduino Leonardo | Arduino Uno |
SCL | D3 / SCL | A4 / SDA |
SDA | D2 / SDA | A5 / SCL |
シリアルポート
全てのArduinoボードは少なくとも1つのシリアルポート(UART)を持っています。
Arduino Megaなど複数のシリアルポートを持つボードもあります。
Arduino UnoやNanoではPCとの接続もピンソケットの入出力ピン(D0/D1)もSerialで兼用されていますが、Leonardoでは少し異なります。
LeonardoではPCとの接続にはSerialを使うのは変わりませんが、ピンソケットの入出力端子D0/D1はSerial1を使ってアクセスする点が異なります。
ボード | Serial | Serial1 | Serial2 | Serial3 |
Uno / Nano | 0(RX)/1(TX) | |||
Leonardo | 0(RX)/1(TX) | |||
Mega | 0(RX)/1(TX) | 19(RX)/18(TX) | 17(RX)/16(TX) | 15(RX)/14(TX) |
電源関連
電源供給方法はArduino Unoと全く同じです。
USB端子からの5V供給の他に、外部電源としてDCジャックまたはVin端子を使った7~12Vの電源供給を行いボードを駆動することが出来ます。
詳しくはこちらの記事を参考にして下さい!
Arduino LeonardoとArduino Uno 仕様まとめ
Arduino Leonardo | Arduino Uno | |
マイクロコントローラー | ATmega32U4 | ATmega328P |
USBシリアル | ATmega32U4 | ATmega16U2 |
クロック周波数 | 16MHz | |
動作電圧 | 5V | |
外部入力電圧(推奨) | 7~12V(6~20V) | |
I/O端子 | 20本 | |
デジタル入出力ピン | 20本 | |
PWMチャンネル | 7 | 6 |
アナログ入力チャンネル | 12 | 6 |
フラッシュメモリー | 32KB (内ブートローダー4KB) | 32KB (内ブートローダー0.5KB) |
SRAM | 2.5KB | 2KB |
EEPROM | 1KB |
Arduino Unoの基本的な仕様についてはこちらの記事を参考にして下さい!
HID機能を使った作例
Arduino LeonardoはPCとUSB接続した際にHID(ヒューマン・インターフェイス・デバイス)として認識される機能が標準で備わっています。
通常PCとUSB接続して使うマウスやキーボード、またゲームパッドといった入力機器のように使うことが出来ます。
Arduino IDEの[スケッチ例]の中にある[9.USB]にキーボードやマウス操作を行うといったサンプルスケッチがいくつか入っているので基本的な使い方など理解しやすいと思います。
簡単な例としてLeonardoに接続したスイッチが押されると定型文を入力するスケッチを作ってみました。
D2端子に接続したスイッチを押すと”Switch ON”と入力される簡単なものです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // Arduino Leonardo HID機能を使い定型文を入力! // https://burariweb.info #include "Keyboard.h" const int buttonPin = 2; int buttonState; int lastbuttonState; void setup() { Keyboard.begin(); pinMode(buttonPin, INPUT_PULLUP); } void loop() { buttonState = digitalRead(buttonPin); if(buttonState == 0 && lastbuttonState == 1){ Keyboard.println("Switch ON"); } lastbuttonState = buttonState; delay(50); } |
スケッチをLeonardoに書き込み、PCのテキストエディッタなど文字を入力出来るソフトを開きます。
Leonardoに接続したスイッチが押されるとエディッタに”Switch ON”という文字が入力されます。
このようなHID機能が使えるのがArduino LeonardoやPro Microの特徴となります。
マウスカーソルを操作したり、またゲームパッドの入力操作に使ったりといろいろと応用する事が出来ます!
この投稿をInstagramで見る
【追記】ATmega32U4を使ったUSBゲームパッドを自作してみました!
本物のスーパーファミコンのコントローラーを改造してゲームエミュレーターなどで使えるUSBゲームパッドを作ってみました!
スーファミコントローラー内の基板をごっそりと自作した基板に入れ替えて製作しています。
ゲームパッドとして動かす部分の制御はMCUにATmega32U4を使いました。
ATmega32U4なのでArduino LeonardoやPro Microを使えばブレッドボードでも試すことが出来るので、興味ある方はこちらの記事も見て頂ければと思います。
この投稿をInstagramで見る
最後に!
Arduino LeonardoはUnoとほぼ同仕様となっていて同じように扱うことが出来ますが、今回ご紹介したようにUnoと異なる部分がいくつかあるので参考になればと思います。
Unoには無いHID機能が標準で使えるので、自作キーボードを作るなど用途によってはUnoよりも扱いやすく便利に使えることも多いと思います。
最近発売が開始されたArduino Uno R3の後継機となるArduino Uno R4 MinimaやArduino Uno R4 WiFiではHID機能が標準でサポートされるようになったようですね!
また、ATmega32U4をベースに作られた携帯ゲーム機Arduboyは、Arduino LeonardoやPro Microを使うとブレッドボードでも簡単に作って試すことが出来るので面白いですよ!
この投稿をInstagramで見る
コメントを残す