[Armadillo:08732] Re: Armadillo-420 で熱電対計測を行いたい

Tsuyoshi YONEMORI email@hidden
2013年 4月 11日 (木) 10:19:58 JST


尾藤様、yoshida様、金井様

米森です。

表題の件について、たくさんのアドバイスありがとうございます。
1-Wireセンサを使って、Javaで動かすことができそうなので、
希望が持てました。
本当にありがとうございます。

また、金井様に教えていただいた RXTX の情報ありがとうございます。
WindowsでプログラミングしていたときはRXTXを使用していたのですが、
Linuxでは、
  Runtime.getRuntime().exec("stty -F raw -echo .....);
などとやっていました。
Armadilloを使い始めてから、Linuxも使ってみた素人なので^^;;

シンボリックリンクを勉強します。
いろいろと分からないことだらけで、また素人の質問をさせていただく
と思いますが、今後ともよろしくお願いします。

米森


======================================

米森 様

金井と申します。

以前、Armadillo-2XXシリーズで1-WireセンサをJavaで使うことをやった経験が
あります。

>できれば、全部をJavaでプログラミングしたいと思っているので、
>それが可能であれば、教えてください。

可能だと思います。

1-Wireデバイスの開発元であるマキシム社からJava用1-Wire
APIを得ることができます。http://japan.maximintegrated.com/products/1-
wire/software/

Java用1-Wire APIとJavaからシリアル通信を行うためのRXTXライブラリを使用すると
全部Javaで実現出来ます。http://users.frii.com/jarvi/rxtx/

RXTXでの注意点として、
RXTXは、WindowsではCOMx、Linuxでは/dev/ttySxのシリアルデバイスを使用します。
Linuxの場合、実際のハードに割り振られているシリアルデバイス名が異なっている
場合があります。その場合は、/dev/ttySxを実際振られているシリアルデバイス名に
シンボリックリンクを貼ると動作します。

また、Java用1-Wire APIの中にサンプルプログラムがあるので参考になると思い
ます。


======================================
yoshida です。

>> 1-Wire 接続温度センサについて、Javaでプログラミングされた経験を
>> お持ちの方がおられたら注意事項など教えていただけないでしょうか?

JAVAで1-Wireを試した訳ではないので、参考情報です。

Javaの標準入出力クラス(java.io)で、1-Wireも制御する事が
出来ると思います。基本、/devの下のキャラクターデバイスであれば、
ファイルを扱うのと、同じように触れるはずです。

以下、過去にA400シリーズでJavaでシリアルを動かすテストを行った時に
作ったサンプルコードです。
※今回は、1-Wireからデータを取るために、 OutputStreamではなく、
  InputStreamを使う必要がありますね

=====
import java.io.*;

public class Print {

	public static void main(String[] args)throws Exception {
		File file = null;

		if(args.length != 0){
			file = new File(args[0]);			
		}
		else{
			System.out.println("need 'serial port name'");			
		}

		try{
			OutputStream out = new FileOutputStream(file);

			for(int i=0; i < 100; i++){
				String str = "int=" + String.valueOf(i) + "\n";
				out.write(str.getBytes());
				Thread.sleep(50);
			}
			out.close();
		} catch (FileNotFoundException e){
			System.out.println(e);
		}
	}
}
=====

ご参考まで。



=====================================
2013年4月10日 12:53 Tsuyoshi YONEMORI <email@hidden>:

> 尾藤様
>
> 米森と申します。
> 早速の回答ありがとうございます。
>
> 1-Wireバスというものが良くわからず、1点の温度計測しかできない
> と思い違いをして、メーリングリストに投稿してしまいました。
> 複数のデバイスを接続できるのですね。
>
> ご指摘いただいた方法で、何とかなるのではないかと希望を持てました。
> ありがとうございます。
> ど素人の質問に対し、アドバイス、本当に助かります。
>
>
> これについてさらに質問させてください。
>
> 1-Wire 接続温度センサについて、Javaでプログラミングされた経験を
> お持ちの方がおられたら注意事項など教えていただけないでしょうか?
>
> 現在、Debian Lenny に、OpenJRE で動作させています。
> プログラミング自体は、Windows7のPCで、Eclipse上で作成し、
> クラスファイルのみをArmadilloにコピーして動かしている状況
> なのです。
>
> できれば、全部をJavaでプログラミングしたいと思っているので、
> それが可能であれば、教えてください。
>
> よろしくお願いします。
>
>
> =====================================
>
> 米森様
>
> 尾藤@アットマークテクノです。いつもお世話になっております。
>
>  > 次に熱電対で温度を何点か取り込んで制御したいと考えているのですが、
>  > どのような方法が可能でしょうか?
>
> 温度取り込みというご用途であれば、一例として、弊社ホームページ
> http://armadillo.atmark-techno.com/manuals
> にありますドキュメント
> Armadillo 実践開発ガイド 第3 部
>> 2.4. 1-Wire 接続温度センサ
> をご参照いただければと思います。
>
> 備考)
>  > 計測する温度域は-20?80℃程度です。
>
> 上記の温度域は、Armadilloの動作温度範囲を越えていますので、
> Armadillo本体は、計測場所に設置いただけないことをご了承願います。
>
> 以上、よろしくお願いします。
>
> (2013/04/10 10:21), Tsuyoshi YONEMORI wrote:
> > > 初めてメーリングリストに参加させていただきます。
> > > 米森と申します。
> > >
> > > 現在、Armadillo-420 から空調機器にコマンドを送り、運転制御を行う
> > > 実験に取り組んでいます。
> > > ?Armadillo-420へインターネットで命令を送り、
> > > ?その命令をもとに空調機へのコマンドを作成し、シリアル通信で送る
> > > という流れになります。
> > > プログラムはJAVAで行っています。
> > > 上記の流れ自体は上手く動作しています。
> > >
> > > 次に熱電対で温度を何点か取り込んで制御したいと考えているのですが、
> > > どのような方法が可能でしょうか?
> > > 計測する温度域は-20?80℃程度です。
> > >
> > > 例えばUSB機器(データロガーみたいなもの?)で取り込みは可能なの
> > > でしょうか?
> > > 可能であれば、その機種名も教えていただけると助かります。
> > >
> > > あるいは、熱電対を読み込むためのP板を自作するべきでしょうか?
> > > このような経験をしたことのある方がおられたら、些細なことでも
> > > 構わないので、情報をいただけないでしょうか。
> > >
> > > よろしくお願いします。
> > >
> > > _______________________________________________
> > > armadillo mailing list
> > > email@hidden
> > > http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> > >
>
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>



armadillo メーリングリストの案内