◆留意:このページに検索で飛んできた人は、まず”東京都中央区日本橋の放射線量計測+Twitter Bot公開。”の記事をご覧ください◆
*************
ミーハーな私は米国Black Cat Sysmtes (以下BCS)が販売しております格安ガイガーカウンター放射線検出器(Geiger Counter Radiation Detector) GM-45を個人輸入しました。GM-10の方が安いのですが、私と同様に問い合わせが多いらしく品不足が続いているようで、一つ上の精度のGM-45しか売っておりませんでした。
公式サイト:BCS GM-45 Geiger Counter Radiation Detector : http://www.blackcatsystems.com/GM/products/GM45GeigerCounter.html
さて、このGM-10やGM-45は、RS-232C(バスパワー)で放射線カウント値(CPM : Counts Per Minute単位)で取得できます。BCSのページには、USBバージョンも売っているわけですが、これは要するにRS-232CシリアルをUSBに変換するアダプターが同封されてくるだけの様です。今回私はRS-232C版(つまりUSB変換アダプタなし)を購入しました。
中身を言ってしまえば普通のRS-232Cレベルのシリアル(57600bps)で取得するだけですので、大した仕組みではありません。ソフトウェアもWindows用、Mac OS X用、Linux用がCD-ROMで付属してくるのでこれを使えば、まぁ手元で計測は大したことはないでしょう。
今回私は、常時稼働しているLinuxサーバで取得することにしました。この検出だけで24時間Windows機を動かしておくのもバカバカしいので。よってこのエントリーでは、LinuxでRS-232C経由(USBも同じ考え方で可能)で取得する方法を紹介します。まぁ、実際に私がやった際に定期取得までに2時間くらい掛かってしまったので、同等システムを組む方がいらしたら、参考になるかなと思い少し解説します。今回のLinux環境は、CentOS5(RHEL5クローン)@x86_64 : 64bit版です。
GM-10/GM-45の常時取得を、使わなくなった古いPCで運用する際に、Linuxは低パワーで動きますし、OSフィーも発生しませんし、オススメだと思います!
◆取得プログラム:たんなるRS-232Cのシリアル通信なので自分で書いても大して難しくはありません。とはいえ、せっかくなので他人の過去の遺産を使わせて頂くことにします。
利用したソフトウェア:Gm4Lin: driver for GM45 and GM10 radiation detectors under Linux : version 1.2.15を利用
0)シリアルポート(デバイスファイルの準備)
0A-1) RS-232C接続の方は、一番最初のシリアルポートにGM-10/GM-45を接続すれば、普通は、/dev/ttyS0に接続されるはずです(てぃーてぃーわい・えす・ぜろ)
0A-2) 試しにcu (UUCPパッケージ | yum install -y uucp)あたりでポートを叩いてみて下さい。# cu -s 57600 -l /dev/ttyS0 <enter> これで接続されなんかゴミをはけば接続できています。”~.”を入力して接続解除。
0B-1) USB経由の方は、USB -> RS-232Cアダプターのドライバを適切にインストールし、デバイスファイルを適切に取得してください。/dev/ttyUSB0とかになるのかな?同じくcuを用いてテスト。
* 以下、/dev/ttyS0に接続されているものとする。
1)関連パッケージのインストール
gm4linは、MySQLサーバのテーブルに10秒毎ロギング(insert)してくれるアプリです。よって、MySQLサーバの起動はもちろん、MySQLのC/C++ベースの開発ライブラリが必要です(mysql-develなり、その辺テキトーに)。基本的にcentosのデフォルトリポジトリだけで対応可能です。dagとかなくても動きました。
2)gm4linのダウンロード
マニュアル:http://mathias.bavay.free.fr/software/gm4lin/readme_file.html
ソース・バイナリ:http://mathias.bavay.free.fr/software/gm4lin/gm4lin_1.2.15.tgz
そして展開。中には、ソースコードと、32bit Linux環境で動作する一応のバイナリが付属しています。
3)付属実行バイナリで一応テスト動作してみる。(MySQLなどへの接続はなしに)
# ./gm4lin –device /dev/ttyS –start 0 –default-sensitivity=GM45_CO60
* ./gm4lin –help ←ヘルプを出せます。
*これを実行すると10秒に一回値が標準出力されるはずです。できれば成功。ちなみにGM45の場合は、上記の様に”GM45_CO60″と設定。GM10の場合は、”GM10_CO60”と設定します。
*接続デバイスファイルが/dev/ttyUSB1の場合は、–device /dev/ttyUSB –start 1となりますね。予想してください。
*ログファイルが同じディレクトリにできているはずです。log_probeX_日付.datみたいなファイルで。よってMySQLサーバを使わずにファイルロギングならこれでOKだと思います。しかし、私の環境では10秒毎にロギングされず、アプリを終了(Ctrl + C or Kill)したときにflush(書き込まれる)という状態に。なんでかな?ソースコードあるので、その辺見れば良かったけど、MySQLにinsertするのが(後述)うまくいったので、ファイルロギングは無効にしました。
4)MySQL用Insert対応バイナリのビルド(コンパイル)
4-1)付属してくる実行バイナリは、MySQL insertモードが無効になっているので、メイク(make)を通してビルドしないといけない。./configureはない。その為、Makefileを自分で編集する必要あり。まずは、makeを実行して通ればOK.
4-2)64bit環境対応:Makefileの中のARCHITECTURE=#(INTEL_PENTIUM)というのが余計な事をしている。普通に64bitで通すためには、消してしまうのが一番楽。ARCHITECTURE=にしてしまう。これで、makeが64bit環境でも通るはず。
4-3)MySQLに対応させる:Makefileの中の”#comment the following 5 lines to disable my_sql support”につづく5行のコメントアウトをはずす。32bit環境では、makeで通るはず。通らなかったら、yumで関連パッケージをインストールされたし。64bit環境では、通らなかった。
* MYSQL_LIBS=-L’/usr/lib/mysql’ -lmysqlclient -lz -lcrypt -lnsl -lm の部分を
* MYSQL_LIBS=-L’/usr/lib64/mysql’ -lmysqlclient -lz -lcrypt -lnsl -lm に突貫工事で変更。私の環境ではこれで通った。
4-4)できあがったgm4lin実行バイナリは、MySQL insert(10秒毎)対応のバイナリになる。
5)MySQLサーバにデータベースを用意。
これが一番困った。上記のreadmeにはデータベースにinsertすることは分かったが、テーブルのカラムフォーマット(スキーム)が書いていない。ので、紹介。”raddb”というデータベースを作り、ローカルホストからusernameというユーザが”hogepassword”のパスワードでアクセスを許可する。その後、radiationというテーブルを下記に示すカラム名などで作成する。
mysql > create database raddb;
mysql > grant all on raddb.* to username@localhost identified by “hogepassword”;
mysql > use raddb;
mysql > CREATE TABLE radiation (device TINYINT, dose DOUBLE, data DOUBLE, dataunits VARCHAR(3), stamp TIMESTAMP NOT NULL DEFAULT NOW());
6)実行する。
実行例:/usr/local/gm4lin/gm4lin –device /dev/ttyS –start 0 –default-sensitivity=GM45_CO60 –mysql username@localhost:raddb:radiation:gm45_ –passwd hogepassword –port 3306 –log-path /var/log
* これは、MySQLにinsertもするし、/var/log以下にログも残す設定。
実行例2:/usr/local/gm4lin/gm4lin –device /dev/ttyS –start 0 –default-sensitivity=GM45_CO60 –mysql username@localhost:raddb:radiation:gm45_ –passwd hogepassword –port 3306 –log-path /var/log –daemon
* 更に–daemonをつければ、バックグランド実行になる。
7)その他。
・gm4lindは、redhad系の起動スクリプト。私は使っていないが、必要とあればこれを参考にすればいいらしい。
・取得される放射線量単位は、CPM(Counts per minute)です。これをμSv/h (マイクロシーベルト毎時)に換算ですが、何せ放射線源、スペクトルを考えてもそれほど単純ではありません。しかしあくまで概算ということでしたら、BCS社のCs137を用いてキャリブレーションした計算式を使えば、概算値は算出できます。参考:Converting From CPM to mR/hr : uSv/h
・私の備忘録的殴り書きなので誤字など多発しているかもしれませんので、ご容赦を。