ebayで購入したPro Microへのプログラム書き込み

ebayでPro Micro ATmega32U4 3.3V 8MHzを購入しました。このPro MicroをArduino IDE(Ver 1.6.7)、windows7(Professional)でプログラムが作成できるように、プログラム開発環境を構築します。この基板は、SparkFun Pro Microとして動作させることができます。「Pro Micro & Fio V3 Hookup Guide」に従ってプログラム開発環境を構築します。

ebyeで購入したPro Micro

購入した Pro MicroをPCに接続すると、次のようにデバイスマネージャーにPro Micro 3.3と表示されます。

デバイスマネージャーでのPro Microの表示

Windowsドライバのインストール

Pro Micro用のWindowsドライバを「FIO AND PRO MICRO DRIVERS」からダウンロードし、windows7にインストールします。インストールが完了すると、次のようにデバイスマネージャーにSpankFun Pro Microと表示されます。

Windowsドライバのインストール

Arduinoアドオンのインストール

Arduino IDEでPro Microのプログラムを開発するには、開発用のアドオンをArduino IDEにインストールする必要があります。Arduino IDEを起動し、ファイル→環境設定を選択し、「Additional Boards Manager URL」につぎのURLを設定して、OKボタンを押します。

https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json

環境設定へのArduinoアドオンの設定

Arduino IDEのメインメニューからツール→マイコンボード→ボードマネージャーを選択し、ボードマネージャーを表示します(すでにインストールされた画面をキャプチャしています)。

ボードマネージャーの選択

表示されたボードマネージャーに「sparkfun」を入力して、検索された一覧表から「SparkFun AVR Boards by SparkFun Electronics」を選択してインストールします。

SparkFun AVR Boardのインストール

このインストールにより、ツール→マイコンボードの選択により、次のプルダウンメニューが表示され、「SparkFun Pro Micro」を選択するとマイコンボード「Pro Micro」の設定が終了します。

マイコンボード「Pro Micro」の設定

コンパイルエラー「Board promicro (platform avr, package SparkFun) is unknown」

コンパイルしたときに「Board promicro (platform avr, package SparkFun) is unknown」エラーになる場合があります。これは、新規に「SparkFun AVR Boards by SparkFun Electronics」をインストールしたとき、バージョンが更新され、古いバージョンと新しいバージョンが混在するときに発生するようです(「Arduino IDE suddenly not recognizing sparkfun boards」)。私の場合、フォルダ「C:\Users\(xx)\AppData\Local\Arduino15\packages\SparkFun\hardware\avr」が次のようになっていたので、フォルダ「1.1.3」を削除してコンパイルするとエラーがなくなりました。

Pro Microコンパイルエラー

LEDの点灯プログラム

構築されたPro Microのプログラム開発環境を使って、ボードに実装されているTXとRXのLEDの点灯プログラムを作成します。更に「tomosoft wu……」をシリアル出力させ、Teratermに表示させます。

TX LEDはあらかじめ定義されたマクロによりコントロールされます。シリアルは9600BPSの転送速度を持ち、デバイスドライバに表示されているCOMポートに出力されます。LED点滅は、TX LEDとRX LEDが、500msと1秒を空けて繰り返します。Serial.begin(speed) は、シリアル通信のデータ転送レートをbps(baud)で指定します。詳細については、Arduino 日本語リファレンスを参照してください。

int RXLED = 17;  // The RX LED has a defined Arduino pin
void setup()
{
 pinMode(RXLED, OUTPUT);  // Set RX LED as an output
 // TX LED is set as an output behind the scenes

 Serial.begin(9600); //This pipes to the serial monitor
 Serial1.begin(9600); //This is the UART, pipes to sensors attached to board
}

void loop()
{
 Serial.println("tomosoft wu......");  // Print "Hello World" to the Serial Monitor
 Serial1.println("Hello!");  // Print "Hello!" over hardware UART

 digitalWrite(RXLED, LOW);   // set the LED on
 TXLED0; //TX LED is not tied to a normally controlled pin
 delay(500);                // wait for a 500ms
 digitalWrite(RXLED, HIGH);  // set the LED off
 TXLED1;
 delay(1000);                // wait for a second
}

Teratermへの出力を次に示します。

Teratermへの出力