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

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

 

 

 

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

 - 電子工作

  関連記事

マウスを分解してみた(リベンジ)

お疲れ様です。高橋です。 壊れたマウスを貰った 本日、壊れたマウスを貰いました。 …

満員電車内でのオナラと検知 #3

お疲れ様です。高橋です。 先日秋月で購入した音声合成LSIのATP3011。やっ …

EEPROM書き込みシールドの作成

お疲れ様です。高橋です。 先日成功したPCからのEEPROM書き込みですが、ジャ …

Pro Mini互換機でFF2戦闘音楽を使ったYMZ動作試験

お疲れ様です。高橋です。 電子オルゴールの最終形をイメージしてブレッドボード上で …

YMZシールドの基板設計

お疲れ様です。 前に基板化したYMZ294をさらにシールド化したい事をPOSTし …

ArduinoIDE1.6.4+ATTiny13Aで赤外線リモコン(難航)

お疲れ様です。高橋です。 先日から引き続いて、ATTiny13Aで赤外線リモコン …

Arduino Pro MiniでLチカしてみた

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

電子オルゴール 基板実装 #2 ~ワイヤストリッパー~

お疲れ様です。高橋です。 先日秋葉原でワイヤーストリッパーを買ってきました。 被 …

猫×おもちゃ×動画×アプリ

お疲れ様です。高橋です。 金魚水槽 先日フラフラとネットサーフィンしていて目に入 …

Arduino+EEPROM+YMZ294で曲の抜き差し

お疲れ様です。高橋です。 I2Cの256KBitなEEPROMに曲データを書き込 …