Memorandumの小部屋
本ページは金銭授受を伴う行為を含むAuctionや商用Web
Pageからの無断リンク・無断参照を禁じます。
無断リンク・無断参照が判明した時点で然るべき処置をとらさせて頂きます。
飛んでもアイオー ( I/O ) (その1)
ワイヤレス信号伝送にトライ
1.背景
私の小さい頃は、田舎である自宅周辺は家も人も少なく、また、屋外で野良仕事をする人も多く遠方まで人の目が行き届いていました。 そのため、家を空けることがあっても、しっかりと鍵をかけるということはあまりありませんでした。(まともな鍵自体がなかったと言った方が正確だと思います。)
しかし、最近では家に鍵をかけるのは当たり前になってきており、さらには防犯のためにセンサーライトを装備する家も多くなりました。 我が家でも物は試しとAC100V駆動のセンサーライトを1個購入していましたが、うまく検出できなかったのと、ライトの発熱が激しかったので今は単なる手動スイッチでオンオフするライトになっています。 まあ、これはこれで役だってはいます。
ある日、家人がTVショッピングで「おもちゃのセンサーライト」(本人はきっと真剣に購入したと思うのですが。。。)を3個も購入してきました。 きっと「2個で○○○○円、今ならさらに1個おまけで3個付きます。」なんてうたい文句が浮かんできます。 このセンサーライト、なんと単3乾電池4本実装する電池式のセンサーライトで、6V電球(フィラメント式です。)が光るタイプです。 「配線不要で、簡単に持ち運びで、設置できますよ!」なんてうたい文句があったのでしょう。
【 センサーライト勢揃い 】
家人の要望により、早速、簡単に不法侵入できる家の裏側に3個とも取り付けました。 配線がないので取り付けは、いたって簡単でした、 性能も、おもちゃとはいっても今度はしっかりと人体を検出してくれています。 これは使いものになりそうと思っていたいましたが、一月も経たないうちに電球が点かなくなりました。 案の定、電池切れです。 やはり、おもちゃでした。 後日、消費電流を実測すると、電球点灯時に0.6Aも流れています。 さすがにこれでは単3乾電池4本で長期運転は無理です。
しかし、センサーライトがあれば確かに安心感はあります。 このセンサーライトは電池の他にACアダプタ端子も付いていますので外部電源にも対応できるようです。 これを機会に、このセンサライトを本格的に防犯設備として使用することを検討していくことにしました。
ACアダプタ化を行うだけでは面白くありません。 せっかく電源配線を敷設するならば、ついでにこのセンサの検出信号を居室で確認し、アラームを発生できないかと、夢(妄想)が膨らんできます。
さらに。。。。。どうせならば、TVカメラで確認もしたい。 また、一カ所だけではなく、家の周囲をカバーするためには検出地点は4カ所くらい。。。。。しかし、配線を考えると、屋外の配線を居室に引き込むのに壁に穴を開けたくない。。。。。 どんどん仕様が膨らんできました。
ここでやっと、タイトルにところにたどり着きました。 そうです、センサの信号をワイヤレスで伝送することにトライです。
今回の最終目標は防犯機能です。 この防犯機能は、パソコンと無線LANを使えばこれらの事を実現できるでしょう。(費用はかかりそうですが。) しかし、ここは電気電子工作に部屋を運営している手前もあり、機能は低くても自作でトライです。
で、今回はセンサー信号をワイヤレスで居室に伝送できるかのワイヤレス信号伝送にトライします。 でも、この機能、ラジコンなどでいくらでも採用されています。 何も今更一から製作しなくともという疑念は頭の外に追いやって製作に入ります。 しかし、最終的にどんな物にするかは考えず、行き当たりばったりで製作開始に入ることにしました。 きっと、とんでもないものができると危惧(確信)しています。
今回のシリーズは「飛んでもIO(アイオー)」シリーズとして製作過程を、そのときどきの状況に応じて公開していきます。 また、これらの機能を構成する要素部品も行き当たりばったりで集めています。 ワイヤレス用無線モジュール、TVカメラ、アンテナ。。。。。。。 さて、どうなることやら。 (今回は前置きが長く なりました。)
2.信号電送基本仕様
信号をワイヤレスで伝送する方法については、ロボット製作の図書でPICマイコンと無線モジュールを使用する製作例が有ります。 実は、このような図書の存在を知らずに、身近にある部品を使用して製作に着手してしまいました。 あと少し多く部品代を出せばもっと性能の良い(信頼性のある)ワイヤレス伝送機能を実現できそうです。 もし、ワイヤレス伝送をお考えでしたら、ロボットとPICマイコンの両方について記載された図書を読まれることをお勧めします。 当方は既に製作に入っており、それなりに部品も集めていますので、性能は低いですが以下のオリジナル方式でこれからも進めていきます。 (今回は言い訳が多くなりそうです。)
2.1 電波発生タイミング
無線モジュールは大きさを考えると自作は諦めて無線モジュールを採用します。 無線無線モジュールは「リモコンリモコン その1」で使用した「TX433」と「RX433」を利用することにしました。
センサ信号はいつ信号が変化するか分かりません。 「リモコンリモコン その1」では、リモコンを使用する時だけ電波が発生すればよく、ほとんど電波を出すことがありません。 しかし、今回のセンサ信号のように常時監視を前提とした場合、センサ信号のオンオフをそのまま電波のオンオフとして常時伝送することは好ましくありません。 よって、信号が変化した時、及び、あらかじめ設定された周期で信号状態を送信するようにします。
2.2 信号伝送プロトコル
ワイヤレス伝送の製作記事などでもそうですが、信号の伝送はシリアル通信で行い、プロトコルを持たせれば、相当複雑なことはできますし、データの信頼性もそれなりに確保できます。 しかし、今回はハードウエアに手がかかるのでプログラムはできる限り手抜きできるようにしたいと思います。 よって、伝送されたデータが正しいかどうかの最低限の確認だけは行うようにして、伝送プロトコル無しとします。 つまり、伝送データは送りっぱなしで、正しく伝送できたか の確認、また、データ訂正機能などは一切持ち合わせておりません。
2.3 データフォーマット
データ長は8ビットとします。 また、データが正しいかどうかを確認することができるようなデータフォーマットを勝手に考え、以下のようなビット系列となるフォーマットとしま した。 今回の伝送では8ビットのデータに付加ビットを追加してシリアル伝送します。 また、同期方式は基本的には調歩同期とします。
データの正しさの確認ができるように、伝送するデータにデータ確認用ビットも付加しております。 下記フォーマットとすることで、各ビットの非反転/反転ビットとなっているか、同期確認用ビットが所定の値となっているかなどを確認することで受信データが正しいかどうかをチェックすることができます。 また、実際の回路の復調時を考えて、信号にはDC成分が含まれないようにビット系列を決めています。
なお、下記のこのデータフォーマットの一固まりを以後データブロックと呼ぶことととにします。
Data Format : | S1 HH ID0 /ID0 ID1 /ID1 D0 /D0 D1 /D1 D2 /D2 D3 /D3 /D4 /D4 D5 /D5 D6 /D6 D7 /D7 LL S2 |
信号名称 |
内 容 |
信号名称 |
内 容 |
S1 | スタートビット : 論理1 | D3 | bit3データ |
HH | 同期確認用ビット | /D3 | bit3の反転ビット |
ID0 | 識別コード ID0 | D4 | bit4データ |
/ID0 | 識別コード ID0の反転ビット | /D4 | bit4の反転ビット |
ID1 | 識別コード ID1 | D5 | bit5データ |
/ID1 | 識別コード ID1の反転ビット | /D5 | bit5の反転ビット |
D0 | bit0データ | D6 | bit6データ |
/D0 | bit0の反転ビット | /D6 | bit6の反転ビット |
D1 | bit1データ | D7 | bit7データ |
/D1 | bit1の反転ビット | /D7 | bit7の反転ビット |
D2 | bit2データ | LL | 同期確認用ビット |
/D2 | bit2の反転ビット | S2 | スタートビット : 論理:0 |
信号HH/LLは当初設けていませんでした。 製作過程で希に意図しないデータが伝送されることがありました。 この原因の一つとしてノイズをスタートビットとして誤検知していると考えられましたので同期確認用として追加したものです。
各ビットの論理0/1は、1ビットに相当する信号の期間を前半と後半の期間に分け、それぞれの期間のLow/Highのレベルを以下のようにすることで判定します。
前半 |
後半 |
内 容 |
Low | Low | LLビット |
Low | High | 論理0 |
High | Low | 論地1 |
High | High | HHビット |
2.4 信号変調方法
データの変調は使用モジュールの制限でASK変調で行います。 上記Low/Highをそのまま電波の有無にするとノイズの影響を受けやすくなります。 また、今回は伝送スピードは要求されませんので、High期間は10kHzのパルスがある期間、 Low期間は電波休止期間とすることにします。
なお、10kHzにした理由は「リモコンリモコン その1」との干渉を避けるためにえいや〜と決めたものです。 今思えば30kHzくらいにしておけばと後悔しています。 後述のフィルタ回路も製作しているので今更 変更する気はありませんが、もし、次回新規設計する機会があれば30kHzとしたいと思っています。
以上の仕様より、信号波形を図示すると以下のようになります。
前半 |
後半 |
内 容 |
波 形 |
Low | Low | LLビット | |
Low | High | 論理0 | |
High | Low | 論理1 | |
High | High | HHビット |
2.5 データ伝送量
一度に多くの情報を送る必要はありませんが、同じ無線モジュールを使用して複数部位にデータ送信できる仕様を盛り込んでおきたいと考え、識別コードを設けてデータ伝送先を判定できるようにします。
個人用途であり、伝送先は最大4カ所で十分と思われますので、データ8ビットとは別に識別コードとして2ビット割り当てておくことにします。
これにより、同一周波数の無線モジュールでも8×4=32ビットのデータを伝送できます。
3 試作回路
今回は、送信機側のスイッチのオンオフ信号を受信機側のLEDで点灯させる試作回路を製作してみます。 今回の回路を応用して今後防犯機能を盛り込んで行く予定です。
3.1 送信機回路
上記の仕様に基づいた送信機回路を下記します。 信号はPICマイコンで生成し、これをそのまま「TX433」に入力するシンプルな回路です。
データの入出力は正論理(といっても、送信と受信で同一レベル[Low/High]にするので正/負論理の定義は接続される回路で決まります。)のため、ID0,ID1及びBit0〜Bit7はジャンパーピン短絡でHighとなるようにしております。
電源電圧は5Vとなっていますが、6Vでも動作できます。 回路試作段階では単3乾電池4本で動作して全体動作確認をしております。
上記回路図画像をクリックすると拡大図を表示できます。
【 送信機回路 】
【 送信機試作例 】
3.2 送信用PICマイコン
送信用PICマイコンとしてはPIC16F84A-20Pを使用しています。 ピンアサイメントを下記表に掲載しておきます。 また、送信用PICマイコンのHEXファイルは、下記ファイル名をクリックすることでダウンロードできます。
送信用HEXファイル : tx5_v02.hex (2704バイト)
(まだデバッグ中です。)
信号 |
向き |
内 容 |
信号 |
向き |
内 容 |
1 | 入力 | TX Enable Low:: 送信禁止 High:送信許可 |
18 | 出力 | 送信データ |
2 | 入力 | ID0 : 識別コード | 17 | 出力 | 送信Busy Low:送信停止中 High:送信中 |
3 | 入力 | ID1 : 識別コード | 16 | − | OSC |
4 | 入力 | リセット | 15 | − | OSC |
5 | − | GND | 14 | − | Vcc |
6 | 入力 | データ bit 0 | 13 | 入力 | データ bit 7 |
7 | 入力 | データ bit 1 | 12 | 入力 | データ bit 6 |
8 | 入力 | データ bit 2 | 11 | 入力 | データ bit 5 |
9 | 入力 | データ bit 3 | 10 | 入力 | データ bit 4 |
データブロックを構成する各ビットは前半2ms/後半2msの4ms/ビットで設計しています。
送信用PICマイコンの送信データ信号は既に10kHzで変調されています。
送信開始前にTX Enableの信号を確認します。 TX EnableがLowの場合、送信を待ちます。 TX
EnableがHighになっていることを確認後、一定時間の待ち時間後、再度TX Enableを確認して送信開始します。 このとき、またTX
EnableがLowになっていると送信を待ちます。 なお、前記一定の待ち時間はID0、ID1の設定で決まります。
ID0=Low/,ID1=Low : 待ち時間無し
ID0=High/,ID1=Low : 5ms
ID0=High/,ID1=Low : 10ms
ID0=High/,ID1=Low : 15ms
今回はプロトコルがなく、データを送りっぱなしにする方式です。 そのため、少しでも確実にデータを送信できるようにデータを送信する際に1回だけデータブロックを送信するのではなく、何回か連続して送信します。
連続してデータブロックを送信する場合、次のデータブロック送信から105msの時間間隔をおいて次のデータブロックを送信します。
送信データを出力する前に送信Busy信号がHighとなり、送信データを送信し終えてから送信Busy信号がLowになります。
【 送信Busy信号 】
1回データ受信に失敗しでも、その後にデータを受信できるように周期的にデータを送信するようにしています。 これらの設定はEEPROMのデータを書き換えることで変更できるようにしています。
これらのEEPROMのデータ内容を下記します。 また、各設定値を説明する図を記載しておきます。
アドレス |
名称 |
内 容 |
00 | A00 | データ送信周期待時間 設定値×0.1s(目安) デフォルト : D'30' 30×0.1s=約3s |
01 | A01 | 一回の送信時に送信するデータブロック数 デフォルト : 3回 |
【 データブロックタイミングとEEPROM設定値の関係 】
秋月電子通商のPICプログラマキット Ver4.0 (K-200)を使用した場合のEEPROM書き換え画面を下記します。 この修正画面でEEPROMデータだけを容易に変更できます。
【 EEPROMデータの設定 】
3.3 受信機回路
上記の仕様に基づいた受信機回路を下記します。 「RX433」で受信した信号をバンドパスフィルター(BPF)を通して10kHzの周波数成分を抽出して検波し、この検波信号の有無を受信用PICマイコンに入力して信号を取り出します。
10kHzの検波信号が送信側PICマイコンの送信データに相当します。
送信側のID0,ID1と受信側のID0,ID1が同一の設定のときに出力データを更新します。
電源投入時は全出力Lowレベルとなります。
C54〜C59はできる限りフィルムコンデンサを使用して下さい。
上記回路図画像をクリックすると拡大図を表示できます。
【 受信機回路 】
【 受信機試作例 】
3.4 受信用PICマイコン
受信用PICマイコンもPIC16F84A-20Pを使用します。 ピンアサイメントを下記表に掲載しておきます。 また、受信用PICマイコンのHEXファイルは、下記ファイル名をクリックすることでダウンロードできます。
(まだデバッグ中です。)
信号 |
向き |
内 容 |
信号 |
向き |
内 容 |
1 | 入力 | RX Busy Low:: 受信中 High:受信待ち時 |
18 | 出力 | サンプリングタイミング |
2 | 入力 | ID0 : 識別コード | 17 | 入力 | 受信データ |
3 | 入力 | ID1 : 識別コード | 16 | − | OSC |
4 | 入力 | リセット | 15 | − | OSC |
5 | − | GND | 14 | − | Vcc |
6 | 出力 | データ bit 0 | 13 | 出力 | データ bit 7 |
7 | 出力 | データ bit 1 | 12 | 出力 | データ bit 6 |
8 | 出力 | データ bit 2 | 11 | 出力 | データ bit 5 |
9 | 出力 | データ bit 3 | 10 | 出力 | データ bit 4 |
受信待ち状態のときに受信データがLowからHighに変化したタイミングでスタートビットを受信したと判断して受信開始します。 また、このとき、RX Busy信号がHighからLowになります。
【 RX Busyタイミング 】
受信開始時にサンプリングタイミング信号をLowからHighに変化させます。 その後、1〜1.5ms後に受信データのサンプリングを開始します。 1回目のサンプリング時にサンプリングタイミング信号がHighからLowに変化します。
その後、2msの周期で受信データをサンプリングします。 サンプリングする度にサンプリングタイミング信号はLow→HighもしくはHigh→Lowに変化します。
【 サンプリングタイミング信号とRX 受信データ 】
データフォーマットに準じて全ビットをサンプリングした後、RX Busy信号をLowからHighに変化させます。 その後、データが所定のフォーマットに準じていることを確認し、また、識別コードが受信用PICマイコンと一致していることを確認してデータを更新します。
RX Busy信号は送信用PICマイコンのTX Enableに接続することで、受信中の送信を防止できます。
3.5 受信機調整
送信機側の調整はありませんが、受信機側は受信機回路のVR1を調整する必要があります。 回路的にはVR1はBPFの中心周波数を調整することになりますが、実際には10kHzの周波数抽出のゲイン調整の役目をしています。
今回の試作で、10kHzが最も感度よく検出しようとすると検波出力にノイズ状の信号が発生してしまいました。 このノイズを残しているとスタートビットと誤って判断するため、できる限りなくさなければなりません。 この対応としてBPFや検波回路の定数を調整してみましたが部品点数を増やさないで済む方法を見つけることができませんでした。 考考え方を変えてVR1は感度調整と割り切り、今回はVR1の調整で済ますことにしました。
調整は下記に記載のように受信機のサンプリングタイミング信号に接続したLED (RX Timing)の点灯状態を確認しながら行います。
(1) | 送信機側でデータが送信されていない状態にしておきます。(TX
Enable信号を常時Low) |
(2) | この状態で受信機の電源を入れてサンプリングタイミング信号のLED
(RX Timing)が点灯する状態から点灯しない状態になるようにVR1を調整します。 |
(3) | 送信機側を送信状態にします。(TX
Enable信号を常時High) |
(4) | 送信機側のTX LEDが点灯しているときだけLED (RX
Timing)が点灯することを確認して下さい。 これで調整完了です。 |
(5) | LED (RX Timing)が点灯しない場合は、VR1を再調整してLED (RX Timing)が点灯するかどうか確認して下さい。 LED (RX Timing)の点灯を確認できた場合は、再度(1)からやり直して下さい。 |
なお、LED (RX Timing)が全然点灯しない場合は、回路や送受信のPICマイコンの再確認をお願いします。
3.6 その他
3.6.1 Digital OUT信号波形
当初、受信機回路は、「RX433」のDigital OUT信号を使用する回路にしていました。 しかし、 Linear OUT信号には10kHzの信号が現れているにも関わらずDigital OUT信号ではうまく信号を取り出せていないようでした。 下記にその際の信号波形を掲載します。
(1) 受信開始後のLinear OUT信号のDC成分がシフトしていっています。
【 Linear OUT信号レベル変動 】
(2) DC成分のシフトが原因でDigitai OUTの出力では10kHzの周波数成分をうまく取り出せていません。
【 Digitai OUT例 】
「RX433」の回路を調べると、今のDigital OUT信号を生成する回路は簡易回路(Simpleと言った方が正しいようです。)のため、うまくコンパレートできていないようです。 このため、Digital OUT信号を使用して10kHz検出用PICマイコンを使用した回路からオペアンプを使用したBPF回路に変更する回路変更を行いました。 このため、予想以上に製作に時間がかかってしみました。
3.6.2 RX 受信データ遅れ
送信データと受信データの波形を観測すると、RX 受信データがHighからLowに変化するタイミングが下図のように遅れています。 あまり遅れがひどいと。せっかく正常に受信できても検波出力信号劣化のためにデータを誤判定して受信できなくなります。
【 TX送信データとRX受信データ(検波出力)のタイミング 】
そこでLinear OUT信号とRX受信データ(検波出力)を比較すると、Linear OUT信号はTX送信データを忠実に再現しているようです。 やはり、BPF回路に起因したものであるようです。 これにより、10kHzの採用を後悔したものです。
【 Linear OUTとRX受信データ(検波出力)のタイミング 】
結局、この対策として、スタートを検出してからサンプリング開始するまでの時間を、本来は1msとすべきところを1.5msに変更しています。
4.防犯機能プロトタイプ
今回の試作回路を使用して試作回路の製作を行っています。 本原稿作成時点では、詳細を公開できるまでには達していませんが、参考までに現状のプロトタイプの状況を掲載します。
センサーライトは既に検出信号を取り出す改造を施しています。 右側面上側のジャックが追加した検出信号取り出し部です。
【 センサライト センサ外観 】
防犯機能を実現するためにTVカメラ、センサライト、また、今回試作した「飛んでもアイオー」を使用した信号伝送装置を準備しております。
【 防犯機能用構成部品(準備中) 】
今回試作した「飛んでもアイオー」を使用した信号伝送装置のプロトタイプ外観です。
(a) | 受信機を内蔵しており、TVカメラの電源をオンオフする信号などを受信する予定です。 |
(b) | 送信機は外部センサー4点を入力して、この信号を送信します。 また、(a)のオンオフ信号の状態を入力して送信しています。 |
【 信号伝送装置のプロトタイプ外観 】
【プログラム書き込みサービス】
まだ試作のため、現状ではPICマイコンの書き込みサービスの対象とはしません。
本ページの製作に用いた無線モジュールが少し余りそうですので有償でお分けすることを検討しています。 (まだ残数未定のため、ご依頼はされないで下さい。)
End of This Page.