Arduino Uno R3にMIDIファームウェアを書き込む

このページのMidi FirmwareをArduino Uno R3のAtmega16U2に書き込むとArduino Uno R3がMIDIデバイスになるというので、試したらけっこう苦労したのでメモ。
この記事はMac OS X 10.9.2でのことです。また、dfu-programmerは0.6.2でした。

大まかな手順は、次の通り。
1)Arduino Uno R3をArduino-Serialモードで起動
2)dfu-programmerでAtmega16U2用のファームウェアを書き込む
3)Arduino Uno R3を再起動する

注意!:MIDIデバイスにするとスケッチを転送することは(ファームウェアを元に戻さないと)できないので、MIDIデバイスにする前にスケッチを転送しておきましょう。

1)Arduino Uno R3をArduino-Serialモードで起動
Arduino Uno R3のUSBポート(Type B)のところのICSPピンのUSB側の2本をジャンパーピンでショートした状態でUSBケーブルでMacとつなぐ。

Arduino-Serialモードにする時のジャンパーピンの位置

Arduino-Serialモードにする時のジャンパーピンの位置


この状態だとMacに認識されない。
次にMacとつないだ状態のままでジャンパーピンを抜く。
すると、Macに認識される。
この状態がArduino-Serialモード。

2)dfu-programmerでAtmega16U2用のファームウェアを書き込む
・まずは、dfu-programmerをインストール
いろいろ試行錯誤したので、Homebrewでも大丈夫とは思いますが、私はMacPortsを使いました。
MacPortsをインストールして、次のコマンドでdfu-programmerコマンドをインストール。
sudo port install dfu-programmer
・ファームウェアの書き込み
ファームウェアをダウンロードして、ホームディレクトリに置きます。
ここでは上記サイトでダウンロードした.tgzの中のdualMoco.hex~/に置いてあるとします。
dfu-programmer atmega16u2 erase
dfu-programmer atmega16u2 flash ~/dualMoco.hex
dfu-programmer atmega16u2 reset
これでファームウェアの書き込みは終了。

3)Arduino Uno R3を再起動する
ここで、一回USBケーブルを抜いて、再度MacにつなぐとMIDIデバイスとして認識されます。

当然、もうMIDIデバイスなのでArduino IDEでスケッチを転送することはできません。
スケッチを転送するには、元のArduinoに戻すファームウェアを上記のような手順で書き込みます。
元のファームウェアはこれです> Arduino.app/Contents/Resources/Java/hardware/arduino/firmwares/atmegaxxu2/Arduino-usbserial-atmega16u2-Uno-Rev3.hex

Macでどのように認識されているかは、(Appleメニューの)「このMacについて」>「詳しい情報…」>「概要」>「システムレポート…」>「ハードウェア」>「USB」でわかります。
コマンド+Rで更新されるので、つないだら更新して確認してください。

以下は、各状態でのMacでの認識状態。

普通の状態で接続

普通の状態で接続

ジャンパーピンを付けた状態で接続

ジャンパーピンを付けた状態で接続(Macに認識されない)

ジャンパーピンを付けた状態で接続した後、ジャンパーピンを抜いて更新

ジャンパーピンを付けた状態で接続した後、ジャンパーピンを抜いて更新

MIDIデバイスとして接続

MIDIデバイスとして接続

後記:まさかMacに接続した状態でジャンパーピンを抜くとは思わなくて、これに気付くまでいろいろ無駄な試行錯誤をしてしまった。

カテゴリー: Arduino, ソフトウェア タグ: , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA