GPIBのバスライン
GPIBの規格によると、GPIBのそれぞれのバスは3kohmを介して5Vにプルアップして、6.2kohmを介してGNDにプルダウンしてある。何もつながない状態では、約3.3Vになる計算である。ドライバとしては、SRQ, NRFD, NDACはオープンコレクタ、その他の信号線はオープンコレクタまたはトライステートにするらしい。前者の3つは、wired orを実現するために、オープンコレクタの必要があるのだろう。
一方、raspberry piのGPIOは、3.3Vなので、GPIBのバスの電圧とは相性は良いかも知れない。問題は、電流の吸い込み能力がどの程度あるかである。
少し抵抗をつないで直結しても大丈夫なのかなと不安になるが、どうなのだろう。
GPIBアダプタのアイディア
FTDIかRaspberry piか
測定装置のインターフェースの状況が、近年変わりつつある。昔からあったRS232CとGPIBは徐々にすたれて、USBTMCやEthernetが増えつつある。後の二つはLinuxから使いやすいので、重宝している。前の二つの内でRS232Cは、USB-RS232C変換ケーブルが容易に入手できるので、簡単に使うことができる。問題はGPIBであるが、LinuxからGPIBを扱うには、いくつかの方法がある。
まずは、PCにGPIBボードをのせて、linux-gpibを使って制御する方法である。これはシンプルなのだが、最近のdebianではカーネルのコンパイルが必要なようで、少し面倒である。以前はこのようにして使っていた時期もあるが、ボードも高いし、インストールが面倒なので、あまり使わなくなってしまった。
特殊な方法としては、古いPCについていたパラレルポートを改造して、GPIBを使えるようにしたこともある。コストは非常に安いし、当時のWindowとLinuxから使えるようにして、それなりに便利に使っていた。説明はここに残っているが、パラレルポートはほとんど見かけなくなったので、今は使えない方法である。
現在、よく用いられているのは、USB-GPIB変換ケーブルを使う方法である。アダプタはいろいろな種類があるが、linux-gpibを使うものや、内部でシリアルに変換するものなどがあるようである。自分でもUSB-RS232CとMAX232とAVR tiny2313を使った変換ボックスを作ったことがある。ソースなどは汚いので、公開していないが。
最近は、使える道具も増えてきたし、新しいGPIBを作れないか考えてみた。まず考えたのが、FTDIのBitbangモードを使って、USBから直接GPIBを制御できないかというものである。もう一つの考えは、Raspberry piのGPIOを使うものである。
FTDIのbitbangは、USBからbit操作を簡単にできる、魅力的な方法である。しかし、FT232Rのbitbangでは8bit、cbusは4bitしか使えないし、FT2232は16bit使えるようだが外付けの部品がいろいろと必要なようで、どちらもGPIB用としては不十分な気がする。FT232Rを使ってシリアルにしてマイコンでGPIBに変換するようなアダプタは、他にも作っている人がいるし、特殊なコマンドを定義しないといけないので、美しくない気がする。cbusはシリアルと同時に使えるので、ATN, IFC, REN, EOIなどをcbusから出して、dataはシリアルで通信するようにするようにすれば、特殊なコマンドを定義しなくても良いので、面白いかもしれない。
一方、Raspberry piのGPIOを使えば、余分なICを使わずに、GPIBが制御できるかもしれない。model BだとGPIOが17本、pi2Bだと26本あるようなので、数は十分である。CPUは忙しくなるが、バスに抵抗はダイオードなどをつけてGPIBにつなげば、GPIBが制御できそうである。
今度、時間ができたら、どちらかのアイディアでやってみよう。
raspberry piでmotion
motionのdefaultの設定は不完全
raspberry piでweb cameraの画像を配信しようと思い、motionをインストールしてみたが、デーモンとして立ち上げるのに苦労した。まず、aptでmotionをインストールして、/etc/motion/motion.confを編集する。daemonをonにしたり、image widthやheightとframerateを設定し、ファイルを保存しないようにoutput_normal offとして、外部からアクセスできるようにwebcam_localhostをoffとする。
ここまでは、普通にするべきことなのだが、それに加えて以下のことをしたら、デーモンが立ち上がった。まず、/etc/default/motionを編集し、start_motion_daemon=yesとする。次に、/etc/init.d/motionの中の"–chuid motion"というオプションを削除する。
これで、電源を入れたら、motinoがデーモンとして立ち上がるようになった。
motionは比較的メジャーなパッケージだと思うのだが、何でdefaultの設定がこんなに面倒なんだろう。
cabも扱える
Linuxでcabの展開
linuxでcabを展開する必要があったので、やってみた。apt-get install cabextractでインストールしてcabextract a.cabで展開できる。すぐにできてしまったが、メモしておこう。
raspberry piでmathematica
Mathematicaが使えるらしい
raspberry piの設定をしていて、いろいろと調べていたら、raspberry piではMathematicaを非商用では無償で使えるらしい。インストールは、sudo apt-get install wolfram-engineで終わり。no GUIだと/opt/Wolfram/WolframEngine/10.0/Executables/mathで実行らしい。とりあえず、N[Pi,100]などとして、遊んでみた。10万桁まではすぐに表示できたが、100万桁は少し時間がかかった。Quitで終了。
sudo ln -s /opt/Wolfram/WolframEngine/10.0/Executables/math /usr/local/bin/math
とでもして、シンボリックリンクをはっておいた。
rubyでグラフ
googleで検索
UTF-8にして
このblog内の検索をするために、昔からgoogleを利用していたが、最近は検索がうまくいかなくなっていた。原因の一つは、漢字コードがEUCから UTF-8に変わったからだったが、検索するサイトの指定の仕方も以前とは少し変わった気がする。as_sitesearchという項目を加えたら、うまく動くようになった。これで、また昔の自分の記事を検索できるようになります。
マウス操作の自動化
xautomationとautoclick
何度もマウスで同じ操作をする必要があり、マウスを自動で操作する方法を調べていたら、UNIXではxautomationを使うと良いらしい。
xte 'mousemove 100 100' xte 'mouseclick 1'
などとすると、カーソルを移動させて、クリックなどができる。 しかし、virtualbox上WindowsNTを操作しようとしたらうまく行かなかったので、今度はWindowsのユーティリティを探す必要がでてきた。似たようなソフトはいくつもあるが、古いNTで使えるとなるとかなり限定されたが、AutoClickというソフトが要請を満たすことが分かった。似たような名前のソフトがいくつかあるので、どれなのか分からなくなってしまったが、ac012.lzhというファイルのやつを使った。これで無事にマウスを操作することができ、無事に目的を達成することができた。
2015.1.23追記 使ったAutoClickはhttp://ichisoft.nobody.jp/ac.htmlにありました。
エアーシリンダー
エアーシリンダーで往復運動
往復運動をする装置を作ろうと思って考えていたら、エアーシリンダーが良いのでは無いかと思い付き、エアーシリンダーと電磁バルブを買って、装置を組み上げた。
昔見た装置は、モーターを使って、往復運動を実現していたが、直接往復運動ができるエアーシリンダーの方が、良いだろう。しかし、2ポートの電磁バルブを買ったら、ガスの逃げ場が無くて、すぐに動かなくなってしまった。当たり前のことだが、盲点だった。3ポートを買い直すのも馬鹿馬鹿しいので、いろいろと考えて、配管を工夫したら、うまくいった。
あとは、電磁バルブに電流を供給するためのトランジスタや、それに信号を送るマイコンを組み込んだ回路を作り、待ち時間などを調整したら、完成である。久々に2313を使ったが、この程度のプログラムではバグは出来なかった。
まだ、箱には入れていないが、ほぼ完成したので、明日テストランをしてみよう。
古いlubuntuのインストール
old-releasesで使える
あるPCのHDDが死んだので、HDDを入れ替えて、linuxをインストールした。32bit用のものとしては、手元にはlubuntu11.04しかなかったので、それを使うことにしたが、新たに別のソフトをインストールできるかが不安だった。しかし、aptソースをold-releases.ubuntu.comに書き換えると使えるらしいので、試してみたら、うまくいった。rubyもftpdもインストールできたので、無事にだいたい元通りに使える環境になった。