//
表示中
Computer - コンピューター, Electronics - 電子工作

[備忘録]EclipseでProcessingのライブラリを使いArduinoのシリアル通信をする


Arduinoはプロトタイプが速くできるマイコンです。メモリが小さい、処理速度が遅いなどの制約があるので大きなプログラムを実行させるには難しい面がありますが、大きなメモリを持ったコンピューターと接続して、プログラムを分割して協調させることで大きなプログラムを動かすことができます。

ProcessingはJavaベースのアプリケーション開発プラットフォームですから、そのライブラリを使って、例えばWebサーバーに接続したArduinoを操作したりデータを受け取るアプリケーションを開発することができます。

Mac OS X (El Captan)とEclipse IDE(Luna)を使いますた。使用したJDKのバージョンは1.8です。

IMG_2007

Processing.appのMac OS X版をこちらからダウンロードしてきます。バージョン3.0.2でした。

まずArduinoにテスト用の簡単なスケッチをロードしておきます。(13番ピンに接続したLEDをシリアルポートから読み込んだ値に応じで点灯(消灯)させるスケッチです)
Arduino側は13番ピンに接続したLEDを点滅させる例の入門用の回路が組まれているのが前提です。

int val = 0;

void setup() {
  // シリアル通信は9600bpsで
  Serial.begin(9600);
  // LEDをつないだピンを出力モードに
  pinMode(13,OUTPUT);
}

void loop() {
  if(Serial.available() > 0) {
    // Serialポートから数値を読み込む
    val = Serial.read();
    // 読み込んだ数値が1ならLEDを点灯、0なら消灯
    if(val == 1) {
      digitalWrite(13, HIGH);
    } else {
      digitalWrite(13, LOW);
    }
  }
}

 

次にProcessing.appを起動して、USBケーブルをArduinoに接続して次のスケッチを実行します。

import processing.serial.*;

Serial myPort;
int on = 0;

void setup() {
    // 画面の大きさは128 x 128
    size(128, 128);
    // シリアルポートを開く
    myPort = new Serial(this, "/dev/tty.usbmodem1411", 9600);
    // 初期状態ではLEDは消灯
    myPort.write(0);
}

// 描画
void draw() {
  // LEDが点灯の時は画面を白く、消灯の時は黒く
  if(on == 1) {
    background(255);
  } else {
    background(0);
  }
}

// マウスクリックの検出
void mouseClicked() {
  if(on == 0) {
    on = 1;
  } else {
    on = 0;
  }
  // シリアルポートにオンまたはオフを書き出す
  myPort.write(on);
}

128 x 128のアプレットの黒いウィンドウが開いて、ウィンドウの中のどこかをマウスでクリックすると、画面の色が黒白と切り替わります。この時、Arduinoに接続したLEDが画面が黒い時は消灯、画面が白い時は点灯となっていれば動作はオッケーです。

ここまでで問題がなければ、Eclipseでの開発環境を作ります。

Processing.appを選択して、コンテクストメニューから「パッケージの内容を表示」を選んでProcessing.app(これ自体はフォルダー)を開きます。
「Contents」->「Java」->「Core」->「library」とサブフォルダーを辿っていくといくつかのjarファイルがあります。
自分のワークフォルダーにProcessing3などの名前の新規フォルダーを作成して、Processing.appの中の次のjarファイルを自分のフォルダーにコピーします。

  • core.jar
  • gluegen-rt-natives-macosx-universal.jar
  • gluegen-rt.jar
  • jogl-all-natives-macosx-universal.jar
  • jog-all.jar

Arduinoとシリアル通信をするためにはこれらのライブラリの他にSerialライブラリが必要です。
先ほどの自分のフォルダーに、例えばSerialという名前のサブフォルダーを作成しておきます。このフォルダーにProcessingのSerialライブラリをコピーすることにします。
Serialライブラリは、Processing.appの中を「Contents」->「Java」->「modes」->「java」->「libraries」->「serial」->「library」と辿っていくと見つかります。そこから次のjarファイルを先ほど作ったSerialフォルダーにコピーします。

  • serial.jar
  • macosx(JNIライブラリの入ったフォルダー)
  • jssc.jar

Eclipseで先ほどProcessing.appで試したスケッチと同等のものを作ります。
新規Javaプロジェクトを作り、ビルドパスに先ほどProcessing3フォルダとそのサブフォルダであるSerialフォルダにコピーしたjarファイルを追加します。

プログラムは次のようになります。

import processing.core.*;
import processing.serial.*;

public class ArduinoSerialWriteApp extends PApplet {

  int on = 0;
  Serial myPort;
	
  // Appletのウィンドウの大きさの設定はsettings()というメソッドの中でする(Processing.appの場合はsetup()メソッドの中でする)
  public void settings() {
    size(128, 128);
  }
	
  public void setup() {
    // シリアルポートを開く
    myPort = new Serial(this, "/dev/tty.usbmodem1411", 9600);
    // 初期状態ではLEDは消灯
    myPort.write(0);
  }
	
  // 描画
  public void draw() {
    // LEDが点灯の時は画面を白く、消灯の時は黒く
    if(on == 1)
      background(255);
    else
      background(0);
  }
	
  // マウスクリックの検出
  public void mouseClicked() {
    if(on == 1)
      on = 0;
    else
      on = 1;
    // シリアルポートにオンまたはオフを書き出す
    myPort.write(on);
  }
	
  public static void main(String[] args) {
    // Appletの起動
    PApplet.main("ArduinoSerialWriteApp");
  }
}

Arduinoが接続されているシリアルポートは以下のコマンドで調べられます。

$ ls -l /dev/tty.*
crw-rw-rw-  1 root  wheel   18,   0  3  1 15:32 /dev/tty.Bluetooth-Incoming-Port
crw-rw-rw-  1 root  wheel   18,   2  3  1 15:32 /dev/tty.xxxxxxxxx-Wireless
crw-rw-rw-  1 root  wheel   18,  74  3  8 15:11 /dev/tty.usbmodem1411 

手軽にマイコンの制御ができるこれらの開発環境。先人に感謝です。

kazz12211 について

Working as a OO programmer and enjoying music, bicycle and photography.

ディスカッション

コメントはまだありません。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

評価

ブログ統計

  • 593,676 ヒット

カテゴリー

アーカイブ

カレンダー

2016年3月
« 2月   4月 »
 12345
6789101112
13141516171819
20212223242526
2728293031  
%d人のブロガーが「いいね」をつけました。