SparkFunのSEN-11345をcpm単位で空間線量を返すように修正してみる。ついでに、OSXでmakeする環境整備も。

電子工作ではおなじみのSparkFunが出しているガイガーカウンター、SEN-11345。すごく気になる…。

コンパクトなガイガーミュラー菅には、LND712を使用している上、ArduinoでおなじみのATMega328を搭載しているんですよね。以下のArduino Pro Miniと動作周波数も同じです。

というか、このArduino Pro Mini、以前庭先の自動水やり機を作った時の余りが手元にあるんですよね。

でもって、Geiger Counter用コードがGithubにpushされていると。

ハード構成は色々違うはずですが、このGeiger Counter用コードがArduino Pro Miniで動くのか試してみたくなりました。

OSXでMakeする

Arduinoのソフトウェアは基本的にArduino IDEで開発するので、Geiger Counterのように素でMakeする環境はちょっとハードル上がります。

個人的には、マウスでボタン押してソフトウェア書き込みするより、全ての作業がコマンドラインで完結している方がやりやすい。

でもOSXのターミナルでMakeするには、色々と下準備が必要です。

  1. Arduino IDEをインストールする
  2. avrコマンドへのパスを通す
  3. Arduino Pro Mini上で動作させるためのMakefile修正
  4. cpm単位で値を返すようにGeiger Counterのソースコードを修正する

これで、OSX上でMakeできる上、make programコマンドでボードへのソフトウェア書き込みもできてしまいます。

以下、詳細です。

Arduino IDEをインストールする

リンク先からインストーラをダウンロードして、インストールしてください。

avrコマンドへのパスを通す

Makeでavr-gccやavrdudeコマンドが必要になるので、PATHが通ってないといけません。

以下のようにします。

永続的にパス通しておきたいなら.bash_profile辺りに追記しておきます。

パスがちゃんと通れば、以下のようにavrdudeコマンドが実行できるはず。

Arduino Pro Mini上で動作させるためのMakefile修正

以下のようにします。

AVRDUDE_PORTは使用するPro Miniによって変わるので、適宜変更してください。

AVRDUDE_PROGRAMMERはavrispでも正常に書き込みできました。

ちなみに、このavrdude(AVR Downloader/UploaDEr)コマンド、詳細なオプション情報はリンク先のdownload pageからマニュアルがダウンロードできるので、もっと詳細が知りたくなったらこちらを参照してください。

cpm単位で値を返すようにGeiger Counterのソースコードを修正する

Githubに公開されているGeiger Counter用コードは以下のように、INT0割り込み回数を1秒毎にprintfするようになっています。

ガイガーミュラー菅に放射線が通ると割り込み発生、ってことなんでしょうね。

さらにTimer1のTCNT1設定方法をCOUNTERS ON THE ATmega168/328で見てみると、コードのコメントにある通り、1クロック毎にデクリメントしてちょうど1秒になるように設定してやると、1秒タイマーの出来上がり。

Timer/Counter Register (stores the counter value) Can be accessed as TCNT1.
The Control Logic unit in counter1 has the ability to increment, decrement or clear(reset) the TCNT1 register.

これをcpm単位で返せるように修正すると、以下のようになります。…間違ってないよね?

可能なかぎりISR(割り込み処理)内の処理は軽く、単純な四則演算だけで処理して、少なくとも返すcpmの値を計測する時間に差が発生しないようにしたつもり。

これでmakeしたコードをArduino Pro Miniに書き込んで、

screenコマンドでArduino Pro Miniが返す値を表示してやると、

こうなります。

まぁ、ガイガーミュラー菅がないので、適当な変な値が表示されるだけですが。

結局何がしたいのか?

SEN-11345を使って定点観測所を作りたいんですよね。

行政が作る定点観測所は、どうも信用ならない。あるがままの値を計測するのではなく、計測所周りを綺麗に掃除して綺麗な値を公表したいだけに思えるので。

こんな感じでその日その瞬間の空間線量値をつぶやいたり、

地点毎の線量をグラフ化して公開したりしたいですね。

Safecast APIでの線量値のPost方法もわかったので、iOSアプリでのマップ情報も参照できるようになる。…予定です。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする