GM-10RaspberryPiRaspberryPiによるGM-10インターフェース先日(2014年5月末)突然PCとガイガーカウンタGM-10の接続がうまくいかなくなりました。PCを再起動しても、GM-10を認識しません。そこで、RaspberryPiを用い、下図のようにPCとGM-10のあいだに、RaspberryPiをいれGM-10からのデータを読み取り、CSV形式のデータログファイルをつくり、それをPCからアクセスすることとしました。これはPCにたとえ不具合がおこっても、独立にデータログだけはRaspberryPiでとり続けることができるようにとの思いからです。サイトに例が載っています。RaspberryPiのUSBポートに接続してプログラムはPythonで書かれています。それを参考に構成しました。いままでは9ピンシリアルのコネクタでPCに接続していましたので、USBとシリアルのコンバータが必要です。以前別の目的で購入したIOデータ社のUSB-RSAQ2というのが手元にありましたので、それを流用しました。生産終了品でWindows7では使えませんでしたが、今回復活しました。後継機種でもOKだと思います。USB-RSAQ2RaspberryPi側の準備については次の通りです。RaspberryPiを動くようにする。多くのUSBシリアルコンバータで使用されているICは、Linuxでは標準で導入されているため、USBポートに挿せば認識します。USB-RSAQ2)のようなメッセージが出て、認識されているのがわかります。このデバイス名は、後ほどプログラムに必要です。つぎにPythonでシリアルインターフェースが使えるようにシリアルポート操作ライブラリをインストールします。GM-10/GM-45のインターフェースのページには、次のような記述があります。「ガイガー管が粒子を検知するごとに、パルスはシリアルラインを通ってバイトとしてコンピューター送られます。したがって、1分間に受け取られたバイトの数を数えれば、CPM値を得ることが出来ます。送られるバイトの値はどうでもよく、単にバイト数を数えます。」また、シリアルポートについて次のようにセットせよとの記述があります。Pythonプログラムを見てみましょう。たしかに次のような記述があります。始めにシリアルポートを開く。試験プログラム上を参考に、試しに次のような試験プログラムを作ります。ライブラリの使い方はこちらにあります。newCountsRaspberryPiのUSBポートにUSBアダプタ、GM-10をつなぎ込み、この試験プログラム(ファイル名はserialtest.py)を実行してみます。表示された後、たくさんの’0’と、時々’1’が出力されるでしょう。(無限ループですから停止するにはCtrl+C。)この’1’はガイガーミューラ管に放電(event)があったことを示しており、この数を1分間数えると、CPM値となります。PythonによるGM-10読み取りプログラム基本的なことは上記の通りですが、1分ごとに繰り返しファイル書き込みをする必要があります。そのためにPythonのthreading処理により、マルチプロセス処理を行うこととしました。threadingとは複数のプロセス(thread)を同時に実行して並列に処理を進めることで、美しいプログラムが書けそうなので、挑戦してみました。シリアルポートを監視し変化をよみとるThreadを常時まわしておき、一方メインプログラムでは1分に1度、ファイルに出力するよう構成することとします。GM-10reading.pyを説明します。GPIOはLEDのために使います。GPIO17にLEDを配線しているものとします。上の実験のとおりGM-10をつなぎ込みます。readGM10()というなまえのThreadを定義、常にシリアルポートを見に行き、読み取ったバイト数を数えています。メインプログラムではreadGM10を生成し、デーモンスレッドとして起動します。して、その値を時刻と共にファイル出力します。14のようなレコードが1分ごとに出力されます。これはオリジナルのRaSoftが出力するファイルと同じ形式です。ほかのコンピュータ(メインのPC)が、随時読み出しますので、毎回openし、追記し、closeしています。V振幅とされており、またGM-10の規格をみると、9〜12Vで使うようにとされています。USBシリアル変換器では、このような電圧は出ていません。RaspberryPiに5Vの通常のACアダプタからの電源を加え、実測してみると4Vも出ていません。すくなくも5Vはほしいところで、実験してみるとガイガーミューラ管に充分な電圧が加わっていないようで、CPM値が低くなってしまいました。そのため、専用の独立DC電源を用意し、USB出力端で5Vとなるようにしました。基板タイプのスイッチング電源の5V・2A・イータ電機BNS05SA-U1で、出力電圧が10%可変です。ケースはタカチ電機TW13-5-13古い基板を流用しているためよけいなICソケットがついている。左からインターフェーサ、USB-RSAQ2USBシリアル変換器、GM-10ガイガーカウンタホストのWindowsPCでの処理は、5分に一度、GNUPLOTがRaspberryPiのファイルを読み取り、描画し、アップロードしています。この結果はこちらです。