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

My Project

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

JP3DOI 正木潤一

リーダー(受信機)


受信回路とUSB-シリアル変換ICを内蔵したリーダー
(ノイズ対策にフェアライトコアをリード線に巻いている)

315MHzの超再生検波回路とAFアンプ、データスライサー、PICマイコン、USB-シリアルコンバーターで構成されます。超再生検波回路は基本的にMy Project 2017年12月号の回路と同じですが、今回は電源をパソコンから供給するので消費電流を気にする必要がないことから、受信感度アップを狙ってRFアンプを付加しました。


受信回路図


実装図

・RFアンプ
RFアンプといっても、本質的にはバッファアンプに近いかも知れません。超再生検波回路の共振回路に直接アンテナを接続すると、いくら小容量のコンデンサで疎結合させても、再生発振が不安定になりがちです。アンプを介すことで、波長相応のアンテナ(23cm)を付けても動作が安定します。コレクタ端子の出力取り出し部は、LC共振回路で315MHzくらいに同調させています。入力にマッチング回路を実装するスペースも無いので、ベース端子に直接アンテナを付けました。乱暴な方法ですが、これでも異常発振する恐れはなさそうです。

・RSSIの取得
AFアンプのコレクタ電流が電界強度と連動することを利用し、RSSI電圧を得ます。もちろん、無線機の信号強度表示のように正確ではありませんが、タグからの信号の強さの目安にはなります。
データを受信している間に、オペアンプの反転入力(-端子)の電圧を取得します。ここは、コンパレーター(データスライサー)の比較電圧の入力部ですが、LPFによって平滑した検波信号が加わっています。ここの電圧をPICのA/Dポートに入力してA/D変換します。こうして得たRSSIデータは、受信した温度データの最後に付加します。


検波信号からRSSIを取得する

・データ復調の流れ
増幅された検波信号は、オペアンプによるコンパレーター(データスライサー)によって矩形波に整形してデータビットを復元し、"High"と"Low"の信号としてPICマイコンに入力します。復調して得られたデータが、ノイズではなく正規のデータかどうかをPICが判定します。具体的には、プリアンブルとして4 m秒間Highが続いたらデータであると見なし、以降に続くビットをPCに流します。

<参考:4 ミリ秒間のプリアンブル>
無信号時、受信回路からはノイズによるランダムビットが出力されます。また、パソコンなどの室内にある電子機器から発せられるノイズを受信することがあります。4 m秒間”High”が続けば、それは作為的な信号、つまりデータと見なします。

データ化けへの対策(データ信頼性の向上):
電波を使う以上、通信データの信頼性は100%にはなりません。ましてや、今回のようなノイズに弱い簡易的な変調方式ではなおさらです。一般的に、ワイヤレスデータ通信においては、信号強度が低くなるほどデータ化けが発生しやすくなり、受信したデータの信頼性が低下します。逆に、信号強度が高ければデータが化けにくいので信頼性が高いといえます。今回は信号強度(RSSI)を検出できるようにして、受信データの信頼性の目安にします。いわばRSSIスケルチです。
しかし、振幅変調方式は外来ノイズによってもデータ化けが起こります。具体的には、ビットが立っていないところにノイズが載ってビットが立ってしまうことや、ビットが削れて消えてしまうことがあります。つまり、“0”であるべきところが“1”になってしまったり、“1”であるべきところが“0”になったりします。


データ化けの例

この復調波形は、アンテナを短くして電界強度を下げたうえでノイズ源(電動シェーバー)を近づけて再現したものです。見て分かるように、本来立っているべきビットが消えかけていたり、逆にノイズがビットを立ててしまったりしています。特にボーレートが高いほど、つまり通信速度が速いほど、ビット幅が細くなるので消失し易くなります。
ところで、TVのリモコンは赤外線の点滅による2進符号によってデータが送信されていますが、通信の信頼性を上げるために、データ内容をビット反転させたデータも送信しています。ビット反転前のデータと反転後のデータを比較して、同じであればデータ化けしていないといえます。今回、温度とタグIDのデータフォーマットにこれと同じ方法を使って通信の信頼性を向上させました。温度データには2バイト使うので、合わせて4バイトを使うことになります。

例えば、受信したデータの2バイトがそれぞれ“2”(上位ビット)と“128(下位ビット)”で、反転ビットが“253”(上位ビット)と”127”(下位ビット)だった場合:
データ:              2×256 + 128= 640
反転データ:       (255-253)×256 + (255-127) = 640
というように等しいので、データが化けていない可能性が極めて高いことになります。


データと反転データ。この2つが等しければデータは化けていないと見なせる。

<参考:それでもデータが化けたら?>
2kbpsという超低速通信なのであまり影響は無いとは思いますが、部品特性のバラつきによりデータが化ける可能性もあります。
・マイコンの内蔵クロックの安定度(タグ側とリーダー側ともに)
・発振トランジスタのバラツキ(発振回路の立ち上がり速度)
・コンパレーター(データスライサー)に使っているオペアンプのスルーレート
このような場合は、プログラムコード上でボーレートを2000から少し変更(例:2150)してみると正常に受信できることもあります。

・PCとの接続
USB-シリアル変換ICを使いますが、My Project 2017年8月号『CI-Vでハンディー機をリモート制御 』とほぼ同じですので、詳しくはそちらを参照してください。今回は、変換ICに覆い被せるようにPICを取り付けます。都合の良いことに、変換基板のパターンと、PICのVCC、GND、DATA端子の位置がちょうど重なります。


PICとUSB-シリアル変換ICの実装

モニターアプリケーション
リアルタイム温度表示、グラフ、データ履歴画面が4チャンネル分あります。設定項目では、COMポート番号や温度情報を送信するメールアドレスと送信間隔を設定します。ウィンドウ枠を狭めることで、不要な情報を非表示にできます。ここからダウンロードできます。


1分間隔で送信した測定データの例。1CH分だけを表示させた状態。
(改良により画面は変わることがあります)

PICから送られてくるデータは、シリアル-USB変換ICを介してPCに入力してアプリケーションで表示します。現在の温度、グラフ、履歴の3種類が表示されます。予め設定したメールアドレスやツイッターアカウントに温度データを定期送信することも可能です。メールの送信やツイッター投稿の間隔も選択できます。プログラムは、マイクロソフトが公開している無料の開発環境『Visual Studio Express version』を使ってVisual Basicで書きました。
画面上の鉛筆のアイコンをクリックすると、データをCSV形式で保存できます。表計算ソフトに取り込んで下図のように温度の変化(青色)をグラフで表すことができます。RSSI(オレンジ色)の変動が大きいことが見て取れますが、これは私が室内を移動することで反射などによって電波状況が変わるためです。帰宅直後に電源を投入してから(グラフ右端)RSSIが下降傾向なので、私の存在は受信環境に良くないようです。(hi)


エクセルに取り込んでグラフにしたところ (時間の流れが右から左になっています)

ツイッターへ自動的に投稿するには、インターネットブラウザ(Internet Explore)で自分のツイッターのアカウントにログインした状態にしておきます。ブラウザをプログラムで制御してツイッターのページにアクセスし、”つぶやき”の内容として温度情報を入力、投稿する仕組みです。
ツイッターに限らず、WEBページはHTML (WEBページの描画を記述する言語)で書かれていますが、これらはプログラムで書き換えることができます。例えば、この技術をCI-V制御ソフトに実装して、運用周波数や送受信時刻をQSOの記録として”つぶやく”こともできそうです。


つぶやかれた温度情報の例

<参考:ツイッターの使い道>
私は2018年の関ハムへの出展をきっかけにツイッターを始めました。少しでも宣伝になればと考えたからです。元々、いわゆるSNS(Social Network Service)には興味が無く、むしろ情報リークなどのニュースによる負の側面の印象が強くて敬遠していました。
しかし、思ったことを”つぶやき”というカタチで気軽に投稿するのがこのサービスのコンセプトですから、カンタンにアクセスできる『データ置き場』という使い道もあると考えました。1回の投稿には文字数制限がありますが、今回のようなデータ内容には十分使えます。

運用方法:

このアプリケーションは、24時間稼動させておくPCにインストールします。読者のお宅に古いPCは眠っていませんか?OSが古くて陳腐化したPCが最適です。私の場合、関ハム2018に出品したものの、売れ残ったノートパソコンを使っています。(hi)

ツイッターには、設定した間隔で温度情報が「投稿」されます。フォロワーのTL(タイムライン)にも表示されるので、フォロワーに対して予めことわりが必要です。他人の家の温度を見ても仕方がありませんので。(hi)
特に、投稿間隔を狭く設定した場合、フォロワーにとって全く関心の無いツイートがずらずらと現れることになります。自分と家族だけが閲覧するアカウントを用意したほうがよいかもしれません。


最新の温度情報をスマートフォンで確認できる

<参考:高齢化社会とIoT>
遠く離れた故郷にいる親御さんの様子が気になる方は多いと思います。定期的に電話で話すだけでは心配ではないでしょうか。インターネットを介して離れた場所をモニターするシステムはたくさん販売されています。例えばWEBカメラもその1つですが、身内とはいえプライバシーの面で課題があります。
生活環境の温度変化は生活状況を示すバロメーターになり得ます。空調の使用状況や台所や浴室の使用頻度などは温度データから推測することが可能です。さらに、タグの汎用入力ポートに接点スイッチや明度センサーを接続すれば、ドアや戸の開閉状態や照明の使用状況など、より詳しく生活状況を把握することができます。

最後に:

「IoT」と言う言葉は、そのハイテクな響きから、なにやら小難しいイメージがあります。ですが、今回製作したシステムは、たった2Vから動作する小さなマイコンと1石の自励式発振回路、そして簡単なプログラムで出来ています。それでも、我が家の狭い居間の壁に掛けた小さなセンサータグからの温度情報を、それこそ花の都パリで見ることもできるのです。微弱電波だけでは至近距離でしか通信できませんが、受信したデータをインターネットに乗せれば、世界中でその内容を見ることができます。ちょうど、QRPでも全世界と繋がるD-STARのようです。

ところで、今回のようなシステムは、『ラズベリーパイ』に代表されるシングルボードコンピューターとWi-Fiモジュールなどを組み合わせれば、機能や回路がパッケージ化されているので、ほぼプログラミングだけで比較的簡単に実現できます。むしろ昨今では、ディスクリート単位で部品を使うのではなく、このような「モジュール+プログラミング」という電子工作が主流のようです。
私は、自分の仕事にしたいくらいプログラミングが大好きです。同時に、ブレッドボードを使って回路を試行錯誤したり、部品配置にアレコレ悩んだりしたりするハードウェア製作も好きです。ハードウェア要素技術を得ることで、自分で作ることのできるモノが増えることに大きな喜びを感じます。
ソフトウェアは、プログラム言語という枠内で動作を実現させる要素ですが、ハードウェアには実装や加工、部品選定を含め、多くの要素が含まれます。そういう点で、ハードウェアはソフトウェアよりも個性が出せるように思います。

My Project バックナンバー

2018年12月号トップへ戻る

次号は 8月17日(月) に公開予定

サイトのご利用について

©2020 月刊FBニュース編集部 All Rights Reserved. 発行元: 月刊FBニュース編集部