ATmega32U2でArduinoモドキを作る(暫定版)
ATmega32U2はUSB回路を内蔵したAVRです。そのアーキテクチャはArduino LeonardoやArduino Microに使われているATmega32U4と類似しているのでUSB直結のArduinoモドキを簡単に作れるのではないかと試行しました。
ATmega32U2はADCやI2Cなどを搭載していないためArduino互換機とは成り得ないので「Arduinoモドキ」です。
先行事例
Minimus AVR USBというAtmega32U2搭載のマイコンボードをArduinoと連携させるプロジェクト「minimus-aruduino」があります。このプロジェクトの成果を,そのままトレースします。
回路構成
回路図です。
ブレッドボードでの実装例です。
ピッチ変換基板の裏にユニバーサル基板を重ねて Arduino Micro モドキを製作してみました。
定義ファイル/ブートローダ
必要なファイル群はminimus-aruduinoのgitリポジトリhttps://github.com/pbrook/minimus-arduinoにすべて収容されているので,ZIPに固めて一括してダウンロードします。
ダウンロードしたZIPを解凍し生成されたフォルダをarduinoのスケッチファイルが保存されるフォルダ配下のhardwareフォルダの中に移動します。
Arduino IDE を起動し「ツール」→「マイコンボード」とすすみ,マイコンボードリストに「Minimus 32」が掲載されていることを確認します。
Arduino用ブートローダも収容されていますので,Arduino IDEからAVRISPmkIIやArduinoISPを用いてArduino用ブートローダを書込みます。
- Arduino用ブートローダを書込むと,32U2にデフォルトで書込まれているDFUブートローダは使えなくなります。
- ATmega32U2用のDFUブートローダはAtmel社のWebページに見当たりません。DFUを復活するにはこのLUFA-DFUブートローダを書込みます。
avr-gccのupdate
minimus-aruduinoに記述されているとおり,Arduino IDE 付属のavr-gccはATmega32U2に対応していませんので,記述のとおりavr-gccをアップデートします。
ピン割付表
minimus-arduino のpins_arduino.hから抽出したピン割付は次の表のとおりです。
| minimus-Arduino | ATmega32U2 | ||
| デジタルピン | 機能 | ポート | 物理ピン番号 |
| XTAL 1 | 1 | ||
| XTAL 2 | 2 | ||
| GND | 3 | ||
| VCC | 4 | ||
| D0 | PC2 | 5 | |
| D1 | PWM | PD0 | 6 |
| D2 | PD1 | 7 | |
| D3 | PD2 | 8 | |
| D4 | PD3 | 9 | |
| D5 | PD4 | 10 | |
| D6 | LED B | PD5 | 11 |
| D7 | LED A | PD6 | 12 |
| D8 | HWB | PD7 | 13 |
| D9 | PB0 | 14 | |
| D10 | SCK | PB1 | 15 |
| * | GND | * | * |
| D12 | MOSI | PB2 | 16 |
| D13 | MISO | PB3 | 17 |
| D14 | PB4 | 18 | |
| D15 | PB5 | 19 | |
| D16 | PB6 | 20 | |
| D17 | PWM | PB7 | 21 |
| D18 | PC7 | 22 | |
| D19 | PC6 | 23 | |
| * | RESET | RESET | 24 |
| D21 | PWM | PC5 | 25 |
| D22 | PC4 | 26 | |
| * | VCC | * | * |
| UCAP | 27 | ||
| UGND | 28 | ||
| D+ | 29 | ||
| D- | 30 | ||
| UVCC | 31 | ||
| AVCC | 32 | ||
USB-HID
Arduino LEONARDO 用のサンプルスケッチ「KeyboardMassage」が,このArduinoモドキで動くかどうか確かめてみます。
D4を抵抗10KΩでプルアップしタクトスイッチを接続しておき,スケッチをコンパイルしてアップロードするとATmega32U2-ArduinoモドキはHID-keybordと認識され,D4のタクトスイッチを押す毎にメッセージが送られ,無事HID-keyboardとして動いていることが確認できました。


