ArduinoではじめるXBee M2Mネットワーキング

XBee ZigBee
ワイヤレス放射線量測定ガイガーカウンターの製作2
〜 Arduino子機版 Stalking Geiger 〜

by ボクにもわかる地上デジタル

XBeeメインメニューへ戻る
地デジトップへ戻る

XBee ZigBee ワイヤレス放射線量測定ガイガーカウンター
XBee ZigBee ワイヤレス放射線量測定ガイガーカウンターStalking Geiger子機の製作例

このページについて

 このページでは、RADIATION WATCH 組込版ポケットガイガーType5を使った実用的なワイヤレス放射線量測定ガイガーカウンター(Geiger Counter)の製作方法を説明しています。より簡単で基本的な製作例については前作の「XBee ガイガーカウンター」を参照ください。前作のページではXBee子機側に外部マイコンを接続していなかったため、放射線パルスが発生するたびにデータ送信が行われていました。
 本ページではArduino互換機であるseeed studuio製のSeeeduino Stalker v2.3を使用し、太陽電池、リチウムポリマー電池、防水ケースを組み合わせることで屋外で持続的にデータを送信し続ける子機を製作します。主に下図のような長期間にわたってのログ測定や放射線量の増大を監視したりすることが目的です。
 なお、機器動作の信頼性や測定結果の信頼性について当方は一切の責任を負いませんので、十分にご注意ください。


半年間の測定結果の一例
高値の3か所は電圧低下による誤作動が原因。低値の1か所は電圧低下による非測定期間が原因

はじめに、前作のページをご確認ください

 XBeeとポケットガイガー Type 5を使ったワイヤレスガイガーカウンタの基本的な情報を前作のページ「XBee ガイガーカウンター」に掲載していますので、製作前にはそちらもご確認ください。

Seeeduino Stalker

 seeed studuioはホビー向けロボット用の電子部品を取り扱っている中国メーカーです。Seeeduinoは同社のArduino互換機です。Seeeduino StalkerはXBeeソケット、バッテリ充電機能、RTC(リアルタイムクロック)、SDカードを装備したロガー専用のArduino機です。Stalkerという名前に抵抗感はありますが、健全な使い方をしている限りは気にしないでよいでしょう。

seeed studuio製のSeeeduino Stalker v2.3
seeed studuio製のSeeeduino Stalker v2.3

 さて、このStalker Ver2.3ですが製造元のサイトではVer2.1の資料しか充実しておらず、Ver2.3については回路図をもとに解析する必要があります。ボクが気づいた変更点は以下の通りです。同社の情報サイトにもそのうちに情報が開示されると思います。

Seeeduino Stalker v2.3の改良点
部分 内容
充電IC ステータス(CHとOK)のArduinoへの接続が無くなりました。
充電IC 充電電圧とチャージ状態がADCへ接続されるようになりました。
LED ポートがSDとCLKと同じポートになりました。SDへのアクセスが分かります。

 まず、バッテリの電圧測定機能を確認したところ、ADCの設定を標準の電源電圧から内部リファレンス電圧に設定しなければならないことに気づきました。ただしこの場合はチャージ状態が読みにくくなると思います。またバッテリ電圧を得るための変換式も自力で確認しなければなりませんでした。実験的に確認したところ、「(Value-500)/160+3.2」で電圧が求めれそうです(10ビットで入力した場合の式です)。バッテリ電圧が入力されているArduinoのポートはanalog pin 7です。Arduinoに出ていない端子ですが、正しく読むことが出来ました。(ピンに関しては製造元の情報ページに記載あり)

バッテリ電圧測定
電池電圧 ADC値(基準電圧=初期値) ADC値(基準電圧=IC内部) (Value-500)/160+3.2
4.2 V 214 660 660
4.0 V 204 630 628
3.8 V 192 592 596
3.6 V 187 561 564
3.4 V 188 530 532
3.2 V 189 500 500
3.0 V 190 468 468

Stalker v2.3のジャンパー

 今回はStalker v2.3のジャンパー切り替えのうち2か所を変更します。このほかにもSDやLEDをとめて省電力化を図る方法も考えられますが、今回は無視します。
 変更点の一つ目は、RTCのINIT端子をArduinoに入力するジャンパーです。このジャンパーにハンダを少し盛って、ショートにします。次に、XBeeからArduinoをリセットするジャンパーをオープンにします。カッターナイフでジャンパーの中央の極細線を削り取ればオープンになります。誤って信号パターンまで剥がれないように注意してください。


POCKET Geiger Type 5を組み立てる

部品リスト

 今回の製作に必要な部品リストです。Seeeduino Stalkerのバージョンは2.3を使用しました。放射線カウンタの機能としては他のバージョンでも問題ないと思います。XBee USBエクスプローラは Seeeduino Stalker Waterproof Solar Kitに付属しています。この他にハンダや配線材料、絶縁テープ、両面テープなどが必要です。

Stalking Geigerの製作に必要な部品リスト
親子 部品名 単価 数量 備考
子機 Seeeduino Stalker
Waterproof Solar Kit
11,319円 1 Arduino互換機・太陽電池等一式
右記のリンクから購入可能―→
子機 ポケットガイガー Type 5 6,450円 1 www.radiation-watch.org
子機 XBee ZB (S2) モジュール 1,700円 1 Wireアンテナタイプを推奨
子機 16ホールユニバーサル基板 30円 3 連結しているもの
子機 ピンヘッダ1×13ピン 15円 1 長いものを切断して使用
子機 MOS FET IRLML6402 20円 1 10個単位で販売されている
子機 抵抗 1kΩ 10円 1 100個単位なら1本1円程度
親機 パソコン - 1 開発用/ATコマンド解析ツール用
親機 XBee USBエクスプローラ 1,280円 1 開発用/ATコマンド解析ツール用
親機 XBee ZB (S2/S2B) PROモジュール 2,800円 1 親機XBeeモジュール

ポケットガイガーをArduinoに接続する。

 ここでは下図のようなポケットガイガーをArduinoに接続するための変換基板を作成します。左に1本だけ出ている線はXBeeのSLEEP_RQ用です。中央下部の基板はArduinoのアナログ入力(J3)と、電源(J2)側に接続する変換基板、右がポケットガイガーType 5です。オーディオジャックはケースに入れる時に邪魔だったので取り外しています。(外さなくても入りますが、外した方が収まりが良好です)


ポケットガイガーをArduinoに接続するのに必要な基板

 ここで、ポケットガイガーをArduinoに接続するための変換基板を作成します。電源のスイッチのためのMOS FETが追加になります。下図は使用する部品です。ピンヘッダ13ピンと、小型基板(16ホールユニバーサル基板)、抵抗(1kΩ)、MOS FET(IRLML6402)の4点です。全て秋月電子から購入しました。


ポケットガイガーをArduinoに接続するのに必要な部品

 ハンダ付けした様子です。FETは少しだけ左に寄せるか左に傾けるとハンダを付けやすいです。見た目は傾けない方が良いです。


ハンダ付けした様子

 裏面の配線は下図のようになります。右上の6か所のリード線のハンダ付け部はポケットガイガーとXBeeに接続するための接続部です。基板のパターン面側から見て(写真のとおりの方向から見て)左側から@電源+V(赤)、AGND(橙)、B放射線パルスSIG(黄)、CGND(緑)、Dノイズ検出信号NS(青)、EXBeeへのSLEEP_RQ(緑)です。
 AとCのGNDは表面にジャンパー線で配線しています。両面スルーホール基板なのでBのSIG信号とGNDがショートしないように注意が必要です。表面の抵抗の部分をGNDが交差する場所も若干の注意が必要です。


裏面の配線の様子

 写真ではケーブルが偏っていますが、写真の右上の6箇所に1列に並んでハンダ付けしています。下表は上の写真の下部にあるArduino接続用の使用ピンのリストです。

Arduino使用ピン
#define ポート 番号 役割 ポケットガイガ/XBeeへの接続
PIN_LED Digital 13 13 動作確認用LED
PIN_GEIGER Analog 0 14 ポケガの電源制御(L=ON) FETを経由してポケガ@電源+Vへ
PIN_PULSE Analog 1 15 ポケガ放射線パルス信号 ポケガB放射線パルスSIG
PIN_NOISE Analog 2 16 ポケガノイズ検出信号 ポケガDノイズ検出信号NS
PIN_XB_SLEEP Analog 3 17 XBeeのスリープ端子 SLEEP_RQ(XBee Pin 9)へ

 XBeeのスリープ端子SLEEP_RQに接続するジャンパー線はXBee側の端子に直接、ハンダ付けしてもかまいませんが、ピンソケットを使用すれば、後に他の用途に転用しやすくなります。

Arduino XBee 子機を製作する。(END DEVICE API)

 Seeeduino Stalker にXBeeを接続する前に、XBeeモジュールを「ZIGBEE END DEVICE API」に設定しておきます。必ず末尾が「API」のものを使用します。設定はデフォルトにしておきます。
 Arduino IDEへのXBeeライブラリのインストールを未実施の場合はXBee用ライブラリ(xbee_arduino.zip)をダウンロードし、ZIP圧縮されたファイルを展開して、Arduino IDEの「libraries」フォルダにコピーしておきます。
 また、RTC用のライブラリをseed studioからダウンロードして、同様にのArduino IDEの「libraries」フォルダにコピーします。RTCの時刻を設定したい場合はArduino IDEの「ファイル」→「スケッチの例」→「DS3231」→「Adjust」のサンプルソース日時を設定して書き込めば設定できます。


 次にバッテリを防水ケースに収容します。バッテリは下側ケースの底に両面テープなどで張り付けます。バッテリの背面はドリルなどで開口しておくと爆発対策になります(詳しくは本ページの最後を参照)。
 RTC用の電池も取り付けます。また基板のリード線などがバッテリに接触ないようにバッテリの中央にクッションを貼っています。ネジのスペーサ(4個)は、この段階でケースに接着しておくと良いでしょう。バッテリのコードの方向とスペーサの取り付け位置の関係は下の写真に合わせます。(ネジ穴6か所のうち2か所は使用しないので注意が必要です。)


バッテリーを収容した様子

 いよいよArduino基板とポケットガイガの収容です。ポケットガイガは図の位置が、一番、収まりが良いと思います。こちらも両面テープなどで張り付けます。出来ればポリイミドテープなどで絶縁保護しておくと良いでしょう。なお、Arduino基板とポケットガイガー基板とが平行になると放射線が遮られたりノイズの影響を受けやすくなるかもしれません。図のように垂直に立っている方が影響を受けにくいと思います。RTCが近いので、もし影響があるようなら反対側でも良いでしょう。


ポケットガイガーを収容した様子

 Arduinoにソフトを書き込みます。ポケットガイガー用 Arduino XBee 子機のスケッチを次節「スケッチ等ソフトウェアダウンロード」からダウンロードしてArduino IDEで開いてください。これをArduinoに書き込めば動作します。
 Arduino子機が起動すると自動的に親機へのペアリングを開始します。ペアリング中はLEDが高速に点滅します。測定中は点滅が少し遅くなります。親機はXBeeを「ZIGBEE COORDINATOR API」に設定してPC用のXBeeライブラリの「tools」フォルダ内にあるATコマンド解析ツール「xbee_test.c」を実行しておけば良いでしょう。設定は「SP値」を20秒以上にしておく必要があります。X-CTUで「SP値」を「07D0」以上に設定するもしくは、「xbee_test.c」の動作中に「ATSP07D0」をキーボードから入力して「Enter」を押して設定します。設定をフラッシュに書き込むには設定後に「ATWR」を入力します。
 親機の「xbee_test.c」は起動しておくだけで、子機XBeeからの受信があるたびにメッセージを表示します。子機がペアリングされた時には「IDNT」のメッセージを表示し、以降、子機の放射線測定が正しく動作していれば「UART」のメッセージを表示します。


xbee_test.cの動作の様子

 送られてきた情報は「data」の部分に記されている5つの数字です。最初の「132230」は時刻です。13時22分30秒を表しています。次の「001」は今回の測定の放射線パルス数です。その次の「006」が放射線量で、1/100したものが「uSv/h」になります。その次の「346」は電池電圧で、こちらも1/100にします。3.46Vは電池が殆ど無くなった状態です。最後の「222」は温度で、1/10します。この例では22.2℃ということになります。

放射線測定用データフォーマット
項目名 変数名 桁数 変換 単位 備考
時刻 now 6 hhmmss RTCの初期設定が必要
放射線パルス数 cpm 3 1/100 測定の累計(スリープ時にリセット)
放射線量 uSvBuff 3 1/100 uSv/h 時間が経過するほど精度が上がる
電池電圧 battery 3 1/100 V   
温度 temp 3 1/10 発熱で気温よりも高くなります

スケッチ等ソフトウェアダウンロード

ポケットガイガー用のスケッチ・ソースコード
名前 内容
stalking_geiger.zip Arduino XBee 親機用・子機用のスケッチ
xbee_test.c パソコン XBee 親機 用 ATコマンド解析ツール(データ受信用)

 上表からスケッチのダウンロードが可能です。ZIPファイル内に「stalking_geiger」フォルダと「stalking_geiger2」フォルダがあり、「2」の方が新しいバージョンで、2つのスケッチが含まれています。「example62_geiger」はガイガーセンサ側(Seeeduino Stalker用)でXBee ZBモジュールはEnd Deviceとして使用します。「example63_log」はCoordinatorのXBee ZBを搭載した親機用です。

   stalking_geiger(旧版) …………………………… ガイガーセンサ(Seeeduino Stalker)用

   stalking_geiger2 ……+…… example62_geiger ガイガーセンサ(Seeeduino Stalker)用
              |
              +…… example63_log   データ収集親機(Arduino+Shield)用

 データ収集親機用のexample63_logにはArduino Wireless SD Shieldおよびmicro SDカードが必要です。


完成例

暑い夏を乗り切るために

 本機の内部に搭載したリチウムポリマー電池は40℃以下の環境で使用する必要があります。しかし、夏になると製作品の内部温度が45℃を超える可能性が高まります。朝や夕方にしか日光が当たらない場所や間接光で発電させるなど、工夫を行い40℃以下を維持できるようにします。

 あるいは本機の裏側に放熱板を設けて、温度を下げる方法もあります。以下は、本体の裏面とリチウムポリマー電池にアルミ板を取り付けて、内部温度上昇の影響を受けにくする対策方法の一例について説明します。

 使用するアルミ板は0.5mm厚程度のものにします。通常の金切ばさみで簡単に切断することが出来るからです。また、幅100mm程度のアルミ板が使いやすいです。あまり幅が広いと切断時にアルミが曲がりくねってしまいます。なお、切断時は手袋をするなど怪我に注意します。
 必要なアルミ板のサイズは100mm×65mmと70mm×35mmの2枚です。


アルミ板

 アルミ板をカットしたら必ず切断面のヤスリがけと角を丸めておきます。アルミ板の切断面と角は非常に鋭いので、怪我すると深くまで切ってしまい治りにも時間がかかります。


100mm×65mmに切断し、ヤスリがけし、角を丸めたたアルミ板

 100mm×65mmのアルミ板は両面テープでケースの背面の外側全体に貼り付けます。また、70mm×35mmのアルミ板はケース内面に外部アルミ板と平行するように貼り付け、両面の2枚のアルミ板をビスで固定します。


ケース背面に取り付けた100mm×65mmの外側アルミ板


ケース内面に取り付けた70mm×35mmの内側アルミ板

 ケース内面のアルミ板にリチウムポリマーを両面テープで固定します。また、基板との距離がアルミ板の厚みだけ接近しますので、両面テープが剥がれてきた場合やバッテリーが膨らんだ場合を想定し、クッションを取り付けて置いたり、基板側のリード線の飛び出しを切断し、切断部には耐熱性の絶縁保護テープ(ポリイミドテープ)を貼っておきます。


70mm×35mmの内側アルミ板にリチウムポリマー電池を接着


リード線の先端を切断し、ポリイミドテープで保護

メイン基板、XBee、ポケットガイガー、変換基板、そしてシリカゲルをケースに入れる


断熱用に発泡樹脂を詰め込む

 以上が最も基本となる放熱対策の説明です。この対策に加えて、防水タイプのペルチェ素子とヒートシンクを外側アルミ板に貼り、内部温度が40℃以上になると強制冷却する方法も考えられます。

 さらに太陽電池をケース外に取り付けることで内部温度の上昇を大幅に改善することも可能と思います。しかし、付属の太陽電池は防水タイプではありませんので、少し、手間がかかるでしょう。また、表面はガラスでは無くプラスチック製です。ちょっとした衝撃や曲がりなどでシリコンが割れてしまう懸念もあります。ケースの外側に接着しようとすると、背面の出力端子や樹脂モールドが邪魔になります。この分をパネルに曲がりの力などがかからないように浮かすには補強版が必要です。このような手間がかかることから、ボクは今のところ防水ケースの中に太陽電池パネルを取り付けて使用しています。
 しかし、地域などによっては冬に発電量が足りない場合があるかもしれません。そういった場合は、太陽電池をケース外に取り付けることで、ケースの透過損失20〜30%程度を向上させることも出来るでしょう。

注意事項(製作される場合は必読)

 掲載内容は全て自己責任でご利用ください。いかなる事故に関しても当方は一切の責任を負いません。注意事項を厳守していたにも関わらず、重大な事故が発生した場合も同様です。

リチウムポリマー電池の爆発対策について

 リチウムポリマー電池をSeeeduino Stalker以外の回路で充電したり、他のリチウムイオン電池やリチウムポリマー電池をSeeeduino Stalkerで充電したりすることは極めて危険です。必ずSeeeduino StalkerのUSB5Vから5Vを供給して充電する、もしくは明るい場所で太陽電池を使用して充電します。充電中はLED「CH」が点灯します。
 また電池の温度が45℃を超えた状態での充電も、大変、危険です。炎天下などに放置すると急速に内部温度が上昇することがあります。必ず温度が40℃以下に保てるよう、設置する場所には十分に注意してください、また実験後は涼しい場所で保管してください。
 万が一、内部温度が45℃を超えてしまった場合は爆発する危険性が高まっています。爆発に対して十分な安全を確保したうえで速やかに燃えるものが周囲にない涼しい場所にSeeeduino Stalkerを退避します。温度が下がってからも30分以上は近づかないように注意します。
 Waterproof Solar Kitに付属のケースは密閉構造となっており、爆発した時に破損した筐体が飛び散る恐れがあります。
 万が一、電池が爆発、炎上した場合に備えて、バッテリ装着部の近くをドリルで開口しておきます。水の侵入が気になる場合は開口部をビニールテープなどで防水しておきます。また、周囲には燃えやすいものを置かないように注意します。バッテリは小型にもかかわらず非常に激しい炎上が継続する場合があります。紙屑などはもちろんのこと、木材やプラスチックなどに引火しますので、コンクリート、鉄などの金属、砂利などの燃えにくいものの上に置いてください。

測定について

 本測定における永続動作や測定精度などの信頼性については一切の補償はありませんので、人命や健康障害に関わるような用途には使用できません。


XBee ガイガーカウンター

XBeeメインメニューへ戻る

地デジトップへ戻る