- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2022-06-08T02:04:45+09:00","","")
#author("2022-06-08T23:18:50+09:00","","")
その2:ガイガーカウンタにZigBeeを接続する(2)
■GM-01A
*GM-01A [#lcef69d2]
Open Geiger ProjectさんのGM-01Aを1台入手できましたので、ZigBee化にチャンレジしてみました。GM-01AはGM管にわりと感度が良いと定番のSMB-20を使っているオープンソースなガイガーカウンタです。今回はこれにUSBタイプのZigbee機器「78K0R UD Stick」を接続してみます。
[[Open Geiger Project>https://opengeiger.com/]]さんのGM-01Aを1台入手できましたので、ZigBee化にチャンレジしてみました。GM-01AはGM管にわりと感度が良いと定番のSMB-20を使っているオープンソースなガイガーカウンタです。今回はこれにUSBタイプのZigbee機器「78K0R UD Stick」を接続してみます。
GM01
&ref(tumblr_low2wkagT71ql56v1o1_500.jpg,nolink);
■ZigBeeデバイスとのIF
*ZigBeeデバイスとのIF [#r1a25b80]
ZigBee機器とどんなインターフェイスで接続するかがいつも問題になるのですが、GM-01Aはマイコン(ATMEGA328P)からUARTのTRXが出てるようなので、今回はこれが活用できそうです。
また公開されているソースコードを見ますと、検出した放射線のカウント方法としては、シンプルにGM管の入力をMCUの割り込みで拾ってました。そこでソースコードを数行だけ修正させてもらい、割り込みハンドラの中にPORTD1(TXD)をHI-LO操作するコードを追加して外部機器へのトリガーにしました。
■WinAVR
*WinAVR [#w345a63a]
GM-01AのビルドにはWinAVRを使ってみました。いろいろ試行錯誤しましたが、分かってみると簡単で、手順は以下の通りです
WinAVRをこの辺りからダウンロード してインストール
WinAVRを[[この辺り>https://sourceforge.net/projects/winavr/files/]]からダウンロードしてインストール
スタートメニューから「Programmers Notepad」を起動
「File」→「New」→「Project」と指定して 適当な場所にプロジェクトを作成
最新のopengeiger_firmwareをダウンロード、展開して、「app」ディレクトリをWinAVRのワークスペースへそのままドロップ
(これが重要)app\rev4にあるMakefileをWinAVRのワークスペースに追加する。そしてMakefileを開いて「AVRTOOLSPATH:=/usr/local/CrossPack-AVR/bin/」の指定パスを削除 して「AVRTOOLSPATH:=」に変更。
MakefileをWinAVRのエディタで開いた状態でメニューからMake allを選択
これでビルドできるようになると思います。ビルドしたhexファイルの書き込み方はこちらの書き込み手順を参照してください。
これでビルドできるようになると思います。ビルドしたhexファイルの書き込み方はこちらの[[書き込み手順>https://code.google.com/archive/p/opengeiger/wikis/FirmwareUpdate.wiki/]]を参照してください。
■78K0R UD Stick
「78K0R UD Stick」 は、内部にIEEE802.15.4 RF ICと16bit MCUを搭載した2chip型のZigBee対応無線デバイスです。個人的にこのデバイスが大変気に入っているので、今回はこれをちょっと宣伝させてもらいます。
*78K0R UD Stick [#x8d193c8]
UDStick
[[「78K0R UD Stick」>https://www.tessera.co.jp/78k0rudstick.html/]] は、内部にIEEE802.15.4 RF ICと16bit MCUを搭載した2chip型のZigBee対応無線デバイスです。個人的にこのデバイスが大変気に入っているので、今回はこれをちょっと宣伝させてもらいます。
&ref(78k0rudstich.jpg,nolink);
一般に自作系やフィジカルコンピューティングで無線通信というとXBeeがポピュラーですね。そして XBeeとの大きな違いは、ホストが必要ないということです。XBeeはモジュールなので、一般的にはこれを無線機器として駆動する外部デバイス(ホスト)が必要ですが、78K0R UD Stickは内蔵マイコンにファームウェアを書き込んで動かしますので、1台のスタンドアロンなコンピュータと同等です。ですので、イメージとして
「XBee」 = 「78K0R UD Stick」
という図式は正確ではなく、しいていうなら
「XBee + Arduino シールド(Fioとか)」=「78K0R UD Stick」
が正しいです。そう考えると78K0R UD Stickって小さいし単三電池1本で動くしプラスチック筐体に入っているしで、中々洗練されてると思いませんか。
USBスティックタイプのZigBeeデバイスも世の中に沢山ありますが
USB以外に、汎用、A/D等のI/Oを備えている
内蔵ファームウェアの開発が可能
パソコンのUSBから抜いても単体で動く
この条件を満たしている製品が実は中々ないので、大変重宝しているのです。
■動作の確認
*動作の確認 [#w4d8a7d4]
改造したファームを書き込んでTXポートをオシロで見ると、GM-01A本体の放射線検出(ビープ音)と同時にパルスが観測できるので、改造はちゃんと動作してそうです。しばらくZigBeeデバイスにCPMをカウントさせてみましたが、GM-01A本体のCPM表示とくい違ってないことも確認できました。
ついでにAmazonで購入したキャプテンスタッグマントルM-7911を近づけてみると、すごい勢いでビープ音が鳴り出してちょっとビビりました。レベル的には700-800CPM(3uSv/h)程度ですが、この程度なら取りこぼしもなさそうです。
ついでにAmazonで購入した[[キャプテンスタッグマントルM-7911>https://www.amazon.co.jp/%E3%82%AD%E3%83%A3%E3%83%97%E3%83%86%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%83%E3%82%B0-CAPTAIN-STAG-%E3%83%9E%E3%83%B3%E3%83%88%E3%83%AB-M-7911/dp/B000AR4W0C/]]を近づけてみると、すごい勢いでビープ音が鳴り出してちょっとビビりました。レベル的には700-800CPM(3uSv/h)程度ですが、この程度なら取りこぼしもなさそうです。
gm01a-zigbee
&ref(og_zig.jpg,nolink);
電圧は3.3Vなのでレベル変換しなくて済んでいます。
■コーディネータ
*コーディネータ [#sd284745]
78K0R UD StickはパソコンにUSB接続すると、シリアル通信(COMポート)でパソコンとデータをやり取りできます。無線で飛ばした線量情報を記録するには、78K0R UD Stickをもう1個用意してコーディネータ設定にしてパソコンにつないでおくこの方法が一番早いです。しかし「パソコン立ち上げっぱなし」というのは、あまりかっこよくありません。そこでTK-850/JH3E+UDを使ってみました。
850JH3+UD
&ref(850ud.jpg,nolink);
(写真では2台ならんでいます)
TK-850/JH3E+UDは、イーサネットを備えた32bit MCU搭載のZigBeeデバイスです。ファームウェアでZigbeeとTCP/IPをゲートウェイすることができます(この辺りはプログラムをがっつり作りこむ必要がありますが・・)
■Pachube
*Pachube [#h69c0a22]
というわけで記録を開始しました。
Graph
https://pachube.com/feeds/29765の3番が今回のデータストリームになります。
(ストリームは保守や開発のため予告なくしばらく停止することもあります。また異常に高い値や「0」が突発的に記録されることもありますが、開発時のテストデータの可能性が高いので、その分割り引いて観察してください。)
あとはGM01-A本体と78K0R UD Stickをすっきり格納できるいい感じのケースを見つけて、屋外固定測定用の機器に仕立てたいと考えています。
■Androir用ビューワ
*Androir用ビューワ [#ze40b708]
AndroidからいつでもPachubeのストリームがチェックできる簡単なアプリ「Pachube Viewer」を公開しています。
その他の記事はこちらからご覧頂けます。