*

CentOSでストロベリーリナックスUSBガイガーカウンタキット

公開日: : プログラミング

ストロベリーリナックス社のUSBガイガーカウンタキット(以下文中ではUSBガイガー)をCentOSで利用できるようにしてみたので記録。なお、プログラミングは初心者です。よろしければ間違い、よりスマートな方法をご教示下さい。

概要

単品でサーバ機に接続すべきか、Arduinoを挟むか(少し)検討しました。

直結するメリット:

  1. GM管のパルスをカウントするアルゴリズムが他のユーザと共通であるため全国のユーザと比較することが可能。
  2. 追加投資が不要。

直結するデメリット:

  1. USB-GEIGERでモニタリングポストを作ろう3で解析されているように「連続稼動は「約194日」で、放射線カウントは同様に、最大「約43万」まで計測可能」という制限を受けてしまう。
  2. 既存のドライバ類がないので自力でなんとかしなくてはいけない。

下記のリンクを参考にしたところ、ドライバじゃなくてもアクセス可能であり、また、同類のボード用のツール・ドライバは存在することがわかりました。そこで、そのソースを勝手にいじくってUSBガイガーを利用しようと思い立ちました。

秋月Arduinoをいくつももってるのでメリット2)は無関係。といっても、電源が2つ必要なのは面倒だなーと思ってましたが、Arduinoからパルス・電源・GNDと3本引っ張ればよいのでありました(参考リンク9)。デメリット1は大きいのですが、メリット1のことも考えると・・・。そんなわけで、とりあえずソースいじくって数字をとれるところまでできましたので記録しておきます。でも今後Arduino経由に移行するかも。

参考

詳細な情報提供に感謝です。

  1. USB-GEIGERでモニタリングポストを作ろう3 – ITのある生活
  2. USB-RH で遊ぶ – daily dayflower
  3. USBRH on Linux
  4. USBRH driver for Linux
  5. Using USBRH on *BSD
  6. USBRH+Cactiで室温モニタリング(1) – # cat /var/log/stereocat | tail -n3
  7. libusbについて – Linux工作室
  8. ねこひげめも|Linux(CentOS)でUSBウェザーボードを使って遊ぶ
  9. ガイガーカウンターのカウント数をTwitterに投稿するアプリを作る – なんか作る

接続

まず、キットを組み立てます。GM管の扱いに注意すれば、半田付けするだけです。圧電ブザー音のオンオフはUSBガイガーの再起動で初期化されるごとにオンになるため、ブザーにはセロハンテープかなんかでフタをしておくとよいかもしれません。

USBガイガーをサーバに接続してlsusbするとずらずらっとUSB機器が表示されますが、「Bus 007 Device 002: ID 1774:1002」とID 1774:1002と出る行が当USBガイガー機です。BusとDeviceは環境によって異なります。

上記のBusとDeviceの数字を用いてlsusb -D /proc/bus/usb/007/002とすると、詳細情報が表示されます。Using USBRH on *BSDの一番下の資料のデータと突き合わせてみたところ、USBガイガーとUSBRHは接続に関しては同一と判断し、USBRH用ツールを改造することにしました。なお、ドライバーのソースも拝見しましたが、自分の実力では改造は到底無理と判断。

ソースいじりにとりかかる前にUSBデバイス接続後の振る舞いを予め設定しておきます。USB-RH で遊ぶ – daily dayflowerより、udevルールを設定。

ソースの改変

USBRH on LinuxよりUSBRHのソースを頂きます。これならなんとなく自分でも分かりそうです(USB絡みの難しいところは定番記述として無視するとして)。

最初にUSB-RH で遊ぶ – daily dayflowerのパッチを当てました。

いよいよ、USBガイガー用にソースを修正します。

計算にべき乗を使うのでmath.hをincludeしないといけないようです。VENDER IDとPRODUCT IDは上記、lsusbより得た「Bus 007 Device 002: ID 1774:1002」を使用。PRODUCT IDがひとつ違うだけです。

その他、USBRHとなっているところはUSBGEIGERに一括置換。カウントとタイマーをカンマ区切りで出力するオプションCを追加しました。

さて、USBデバイスから返された数値は変数buffの中にUSB-GEIGERでモニタリングポストを作ろう3 – ITのある生活での解析にあるように「91cc0100f34c07」と7バイトで入っています。

buffから数字を取り出すために以下のとおり、関数を作成。

あとは、出力内容を上記関数にいれかえ、printfで整形。

math.hを使うとコンパイルでエラーが出るのでMakefileの記述-lmオプション追加。無事コンパイル完了。

usbgeiger -cとすると「118037,479109」のように返すことができるようになりました。crontabで/usr/local/bin/usbgeiger -c >>/var/www/html/data/count.txtとして、5分ごとのログを残しています(このサーバではないです)。

これをcactiでグラフ化しました。PHPでログファイルを開き、5分間で増加したカウントから導いたCPMと変換係数を120とした参考uSvを表示するようにしました。

カウント、タイマー、それぞれ最終行とその前の行との差をもって算出していますが、再起動後は最終行とその前の行の数字のつながりがおかしくなると思うのでそこだけ条件分岐させています。

最後にusbrh-0.05.tar.gz[25-Mar-2008]との差分も載せておきます。
ベタベタコードですいません。

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

no image
Inno Setupを利用して複数PCに同様の環境を構築する

ブラウザベースの業務の効率化のためにブックマークレットを作成したのです

no image
sacd_extractをOSXでmakeする

sacd_extractは、SACD-ISOをDSFやDIFFに展開す

サーバのPositive SSL証明書更新(2015/05版)

サーバの証明書を更新 今年もやり方を忘れていたので再録。

ドイツからMAXI-COSI PebbleとEasy Base2他を個人輸入したときの配送記録

MAXI-COSI Pebbleは国内・海外の価格差がそれほどないので

eBayのGlobal Shipping Programでの配送記録

やっぱり遅いeBayのGlobal Shipping Program

→もっと見る

    • None Found
  • Visits today: 195
PAGE TOP ↑