11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

【Arduino】Arduino Leonardoの基本仕様・ピン配列等まとめ!

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の大きな特徴となります。

そして先述のように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 LeonardoArduino Uno
マイコンチップ(MCU)ATmega32U4ATmega328P
動作周波数16MHz
フラッシュメモリ
(ブートローダー容量)
32KB(4KB)32KB(0.5KB)
SARAM2.5KB2KB
EEPROM1KB
動作電圧5V
USBシリアルATmega32U4ATmega16U2

フラッシュメモリの容量は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が引き出されていません。
参考までに!

【Arduino】Pro Microの基本仕様・ピン配列等まとめ!

ピンアウト

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 LeonardoArduino Uno
MOSIICSP4D11 / ICSP4
MISOICSP1D12 / ICSP1
SCKICSP3D13 / ICSP3
SS(TX LED)D10

I2C端子

Arduino UNOではI2C端子(SCL/SDA)はデジタル端子の横に用意されている端子以外にもA4(SDA)/A5(SCL)が使えましが、LeonardoではA4/A5端子はI2C端子として使えません。

Arduino LeonardoのI2C端子は、D2がSDAD3がSCLとなっています。

I2C端子Arduino LeonardoArduino Uno
SCLD3 / SCLA4 / SDA
SDAD2 / SDAA5 / SCL

シリアルポート

全てのArduinoボードは少なくとも1つのシリアルポート(UART)を持っています。
Arduino Megaなど複数のシリアルポートを持つボードもあります。

Arduino UnoやNanoではPCとの接続もピンソケットの入出力ピン(D0/D1)もSerialで兼用されていますが、Leonardoでは少し異なります。

LeonardoではPCとの接続にはSerialを使うのは変わりませんが、ピンソケットの入出力端子D0/D1はSerial1を使ってアクセスする点が異なります。

ボードSerialSerial1Serial2Serial3
Uno / Nano0(RX)/1(TX)
Leonardo0(RX)/1(TX)
Mega0(RX)/1(TX)19(RX)/18(TX)17(RX)/16(TX)15(RX)/14(TX)

電源関連

電源供給方法はArduino Unoと全く同じです。
USB端子からの5V供給の他に、外部電源としてDCジャックまたはVin端子を使った7~12Vの電源供給を行いボードを駆動することが出来ます。

詳しくはこちらの記事を参考にして下さい!

【電子工作】Arduinoボードへの電源供給方法まとめ!

Arduino LeonardoとArduino Uno 仕様まとめ

Arduino LeonardoArduino Uno
マイクロコントローラーATmega32U4ATmega328P
USBシリアルATmega32U4ATmega16U2
クロック周波数16MHz
動作電圧5V
外部入力電圧(推奨)7~12V(6~20V)
I/O端子20本
デジタル入出力ピン20本
PWMチャンネル76
アナログ入力チャンネル126
フラッシュメモリー32KB
(内ブートローダー4KB)
32KB
(内ブートローダー0.5KB)
SRAM2.5KB2KB
EEPROM1KB

Arduino Unoの基本的な仕様についてはこちらの記事を参考にして下さい!

【Arduino入門編⑳】Arduino Uno R3ボードのピン配列&基本機能まとめ!

HID機能を使った作例

Arduino LeonardoはPCとUSB接続した際にHID(ヒューマン・インターフェイス・デバイス)として認識される機能が標準で備わっています。
通常PCとUSB接続して使うマウスやキーボード、またゲームパッドといった入力機器のように使うことが出来ます。

Arduino IDEの[スケッチ例]の中にある[9.USB]にキーボードやマウス操作を行うといったサンプルスケッチがいくつか入っているので基本的な使い方など理解しやすいと思います。

簡単な例としてLeonardoに接続したスイッチが押されると定型文を入力するスケッチを作ってみました。
D2端子に接続したスイッチを押すと”Switch ON”と入力される簡単なものです。

スケッチをLeonardoに書き込み、PCのテキストエディッタなど文字を入力出来るソフトを開きます。

Leonardoに接続したスイッチが押されるとエディッタに”Switch ON”という文字が入力されます。

このようなHID機能が使えるのがArduino LeonardoやPro Microの特徴となります。

マウスカーソルを操作したり、またゲームパッドの入力操作に使ったりといろいろと応用する事が出来ます!

【追記】ATmega32U4を使ったUSBゲームパッドを自作してみました!

本物のスーパーファミコンのコントローラーを改造してゲームエミュレーターなどで使えるUSBゲームパッドを作ってみました!

スーファミコントローラー内の基板をごっそりと自作した基板に入れ替えて製作しています。

ゲームパッドとして動かす部分の制御はMCUにATmega32U4を使いました。
ATmega32U4なのでArduino LeonardoやPro Microを使えばブレッドボードでも試すことが出来るので、興味ある方はこちらの記事も見て頂ければと思います。

【電子工作 / PCB】スーパーファミコンのコントローラーをUSBゲームパッドに改造する基板を作ってみました!

最後に!

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を使うとブレッドボードでも簡単に作って試すことが出来るので面白いですよ!

【Arduboy】Arduino Leonard(Pro Micro)でArduboy互換機を自作する!

コメントを残す