Monthly FB NEWS 月刊FBニュース 月刊FBニュースはアマチュア無線の電子WEBマガジン。ベテランから入門まで、楽しく役立つ情報が満載です。

My Project

第17回 【手作り無線データ通信】ワイヤレス温度モニターシステムの構築【IoT】

JP3DOI 正木潤一

この記事が皆さんの目に触れるのは、木枯らしの吹くたいへん寒い頃かもしれませんが、2018年の夏は全国各地で最高気温を更新して、猛暑を超えた酷暑となりました。もはや、空調の無い室内で過ごすと命を危険に晒すことになります。特に直射日光の当たらない屋内にいても温度が危険なレベルに達しても、それに気が付かないまま熱中症になってしまうことが多いそうです。熱中症の予防には、水分補給に加えて継続的に温度をモニターして、適宜空調を使う判断が必要なようです。もし、家中の温度をリアルタイムでモニターして、その情報をいつでもどこでも見ることができたら生活に役立ちそうです。


関ハム2018での屋外温度モニター。当局は屋外で1日中売り子をしていた。

『IoT』という言葉を耳にしたことがあると思います。IoTはInternet of Thingsの略で、「あらゆるモノがインターネットに繋がる」というキーワードで、家電や自動車に取り込まれている技術です。イマイチしっくりきませんが、「モノのインターネット」と訳されています。広義では「データをインターネット上に置いておき、いつでもどこでも利用できるようにする」というものです。身近な電子機器をインターネットに繋いで、データをネット上のいわゆるクラウドに蓄積します。

さて前置きが長くなりましたが、今回は4か所の温度データを無線でパソコンに送信して表示、グラフ化、さらにインターネット経由でSNSに投稿する『ワイヤレス温度モニターシステム』を製作します。スマートフォン上で温度データをリアルタイムで見たり、パソコンに記録したりすることができます。
“My Projectの精神”に則って、回路の設計から通信データフォーマットの策定まで、すべてを手作りします。電波法で定められた微弱電波の範囲内で無線データ通信を楽しみます。

システム構成:

今回製作するのは、4つのセンサータグで測定した温度データを315MHzでパソコンに送信、リーダー(受信機)で受信してアプリケーション画面上に表示・グラフ化、さらに温度情報をリアルタイムで短文投稿サイト『ツイッター』に送信するシステムです。


システム概要図

・センサータグ
周囲温度に比例した電圧を出力する温度センサーを内蔵。検出電圧をPICマイコンのA/Dコンバーターに取り込んでデジタル化します。また、汎用スイッチ端子を付けて、その状態(High/Low)も温度データと共に発信するようにします。温度を測定するだけでなく、マグネットスイッチを使ってドアや戸の開閉状態を検出したり、明るさセンサーを使って周囲の明度を検出したりします。
データの送信は、My Project 2017年12月号の制御データと同じ方法です。PICのポート出力で発振回路をスイッチングさせ、315MHzの電波にOn Off Keying (OOK)変調を掛けます。


センサータグ(アンテナを内蔵させた例)。

センサータグは4個まで使用可能なので、4か所の温度を同時にモニターできます。興味深いのは、すべてのタグの送信周波数が全く同じということです。というのも、データの送出は一瞬(34ミリ秒間)で終わるので、タグ同士で送出タイミングが重なることは滅多に無いため、データの収集にはほぼ影響ありません。
タグの発信する電波は微弱ですが、通信速度が2kbpsという超低速であることと、後述のように受信回路にRFアンプを付けたことで、木造家屋であれば家のどこででも受信可能です。

 

・リーダー*(受信機)
受信回路には、My Projectではお馴染みの超再生検波方式を使います。回路は2017年12月号とほぼ同じですが、今回は感度アップを図るためにRFアンプを追加、さらに受信信号強度(RSSI)を検出できるようにしました。復調したデータはUSBポートを介してパソコンに入力します。電源はPCから供給します。
*テレメトリーや無線タグのデータを受信する端末はリーダーと呼ばれます


タグからの電波を受信してPCに送るリーダー。アンテナはVダイポール型。

・アプリケーション
受信した温度データを表示・グラフ化します。また、自分のツイッターアカウントやメールアドレスに自動で送信します。データをCSVファイルとしてPCに保存することもできます。


温度モニターソフト。
不要なCHや情報はウィンドウを縮小させて隠すことができる。(改良により画面は変わることがあります)

ところで、センサーICは精度にバラツキがあります。そこで、チャンネルごと(タグごと)に補正係数を入力することでバラツキを吸収できるようにしています。温度表示をダブルクリックして補正値(例:1.05)を入力できます。

システム設計:


ブロック図

センサータグ


プラスチックケースに収めたところ。温度センサーが外気に触れるように穴を開けている。

・温度センサー(サーミスタ)
温度を計測するセンサーにはMicrochip社製リニアアクティブサーミスタIC『MCP9700』を使います。リニア補正回路を内蔵しており、ほぼ温度に比例した電圧を出力します。このICは電源電圧が2.3Vから動作する低消費電流設計なので、今回のようなコイン電池で長期間動作させる回路に最適です。PICマイコンと同じメーカーだけあって、センサーの出力電圧をPICのA/Dポートに直接入力できます。

データシートによると、センサーの出力電圧は下記の式で求められるとのことです。

出力電圧=周囲温度 × 温度係数(10mV) + 0℃における出力電圧(100mV)
これを変形して、
周囲温度= (出力電圧-0℃における出力電圧(100mV)) / 温度係数(10mV) ×補正値*

*前述のように、センサーICのバラツキを補正するため、係数を掛けます。

検出電圧のデジタル化にはPICマイコン『12F675』(以下PIC)を使います。8ピンDIPの小型パッケージながら6つのI/Oポートを持ち、A/Dコンバーターも内蔵しています。

・汎用スイッチ端子(デジタル入力ポート)
PIC12F675のGPIO 3ポートは汎用入力に設定して、マグネットスイッチやフォトダイオードなどを付けます。そして、このポートの状態(ロジック電圧:High/Low)も温度と共に送信データに載せます。つまり、このセンサータグは温度を測定するだけでなく、使い方によっては扉の開け閉め(*)や照明のON/OFFなども検出することができます。例えば、部屋の温度と窓の開閉状態、冷蔵庫の温度とドアの開閉状態などを同時にモニターすることができます。
*発信間隔によっては、ポートの状態が変わっても次に発信するタイミングまでに元に戻った場合はポートの変化を検出できません。また、センサー回路によってはタグの消費電流が増えて、稼動期間が短くなることもあります。

例1) 明かりセンサー
フォトダイオードを使った明暗センサーです。暗いとLow、明るいとHighになります。部屋の照明が点いているか・消えているかを検出できます。明るさを判定する閾値は、フォトダイオードに直列に入れる抵抗値によって調節します。ただし、蛍光灯は120Hzで点滅しているため、そのまま検出させてしまうと、入力はONとOFFを繰り返すことになります。そこで、コンデンサを付けて入力電圧を平滑させてロジック電圧”High”を得ています。


ケーブルの先にセンサーを取り付け、汎用スイッチ端子に接続。

例2) マグネットスイッチ
磁石の接近で接点が点いたり切れたりすることで、扉などの開閉状態を検出できます。

例3) プッシュスイッチ
緊急の連絡など、ボタンを一定時間(タグの発信間隔)押し続けることで、メールやツイッター上に通知されます。


汎用スイッチ端子の使用例(明かりセンサー)

・発振回路
My Project 2017年12月号の『腕時計型ハンディー機リモコン』と同じ、SAW共振子を使った発振回路です。


発振回路実装図


基板に実装する前にブレッドボードで動作を確認中のセンサータグ(4個)
(リードトランジスタのようなものが温度センサー)


センサータグ実装図


4チャンネル分のセンサータグ。

・変調データ
A/D変換した温度データは、プリアンブルやタグIDなどと共にデータを構成します。データの”1”と”0”に合わせてPICの出力ポートのHighとLowを切り替えることで発振回路をON / OFFさせます。1ビットが0.5m秒なのでボーレートは2kbpsです。


発信データフォーマット。

315MHzの発振回路には、My Projectではお馴染みのSAW共振子を使います。発振回路の出力は、小容量のコンデンサを介してアンテナを接続します。アンテナは、出力が微弱電波の範疇に収まる程度の長さにします。


受信回路からPICに入力される復調信号(上)とPICからPCに入力するデータ(下)

<参考:なぜOOK (On Off Keying )変調か?>
CWのように、もっともデータ変調を掛けやすい方式のためです。ビットが”1” (High)の間しか発振しないので、バッテリーの消耗が少なく、弱い信号でも復調できるというメリットもあります。コイン電池で長期間動作させる用途に合っています。ただし、キャリアの有り無しでデータビットを表すのでノイズには弱いです。

・電源
データは間欠送信させるので、PICは常にアクティブではありません。1度データを送信すると、次に送信するまでの間は休止状態にさせます。温度だけの測定であれば、送信間隔は1分間に1回で十分だと思いますが、今回は汎用スイッチの状態もモニターするので、15秒に1回送信させます。休止状態と稼動状態の割合は、およそ59:1なので、小型電池で長期間動作させられます。
電源にはコイン電池(CR2032)を使いました。Wikipediaによるとこのタイプの電池容量は225mA/hとのことで、発信時の電流が5mA、休止状態(次の発信までの間)は僅か3uAなので、数ヶ月間は使用できます。
なぜ待機電流をこれほどまでに減らせるかと言うと、秘密はマイコンの節電機能にあります。マイコンには、使用していない間の消費電流を最低限にまで下げる「スリープ機能」があります。そして、WDT(Watch Dog Timer)というタイマーが、その名前の通り番犬(Watch dog)のように、設定した時間が過ぎるとマイコンの眠りを覚ます働きをします。このようにしてスリープ期間を設定することで間欠動作させています。

また、温度センサーへの電源をマイコンから供給することで、休止状態(次の発信までの間)は温度センサーの消費電流をゼロにしています。なお、データシートによると温度センサーの立ち上がりには800μ秒かかるので、プログラム中で、A/D変換の前に1m秒間待っています。

<参考:センサータグへのID割り当て>
各タグには、識別のためのIDを割り当てて発信データに載せます。今回は、PICマイコンの2つのポートをIDの設定に使用しました。1、2、3、4の4種類のIDを割り当てられるので、4個のタグを同時に使えます。
ところで、PIC内部には、プログラムを保存するメモリ領域以外に書き換え可能なメモリ領域も持っています。ライターでプログラムを書き込む際に、このメモリ領域にIDを書き込めば、256種類のIDを割り当てることができます。つまり、最大256個のタグが同時に使用できることになります。

My Project バックナンバー

2018年12月号トップへ戻る

次号は 12月 1日(木) に公開予定

サイトのご利用について

©2024 月刊FBニュース編集部 All Rights Reserved.