curious4dev

色々ダメなandroidアプリを開発したい会社員 高橋が綴る、androidアプリ開発やArduinoについて

*

PCとArduinoをJavaでシリアル通信

 

お疲れ様です。高橋です。

先日作ったコレ。

042901

よくよく考えると、書き込む際にいちいちArduinoに曲データを解釈させる必要性が無い事に、帰宅中ハタと気づいてしまいました。

PC上で生成したArduino用コードをいちいちArduinoに食わせるまでもなく、先日のバイナリルールに則って変換したバイト配列をシリアル通信でそのまま何か使って書き込めば良いのです。

043002

そうすると、書き込み時に毎回Arduino側でスケッチを作成する必要も無いので、純然たる書き込みスケッチと読み込みスケッチさえあれば、もっと簡単。

Javaでシリアル通信

Arduino IDEはシリアルモニターがあるのですが、バイナリデータは書き込めないような感じです。PCで動く、ArduinoのCOMポートに対してシリアルでデータを書き込むためのツールが必要です。Androidアプリ開発用のためにEclipse環境が整っていましたので、Javaで作ることにしました。

基本設計は、

  1. smf2ymzで出力したArduino用コードをどっかに保存 (e.g. d:/Arduino/sample.txt)
  2. Arduinoとのシリアル通信用COMポートを設定する (e.g. COM3)
  3. bpsを設定する (e.g. 9600)
  4. シリアル通信用の準備
  5. ファイルを1行ずつ読み込み、バイト配列に変換する
  6. 書き込む
  7. 最後に終了用バイト配列を書き込む

という感じ。

ライブラリを調達

Javaでシリアル通信をする際、ライブラリが必須です。

Windows 64bit用のライブラリはhttp://fizzed.com/oss/rxtx-for-javaからダウンロード出来ました。

mfz-rxtx-2.2-20081207-win-x64.zipを展開すると、下記のようなファイル達が解凍されます。

043003

Install.txtを読めばわかるのですが、jarを適当なパス(lib系)に配置し、dllも適当なパス(bin系)に配置します。

どこに配置すれば良いのか不明な場合は、JAVA_HOMEを確認するなり、

を動かすなりして、調べます。

Javaでの実装

下記を作りました。

実行結果

テキストから読み込んだ物は正常にバイト配列にする事が出来ました。

043004

シリアル通信も多分問題ないけど、明日は書き込みスケッチの実装です。

 

 

 

以上、よろしくお願い致します。

 - 電子工作

  関連記事

秋月製ESP-WROOM-02が動いた

お疲れ様です。高橋です。 秋月で買ったESP-WROOM-02が動きました。AT …

ブレッドボード上のYMZ294をユニバーサル基板化してみたが。

お疲れ様です。高橋です。 ArduinoからYMZを鳴らしているブレッドボードが …

赤外線リモコンをケースに格納

お疲れ様です。高橋です。 先日作ったATtiny13Aの赤外線リモコンを、ケース …

音階LED完成、YMZのノイズの原因判明

お疲れ様です。高橋です。 音階LEDの実装が完了しました。 青色LEDが眩しすぎ …

YMZシールドのMIDI化を検討

お疲れ様です。高橋です。 Arduino UNOにYMZシールドをくっつけ、さら …

Arduino Pro MiniでLチカしてみた

お疲れ様です。高橋です。 最近ずっと忙しく、平日はもちろん、土日も疲労のため何も …

音階LED実装 #4

お疲れ様です。高橋です。 今日は音階LEDのIC-IC間、GNDの敷設、そして1 …

【完成】 電子オルゴール

お疲れ様です。高橋です。 電子オルゴールの制作が佳境に入り、とうとうカルトナージ …

汎用ロジックIC(NAND/NOR/AND/OR)試験機

お疲れ様です。高橋です。 単一の機能を持ったシンプルな、汎用ロジックICという物 …

YMZシールドの作成 #2

お疲れ様です。高橋です。 先日から作っていたYMZシールドですが、本日完成しまし …