USB機器

FT232RLとAVRを使って
測定装置を使うときには、以前はRS232CかGPIBが標準だったが、今ではUSBかLANが普及してきている。GPIBのインターフェースをPCに増設するのも嫌なので、最近はUSBとUSB-RS232Cを使って測定装置を制御することが増えてきた。どうしてもGPIBを使わないといけないときには、AVRでGPIBを解釈させている。 次作の装置を作るときにも、今後はUSBの方が便利だろうということで、先日はスイッチングをする装置を作った。これはあっさりと動いたので、今度は電圧計を作ってみようとしたら、はまってしまった。やはり、新しい石を使うのは難しい。自作USB機器第二号になる予定だったのに、いつ完成するだろう。

Read more...

バックアップの必要性

rsyncでバックアップ
先日、学生のHDDが死んで、幸い重要な部分はバックアップがあったので、大丈夫だったのですが、一部のデータをバックアップしていなかったのを、悔やんでいました。私もそれほど頻繁にバックアップを取る方では無いので、これを機会にバックアップを比較的頻繁に取ろうと考えました。 Linuxで簡単にバックアップする方法として、rsyncを使うものがあるので、まずはこれを使うことにした。sshから別のサーバーにデータを移せるので、便利のようだ。

rsync -av ~/from ip:to

とすると、ローカルのfromが、ipというサーバーのtoというところに、バックアップされる。さらに、再び実行したときには、更新されたものだけがコピーされる。–deleteオプションをつけると、消されたファイルは消してくれるが、これを付けた方が良いかは場合によるだろう。注意しないといけないのは、fromがtoの下にバックアップされるということだ。最初は、同じフォルダ名にしていたら、to/fromというフォルダができてしまった。これで気楽にバックアップが取れるようになった。

Read more...

AZにlubuntu12.10

快適なlubuntu12.10onAZ
ubuntu12.04はAZではあまりうまく動かなかった。下調べした結果12.10はそれなりに良いらしいので、インストールした。まず、普通にインストールする。ここで良いのが、今回からはdefaultのデスクトップ環境がLXDEになったことだ。日本語は選択したが、キーボードの設定がでなかったので、設定-Lxkeymap-日本語(OADG 109A)とする。さらに.Xmodmapを2011/12/22のようにする。そして、設定-言語サポートから日本語関係のパッケージをインストールする。ディスプレイのドライバーを入れ替えるために、設定-SoftwareSources-追加のドライバーから、NVIDIAのドライバーを選択する。驚いたのは、スピーカーの設定などをしないでも音が出ることと、youtubeは普通に見れることだ。そして、flashとしてbrowser-plugin-gnashをインストールする。

Read more...

GPIBからUSB-RS232Cへの移行

RS232Cのecho

以前はGPIBで制御していた装置を、USBから使おうと思って、USB-RS232Cを使って制御しようとしたら、かなり苦労してしまった。RS232Cにはそれなりに慣れているつもりだったのだが、まだまだ経験が浅いようだ。

まず引っかかったのが、ストレートとクロスの問題だった。これに気づくのに数日かかったのは、反省すべきところである。そして、ボーレートやパリティなどのところはうまく指定しているはずなのに、送信がすぐに文字化けしてしまうという問題に悩まされた。受信はうまくいくのに。

装置のマニュアルをいろいろと読んでいたら、「装置はPCよりも処理速度が遅いので、echoをするモードにして、一文字一文字echoを待ってから、次の文字を送る方が良い」という記述を見つけた。sttyでechoをするようにしてもうまくいかないので、rubyで次のように書いたらうまくいった。

strs.split(//).each{|s|
  @port.write(s)
  @port.flush
  @port.read(1)
}

いつも、装置との通信には苦しめられることが多い気がする。こういう経験を通して、だんだんと慣れて行っているはずなのだが、まだまだ精進が足りないようである。

Read more...

anonymousでftp

anonymousの設定は面倒
ftpからwebのデータをanonymousでuploadできるようにしようと思ったら、設定に思ったより苦しんでしまった。vsftpdを使っているので、/etc/vsftpd.confを編集して、以下を追加する。

nonymous_enable=YES
no_anon_password=YES
anon_root=/home/anon/public_html
anon_upload_enable=YES
anon_other_write_enable=YES
anon_umask=777
anon_mkdir_write_enable=YES

そして、public_htmlをchmod go+rwとしておくと良い。結局はこれだけなのだが、anonymousに関する設定がいろいろとあって、そのどれが必要なのかを調べるのが面倒だった。

Read more...

openofficeからlibreoffice

debian squeezeにlibreoffice

windowsのlibreofficeで作ったodpファイルを、debianのopenofficeで見たら、文字が大きくずれてしまったので、libreofficeを入れることにした。openoffice.orgを除去して、aptのsourceに

deb http://backports.debian.org/debian-backports squeeze-backports main

を加えて、libreofficeを入れた。依存関係の問題が生じたが、二番目の提案を採用したら、一応インストールには成功した。そこで、問題のodpを開いたら、ほぼ良い感じで読むことができた。フォントが違うのか、微妙に文字の大きさの関係でずれている箇所はあったが、まあ良いだろう。

余談だが、そのodpをwindowsXPのlibreofficeで作成している時には、拡張子をつけると、explorerが固まるという症状に悩まされた。そのファイルをシングルクリックするとハングして、libreofficeが立ち上がる以前に死ぬのである。あたかもlibreofficeを使うおうとする人を邪魔するような挙動である。拡張子をつけないとうまくいくので、libreofficeが悪いわけでは無いだろうし。世の中には不思議なこともあるものである。

Read more...

C301dnで両面印刷

foo2hipercのバージョン
先日到着したプリンターC301dnで、Linuxから両面印刷ができないのが、不満だったので、再挑戦してみた。Debian Squeezeで

foo2hiperc-wrapper -V

としたら、以下のように表示された。

$Id: foo2hiperc-wrapper.in,v 1.15 2009/05/11 17:35:55 rick Exp $
$Id: foo2hiperc.c,v 1.25 2009/03/08 00:35:31 rick Exp $
$Id: foo2zjs-pstops.sh,v 1.13 2008/12/05 02:46:35 rick Exp $

思ったよりも古いようだ。そこで、新しいfoo2hipercを入れるために、以下のようにした。

wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz
tar zxf foo2zjs.tar.gz
cd foo2zjs
make
sudo make install

そこで、同じようにバージョンを確認すると、新しくなっている。

$Id: foo2hiperc-wrapper.in,v 1.25 2011/01/31 12:23:43 rick Exp $
$Id: foo2hiperc.c,v 1.32 2011/06/09 13:35:06 rick Exp $
$Id: foo2zjs-pstops.sh,v 1.20 2012/02/23 21:19:46 rick Exp $

そして、プリンターもC310dnがあったので、少しでも数字が近い方が良いだろうということで、それを指定した。両面印刷を試してみると、無事できるようになっている。やはり、物事は苦労してできるようになると、感慨深いものである。

Read more...

pcmanfmの自動認識

udiskかgvfs-fuse

先日停電があって、そのときに実験室のPCが一台お亡くなりになった。代わりになるPCを探していたら、少し古いノートがあったので、これにdebian squeezeのLXDEを入れた。しかし、USBで外部ドライブを接続したときに、pcmanfmから認識してくれない。dmesgでは認識しているようだが、何の設定が悪いのか分からなかったが、ようやく解決できた。不要な作業もあるかもしれないが、以下に書いておくことにする。

まず、インストールされていなければ、udiskとgvfs-fuseをインストールする。

aptitude install gvfs-fuse udisk

次に/etc/polkit-1/localauthority/50-local.d/55-pcmanfm.pklaを作って、以下を記述する。

[Strage Permissions]
Identity=unix-group:plugdev
Action=org.freedesktop.udisks.filesystem-mount;
org.freedesktop.udisks.drive-eject;
org.freedesktop.udisks.drive-detach;
org.freedesktop.udisks.luks-unlock;
org.freedesktop.udisks.inhibit-polling;
org.freedesktop.udisks.drive-set-spindown
ResultAny=yes
ResultActive=yes
ResultInactive=no 

そして、再起動すれば認識してくれるようになった。でも、何をしているのかさっぱり理解していない。まあ、いいか。

Read more...

okiのプリンター

Linuxからの印刷
プリンターが壊れたので注文していた、新しいプリンターが本日届いた。okiのc301dnというカラープリンターなのだが、レーザーじゃなくてLEDプリンターという種類らしい。 いつも問題になるのは、Linuxからの印刷である。古いプリンターだとppdがあって、印刷できることが多いが、苦しむことも多い。okiはLinuxと比較的相性が良いと思っていたので、楽観視していたが、最近はそうでもないようだ。 このプリンターはXPSとHiper-Cというプロトコルに対応しているらしい。前者はMS独自の規格、後者はoki独自の規格のようです。両方独自なので、嫌な予感がします。調べたところ、foo2hipercというものがあって、これを使うとうまくいきそう。CUPSのPPDの選択のところを見てみると、okiのでfoo2hipercを使っているものがいくつかある。c301dnは無いので、まずはc3100にしてみる。testページを印刷していみると、うまく印刷できた、と思いきや白黒になっている。なんとなくc5600にしてみたら、カラーもできた。しかし、今度は両面印刷がうまくいかない。 まあ、初日はこんなもんかな。

Read more...

ADCのノイズ低減

AVRでSLEEP

AVR tiny261のADCを使って、電圧などを表示するようなものを作っていたのだが、ADCの読みが少し揺れるので、ノイズ低減のためにSLEEPさせたときにADCを読むことにした。まずは

#include <avr/sleep.h>

として、MCUCRのSM1,SM0とSEを設定する。USIやアナログ比較器も止めておいた。そして、sleep_mode()でSLEEPしてくれるようだ。ADCの終了で割り込みがかかるので、その中で適切な処理をして、メインルーチンに戻ったら、またすぐにSLEEPさせるという感じにした。あまりノイズは減った気はしないけど、無事に動いたからいいか。

AVRのADCは10bitしかないので、少し不足を感じるときがある。せめて、12bitぐらいあれば良いのに。また、読み取りを安定化させるために、積算したりしても、ノイズはそれなりに拾ってしまうのは、周辺の回路やグランドが良くないのかな。

Read more...