TINIはイーサネットを始め多種のインターフェイスを持った、小型で低価格なJavaVMマシンです。 せっかく手に入れたので、いろいろ作ってみました。
TINIに小型イメージセンサトレバを繋いでイメージキャプチャしてみました。
トレバとの接続は「Treva基板キット」を使って、TINIの10ピン(CTX)と11ピン(CRX)を、Treva基板キットの3ピン(CLK_IN)と4ピン(DOUT)に、それぞれ直結しました。
トレバの制御方法は、「CMOSカメラユニット「Treva」の解析」を参考にしました。 ソフトウェアは全て自作ですが、出力データを非圧縮PNGファイルに出力するアイデアは「Treva on TINI」から、処理の高速化の為にネイティブメソッドを使うアイデアは「とればで遊ぼう」から、それぞれいただきました。
TiniTreva.tiniとTiniTreva.tlibをTINIに転送して、コマンドラインから
java TiniTreva.tini file=treva.pngで、イメージキャプチャを開始します。 キャプチャしたデータはtreva.pngファイルにPNGフォーマットで書き込まれます。
イメージのキャプチャスタートからPNGファイル書き込み終了まで2分ほど時間が掛かります。 イメージの取り込みとPNGファイル作成には時間が掛かっていますが、シャッター速度は1秒以下ではないかと思います(正確には計れませんので感覚です)。 動いている人間もそこそこ撮れます。
java TiniTreva.tini helpで、コマンドラインオプションが一覧表示されます。 コマンドラインオプションでキャプチャ動作の設定を変える事が出来ます。
TINIでWEBサーバとTINIでイメージキャプチャを組み合わせてライブカメラを作ってみました。
ソフトウェアはTINIでWEBサーバとTINIでイメージキャプチャの物を組み合わせて使います(ダウンロード, ダウンロード)。
Javaアプレットに対応したWEBブラウザ用に、画像表示アプレットも作りました。 画像表示アプレットはここからダウンロードできます。
TiniHTTPD.tiniとTiniTreva.tini、TiniTreva.tlibをTINIに転送して、コマンドラインから
java TiniHTTPD.tini &と、続けて実行します。 TINIでWEBサーバとTINIでイメージキャプチャがバックグラウンドで起動します。 もし、/wwwディレクトリと/tmpディレクトリがない場合は先に作っておいて下さい。 WEBブラウザからはhttp://TINIのアドレス/treva.pngでキャプチャ画像にアクセスできます。 キャプチャ画像ファイルは5分間隔で自動更新されます。
java TiniTreva.tini file=/www/treva.png temp=/tmp/treva.png interval=5 &
TINIでWEBサーバとTINIでイメージキャプチャの組合せなので、それらのコマンドラインオプションで動作設定を変える事が出来ます。
HTMLの<img>タグでキャプチャ画像を張り付けただけでは、WEBブラウザに表示される画像は自動更新されません。 だからと言って、<meta http-equiv="Refresh" ... だと、ページ全体が更新されてしまいます。 画像表示アプレットを使うと、キャプチャ画像の表示のみを自動更新できます。 画像表示アプレットを使う場合は、画像を表示したいページのその場所に下記コードを書いてください。 TrevaApplet.jarはWEBブラウザからアクセスできるディレクトリに置いておく必要があります。
<applet code="com.kobayasy.tini.TrevaApplet" archive="TrevaApplet.jar" width="96" height="72"
alt="You can see output from a Java Applet if you were using a Java1.3-compatible browser.">
<param name="imageURL" value="treva.png">
<param name="interval" value="61">
<p>
あなたのブラウザは、APPLETタグを処理出来ません。
Java1.3に対応したブラウザを使って下さい。
</p>
</applet>
バックグラウンド動作しているTINIでWEBサーバやTINIでイメージキャプチャ、TINIでライブカメラ、TINIでTIMEクライアントのデバッグ用にSYSLOGサーバを作ってみました。
TINIは大きなサイズのファイルが作れないので、SYSLOGサーバになれる物がTINI自身しかない場合に限り、必要最低限の時間だけ使う事をお勧めします。
このサーバはTINI用に作りましたがTINI専用ではありません。 TINIでないJavaVMでも動作します。
SyslogD.tiniをTINIに転送して、コマンドラインから
java SyslogD.tini > syslog.log &で、バックグラウンド起動してsyslog.logファイルにログを出力します。
例えば、TINIでライブカメラのデバックをする場合、コマンドラインから、
java TiniSyslogD.tini > syslog.log &と、続けてバックグラウンド起動しておけば、その記録がsyslog.logに残ります。
java TiniHTTPD.tini syslog=localhost &
java TiniTreva.tini file=/www/treva.png temp=/tmp/treva.png interval=5 syslog=localhost &
java TiniSyslogD.tini helpで、コマンドラインオプションが一覧表示されます。 コマンドラインオプションでサーバ設定を変える事が出来ます。