Unreal Engine 4とArduinoで遊ぼう(Arduino編)

前回に引き続きUE4Duinoを使うための環境を作ります。

今回はUE4をいったん離れて、Arduinoの開発環境を作ります。

  • Arduino IDEのインストール
  • ArduinoとPCを繋ぐ
  • Arduinoにスケッチ(プログラム)を書き込む
  • Arduinoとブレッドボードを繋ぐ
  • 動作確認

Arduino IDEのインストール

arduino.orgのソフトウェア配布ページから最新版のArduino IDEをダウンロードします。2015年12月23日現在での最新版はv1.7.8です。

ダウンロードしたファイルをダブルクリックしてインストールを開始します。

管理者アカウントの権限を確認された場合は[はい]をクリックして進めます。

使用許諾のダイアログが出てくるので内容をよく読んだ上で[I Agree]ボタンをクリックします。

インストールオプションのダイアログが出てくるので、そのまま[Next]ボタンをクリックします。

インストール先のフォルダを指定するダイアログが出てくるので、インストール先を指定して[Install]ボタンをクリックします。

そのまましばらく待ちます。

デバイスドライバのインストールウィザードが出てきたら[次へ]をクリックします。

「このデバイスソフトウェアをインストールしますか?」というダイアログが出てきたら[インストール]ボタンをクリックします。2~3回出てくると思います。

デバイスドライバのインストールウィザードの完了ダイアログが出てきたら[完了]ボタンをクリックします。

Atmel USB Driver Packageのダイアログが出てきたら、内容を読んで[I agree to the license terms and conditions]にチェックを入れて[Install]ボタンをクリックします。

インストールが始まります。

「このデバイスソフトウェアをインストールしますか?」というダイアログが出てきたら
[インストール]ボタンをクリックします。これも2~3回出てくると思います。

終わったら[Close]をクリックしてダイアログを閉じます。

Arduinoセットアップのダイアログも閉じましょう。

デスクトップにはArduino IDEのアイコンが表示されます。

以上でArduino IDEのインストールは完了です。

ArduinoとPCを繋ぐ

ArduinoとPCを接続します。

ArduinoのUSBコネクタにUSBケーブルを接続し、もう一方のコネクタをPCのUSBポートに接続します。

接続したらデバイスを認識するまで少し待ちます。

デバイスマネージャを開いてCOMポートの割り当て状況を確認します。環境によって異なりますが、COM3~5あたりが割り当てられていることが多いと思います。うちの環境ではCOM5に割り当てられました。このCOMポートの番号はArduinoとUE4Duinoの両方で必要となる情報なので、よく憶えておきましょう。

Arduinoにスケッチ(プログラム)を書き込む

動作確認のためにArduinoにサンプルのスケッチを書き込んでみましょう。
うまくいけばArduino上のLEDが点滅します。

Arduino IDEを起動します。

メニューから[ファイル]→[スケッチの例]→[01.Basics]→[Blink]を開きます。

最初に開いた空白のスケッチは閉じて構いません。

ウィンドウの下側にArduinoのモデル名とCOMポートの番号が表示されますので、それぞれが正しく認識されているか確認します。正しく認識されていない場合は、[ツール]→[ボード]および[ツール]→[ポート]から正しく設定しなおしてください。

左上にある[検証]ボタンをクリックします。この操作によってスケッチ(プログラム)がコンパイルされます。

続けて[マイコンボードに書き込む]ボタンをクリックします。この操作によって、コンパイルされたプログラムがマイコンボード(Arduino)に書き込まれます。

うまくいけばArduino上のLEDが点滅します。

Arduinoとブレッドボードを繋ぐ

ブレッドボード上に温湿度センサー(HDC1000)を取り付けて、ブレッドボードとArduino間をジャンパワイヤで接続します。Arduinoの電源は入れたままでも構いませんが、心配な人はUSBケーブルを抜いておいてもいいです。

以下の図のように接続してください。温湿度センサー(HDC1000)はセンサー側が手前になります。

ブレッドボード上の温湿度センサー(HDC1000)から温度と湿度を取得してみましょう。

garretlabさんのサイトで公開されているスケッチ(プログラム)を利用させていただきました。

温湿度センサーモジュールの実験(Arduinoで遊ぶページ)

温湿度センサー(HDC1000)から温度、湿度を取得してシリアルに出力するスケッチ(プログラム)を以下の場所からダウンロードしてください。

HDC1000.ino

ダウンロードしたらドキュメント内のArduinoフォルダに移動したあとダブルクリックして開いてください。

フォルダを作るかどうか確認されたら[OK]をクリックします。

以下のコードを直接Arduino IDEにコピペして保存してもOKです。

#include <Wire.h>

#define HDC1000_ADDRESS 0x40 /* or 0b1000000 */
#define HDC1000_RDY_PIN A3 /* Data Ready Pin */

#define HDC1000_TEMPERATURE_POINTER 0x00
#define HDC1000_HUMIDITY_POINTER 0x01
#define HDC1000_CONFIGURATION_POINTER 0x02
#define HDC1000_SERIAL_ID1_POINTER 0xfb
#define HDC1000_SERIAL_ID2_POINTER 0xfc
#define HDC1000_SERIAL_ID3_POINTER 0xfd
#define HDC1000_MANUFACTURER_ID_POINTER 0xfe

#define HDC1000_CONFIGURE_MSB 0x10 /* Get both temperature and humidity */
#define HDC1000_CONFIGURE_LSB 0x00 /* 14 bit resolution */

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
Wire.begin();
pinMode(HDC1000_RDY_PIN, INPUT);

delay(15); /* Wait for 15ms */
configure();
}

void loop() {
// put your main code here, to run repeatedly:
float temperature, humidity;

getTemperatureAndHumidity(&temperature, &humidity);
Serial.print(temperature);
Serial.print(";");
Serial.println(humidity);

delay(1000);
}

void configure() {
Wire.beginTransmission(HDC1000_ADDRESS);
Wire.write(HDC1000_CONFIGURATION_POINTER);
Wire.write(HDC1000_CONFIGURE_MSB);
Wire.write(HDC1000_CONFIGURE_LSB);
Wire.endTransmission();
}

void getTemperatureAndHumidity(float *temperature, float *humidity) {
unsigned int tData, hData;

Wire.beginTransmission(HDC1000_ADDRESS);
Wire.write(HDC1000_TEMPERATURE_POINTER);
Wire.endTransmission();

while (digitalRead(HDC1000_RDY_PIN) == HIGH) {
;
}

Wire.requestFrom(HDC1000_ADDRESS, 4);
while (Wire.available() < 4) {
;
}

tData = Wire.read() << 8;
tData |= Wire.read();

hData = Wire.read() << 8;
hData |= Wire.read();

*temperature = tData / 65536.0 * 165.0 - 40.0;
*humidity = hData / 65536.0 * 100.0;
}

動作確認

Arduino IDEの[検証]ボタンをクリックしてスケッチをコンパイルし、続けて[マイコンボードに書き込む]ボタンをクリックします。

これでブレッドボード上の温湿度センサーからArduinoを経由し、PCのCOMポートに向けて温度と湿度が出力され続けているはずです。

さっそくシリアルモニタで確認してみましょう。

メニューの[ツール]から[シリアルモニタ]を開きます。

1秒間(1000ミリ秒)に1回の頻度で温度と湿度が出力されます。取得したデータはUE4Duinoで扱いやすいようにセミコロン(;)で区切って1行で出力しています。

これでArduino編は終了です。

おつかれさまでした。

次はいよいよUE4Duino編です。温湿度センサーで取得したデータをUE4の画面上に表示させます。