Intel Edison Kit for Arduinoに対してFirmataを導入した。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

好物はインフラとフロントエンドのかじわらゆたかです。
Intel Edison Kit for Arduinoに対してFirmataを入れたのでその手順を公開します。

Firmata

Arudinoを制御するための汎用プロトコルとのことです。
Firmataを用いることで様々なプログラミング言語から、Arduinoを制御することが可能です。

Intel Edison Kit for ArduinoにFirmataをインストールする

Intel Edisonが出た当初はArduino IDEはIntelのカスタム版を導入しておりました。
09: Edison Getting Started Guideをやってみる | Developers.IO
2016/02/11現在 カスタム版ではなくAruduino IDEをダウンロードすることでIntel Edison Kit for Arduinoを扱うことが可能です。

Intelの公式が出している方法に基づいて作業を進めます。
IoT - Installing the Arduino* IDE | Intel® Developer Zone

  • PCとEdisonをUSBで接続しておきます。その際に接続するのはJ16に接続します。
    09: Edison Getting Started Guideをやってみる | Developers.IO
  • ArduinoのサイトよりArudio IDEをダウンロードし、
    アプリケーション名をArduino.appからArudinoEdison.appに変更しApplicationディレクトリに配置します。
  • リネームしたArduino IDEを起動し、ツール→マイコンボード→ボードマネージャと進みます。 blog20160211_01
  • 検索条件にintelと入力し、検索結果に含まれるIntel i686 Boards by Intelを選択しインストールを押下します。
    blog20160211_02
  • ボードマネージャを閉じ、ツール→マイコンボードからIntel Edisonを選びます。
    blog20160211_03
  • ボードマネージャを閉じ、ツール→シリアルポートから/dev/cu.usbmodem〜 を選びます。
    blog20160211_07
  • ファイル→スケッチの例→Firmata→StandardFirmataを選択します。
    blog20160211_04
  • マイコンボードに書き込みを押下し、Firmataを書き込みます。
    blog20160211_05

Firmataの動作を確認する。

Firmataを用いてArduinoと操作を行う、ライブラリは各言語で提供されております。
Arduino Playground - Interfacing

今回はProcessingで試してみたいと思います。
Download Processing.
Processing自体はオフィシャルサイトよりダウンロード・解凍し、Processing.appを起動します。
Processingの環境設定でスケッチブックが/Users/ユーザー名/Document/Processing となっていることを確認します。

ProcessingでArduinoを扱うLibraryはLibrary for Processing v2.0を導入します。
ダウンロードしたzip内にあるarduinoディレクトリを書類内のProcessing→Libraryにコピーします。

Processing + Arduino(Firmata)で用いるシリアルポートの確認

以下のコードをProcessingのSketchに書き込み、Runを押下します。

import processing.serial.*;
import cc.arduino.*;
Arduino arduino;

void setup() {
  int i = 0;
  for (String arduino : Arduino.list()) {
    println("[" + i +"]" ,arduino);
    i++;
  }
}

cu.usbmodem となっている番号を調べます。
下記の例の場合、1となります。
blog20160211_06

Processing + Arduino(Firmata)の動作確認

上記で調べたシリアルポートの番号に応じて10行目を書き換えます。
以下のコードをProcessingのSketchに書き込み、Runを押下します。

import processing.serial.*;
import cc.arduino.*;

Arduino arduino;
int ledPin = 13;
color bgColor = color(0);

void setup() {
  size(400, 200);
  arduino = new Arduino(this, Arduino.list()[1], 57600);
  arduino.pinMode(ledPin, Arduino.OUTPUT);
}

void draw() {
  background(bgColor);
}

void mousePressed() {
  arduino.digitalWrite(ledPin, Arduino.HIGH);
  bgColor = color(255,0,0);
}

void mouseReleased() {
  arduino.digitalWrite(ledPin, Arduino.LOW);
  bgColor = color(0);
}

起動して、初期化が完了すると黒い画面が表示されます。
黒い画面をクリックすると赤く変化します。
正しくArduino(firmata)とProcessingが通信できていれば、赤く変化した際にボード上のLEDが点灯します。
blog20160211_09
また、DIGITALの13番 GNDにLEDを指すことで、LEDも点灯します。
blog20160211_08

まとめ

Intel Edison for Arduino に対してfirmateを導入し、その確認を行うことができました。
ようやくこの辺を動かす下準備ができました。

参考サイト

ProcessingとArduinoを接続する | yoppa org