wiki:32u4bb

Version 44 (modified by Shinichi Ohki, 11 years ago) ( diff )

--

ATmega32U4ブレークアウトボード

http://docid81hrs3j1.cloudfront.net/contents/large/865_1.jpg

概要

ATmega32U4の乗った単純なボードです。 ATmega32U4には、工場出荷時からブートローダが書きこまれていて、DFU機能を実現しています。 DFUというのは、USB経由でファームウェアを書き込むことを可能にする機能です。 AVR ISP mkIIのような書き込み装置が要らないのが魅力的です。

ただし、DFUではブートローダ自体を書き換えることはできません。 Arduino Leonardo互換にしたい場合は、LeonardoのブートローダをAVR ISP mkIIなどで書き込んでください。

特徴

  • QFPパッケージを使っている割には、ボードの幅が小さめ。ピン間700mil。ブレッドボードに最適です。
  • USBコネクタは、マイクロUSBです。省スペースです。丈夫なHirose製(ハンダ付け面積が広いため丈夫です)。
  • リセットスイッチを搭載しています。
  • HWB(Hardware Bootloader)の有効無効を、ソルダジャンパで選べます(出荷時は有効です)。
  • バスパワーを使うかどうかを、ソルダジャンパで選べます(出荷時はバスパワーを使用します)。
  • オープンソースハードウェアです。CC BY-SA 2.1ライセンスに基づき、回路図の再利用を認めます。
  • クロックは16MHzです。電源は5Vです。
  • RX/TX/LのLEDは、Arduino Leonardo準拠です。

問題

  • クロックはセラロックであるため、水晶より誤差が大きいです。USBの規格からは外れてしまいます。
  • クロック16MHzなので、マイコンの電気的特性により、3.3Vでは動作しません。3.3Vで動作させたい場合は、ソルダジャンパの切替の他、クロックの変更が必要でしょう。

Errata

  • シルク間違い
    • マイクロUSBコネクタを右にした時の下部
      • 誤 B4,B5,B6,B7,D7,C7,GND
      • 正 B4,B5,B6,B7,D6,C7,GND
    • 裏面のソルダジャンパに「HWB」の表記が無い。

DFUの動作サイクル

ボード裏面にHWBというソルダジャンパが有り、出荷時はショートしてあります。 現在出荷中の商品では、「HWB」のシルクがありません。シルクが無いソルダジャンパがHWBです。

ショートしてある場合は、以下のような挙動を示します。

何もファームウェアが書き込まれていない時

  1. USBに接続する
  2. DFUが有効になる

ここからArduino IDEの最新ベータ版をダウンロードしてインストールします。 何らかのファームウェアが書き込み済みの時

  1. USBに接続する
  2. 書きこまれているファームウェアが動く
  3. リセットボタンを押す
  4. DFUが有効になる

ウィンドウズ

Atmelが提供しているFLIPというソフトウェアを使います。 これをインストールしてから、このボードをパソコンに接続してください。

ドライバファイルが自動的に見つからない問題が発生しているようです。 その場合には、ドライバファイルを手動で指定してください。 ドライバファイルは、「C:\Program Files\Atmel\Flipバージョン番号」以下に有るようです。 こちらもご参照下さい。

ファームウェアを書き込むには、以下のように操作します。

  1. 一番左のアイコンをクリックして、チップを選択します(ATmega32U4を選んでください)。
  2. 右から3番目のアイコンをクリックして、HEXファイルを読み込みます。
  3. 左から2番目のアイコンをクリックして出てくるメニューからUSBを選択します。
    • 「USB Port Connection」というダイアログが現れるので、「Open」ボタンをクリックします。
  4. 「Operation Flow」の項のチェックボックスが全てチェックされている事を確認し、「Run」ボタンをクリックします。

ファームウェアを書き込んだら、USBから一度抜き差しすると、ファームウェアが動きます。 Flipの「Start Application」ボタンをクリックするのでもいいはずなんですが、うまくいかない事があります。 書き込むファームウェアによるように感じます。

Linux

dfu-programmerを使います。 インストール方法は、Linuxのディストリビューションごとに違うので、適切な方法でインストールしてください。 たいてい、コンパイル済みのパッケージが用意されているでしょう。 UbuntuやDebianなどのapt系ディストリビューションでは sudo apt-get install dfu-programmer でインストールできます。

  1. dfu-programmer atmega32u4 erase
  2. dfu-programmer atmega32u4 flash HEXファイルのファイル名
  3. dfu-programmer atmega32u4 reset

これでファームウェアが動き出します。 もしも動かなかったら、USBから一度抜いて挿しなおしてください。

Mac OSX

Linuxと同じく、dfu-programmerを使います。 インストールするには、「sudo port install dfu-programmer」コマンドを使います。

いや、その前にportコマンドをまだインストールしていない人はインストールしてください。 インストール方法はここにありますが、英語です。

お試しファームウェア

とりあえず、キーボードのふりをするファームウェアを載せておきます。 HelloArduino.hexをダウンロードして、書きこんでみてください。 定期的に勝手にキーボードを叩いたふりをします。

さて、これをどうやって作ったか。 一番簡単な方法をお教えします。

  1. Arduino1.0以降をダウンロードします。
  2. Arduino IDEを起動し、Tools/Boardから、Arduino Leonardoを選択します。もし選択肢にない場合、Arduinoのインストールディレクトリ(ex:/usr/share/arduino/hardware/arduino/boards.txt)から、Leonardoに関するコメントアウトを解除します。次に、以下のコードのスケッチを作ります。
    void setup() {
    }
    
    void loop() {
      Keyboard.print("Hello Arduino");
      delay(1000);
    }
    
  3. 「スケッチ」メニューの「検証・コンパイル」を実行します。
  4. TempディレクトリのどこかからHEXファイルを探します。

Arduinoのメニューから、File>Preferencesを開き、"Show verbose output during:"の、compilationを選択します。 そしてコンパイルすると下の通知欄から、どこのディレクトリで作業しているかわかることでしょう。

  • ウィンドウズなら、「C:\Users\ユーザ名\AppData\Local\Temp」フォルダを開いて、検索窓で「hex」を検索します。
  • Linuxならば、/tmp/build-randnum.tmp/ファイル名のプレフィクス.cpp.hexが該当します。
  • Mac OSXなら、「/tmp」のどっかですかねえ。 Mac OSXについては、こちらを参考にしてください。

もうひとつお試し

MouseTest.hex

int phase = 0;
int full = 100;
int radius = 100;
int delay_msec = 2;

int x = radius;
int y = 0;

void setup() {
}

void loop() {
  ++phase;
  phase %= full;

  double th = 3.141592 * 2 * phase / full;
  int xx = radius * cos(th);
  int yy = radius * sin(th);
  Mouse.move(xx - x, yy - y, 0);
  x = xx;
  y = yy;
  delay(delay_msec);
}

勝手にぐるぐる回る迷惑なマウスです。

(2011/11/26)

Attachments (7)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.