PICを用いたセンサネットワークの製作

ネットワークシステム研究室
指導教員:坂本 直志 准教授
04KC003:明石 由紀

目次


1.始めに

近年、ユビキタス情報社会という言葉を頻繁に耳にするようになった。ユビキタス情報社会とは、あらゆる生活の場面においてデジタル化された情報を活用することによって、より豊かな社会を形成することを主な目的としている。このユビキタス情報社会のキーワードの一つにセンサネットワークというものがある。

センサネットワークとは複数の端末同士が自立的にネットワークを確立し、端末に接続したセンサから得たデータをPCやサーバなどの機器に集めるものである。センサネットワークは端末の仕様によって様々な用途が期待できる。例えば、端末に熱耐久性を持たせれば火山火口や極寒地などの人間が立ち入ることが困難な場所の情報を収集できる。また、端末に接続するセンサによって集めるデータを変えることができる。

センサネットワークの開発は、アメリカの軍事利用目的で始まった。その後、2001年にカルフォルニア大学からスマートダストという超小型のセンサネットワークが発表された。図1はスマートダストの写真である。写真のT字型のアンテナと思われる部分の高さが200μmと小さいことがわかる。スマートダストはわずか1mm立方にセンサ、無線による通信装置、バッテリーが付いている。今日、センサネットワークは民間での利用が期待され、日本でも活発に開発が進められている。

図1 スマートダスト

今、センサネットワークが大きく取り上げられている理由として通信端末の小型化と高性能化が進んだことがあげられる。これにより従来の計測技術を大きく上回る大規模な計測や計測を行うことが可能となった。しかし、現段階のセンサネットワークは研究目的のものが主流であり、1個のノードが2万円以上と高価なものばかりである。100個単位での実験を行いたい場合でも、ノードの単価が高価だと莫大な費用が掛かってしまう。そこで本研究では安価なセンサネットワークの基礎を目標とし製作を行った。

本研究ではPICを使用した。10年前はPICの性能や開発環境が十分ではなく、PICに取って代わるマイコンや開発環境が存在しなかった。しかし、今日では安価で高性能なPICを秋葉原やインターネット上で簡易に手に入れることができる。また、アセンブラ環境とデバッガがインターネット上で無料で手に入るので、開発環境を整えることも簡単である。本研究ではPICを使用することにより、コストを抑えた。

本研究の仕様を簡単に説明する。本来のセンサネットワークは送受信機能とセンサを搭載し、データを双方向通信できるようになっている。しかし、本研究では簡略化のため送信と受信を別けて製作した。また、通信は赤外線で行っている。送信側は4bitのロータリースイッチ2つと赤外線LEDを接続しており、受信側は赤外線受信モジュールとLCDを接続している。送信側のロータリースイッチの番号はデータとして受信側に送られ、受信側のLCDに表示される。

2.準備

2.1.センサネットワーク

(1)センサネットワークとは

センサネットワークとはビルの中や物流、街中の道路や橋、山や川などのさまざまな場所に温度、湿度、振動などの周囲の環境を検地するセンサに小型の無線機を組み合わせたものを設置し、ネットワークで接続するものである。これにより、コンピュータを設置することが出来ない環境の情報を、環境を壊すことなく外から得ることが出来る。また、センサネットワークのノードを1つの環境に大量に設置することで、詳細なデータを得ることが出来る。

(2)センサネットワークの技術的課題

センサネットワークにはネットワーク通信の確立、低消費電力、小型化、低価格、環境適応性の5つの課題が挙げられる。
@ネットワーク通信の確立
センサネットワークはどこに置いても自立的にネットワークを確立する利便性が求められている。
A低消費電力
センサネットワークの端末は電源のない場所での長期間の使用が求められることがある。その際、消費電力が大きいとバッテリー交換の頻度が高くなり手間がかかってしまう。また、場所によっては設置しなおさなければならない場合もある。
B小型化
センサネットワークには室内などの限られた空間に多くの端末を設置する場合がある。その際端末が大きいと設置することが出来なくなってしまうことがある。
C低価格
センサネットワークは複数の端末を設置し使用する。単価が高いと設置に莫大なコストが掛かってしまう。しかし数を減らすと満足な調査が出来ない。そこで単価をなるべく安くする必要がある。
D環境適応性
センサネットワークは人が調査出来ないような劣環境の調査を行うときに使用される場合がある。調査する環境に応じて端末の耐久性を考慮しなければならない。
今回はこの中の、ネットワーク通信の確立と低価格を目標に製作を行った。

(3)センサネットワークの応用例

@設備の状態監視システム
工場では製造ラインでの状態を常時モニタし、生産設備の故障を未然に防ぐために使用されている。例えば台車の異常振動や産業用ロボットの可動部分の過熱状態を常時モニタして部品交換や注油などを行う。台車は移動し、産業用ロボットは可動部分を有するため、後付けでは配線が困難だった。しかしセンサネットワークの端末を監視したい部位に取り付けることによって、台車や産業用ロボットの動きを妨げることなく、リアルタイムに振動や温度データを収集することが可能になった。

A倉庫などの温湿度監視システム
食品や薬品などを保管している倉庫では、倉庫内のあらゆる場所で温湿度が所定の範囲内に入っているかを検査員による温湿度計の目視または自動で測定している。検査員が目視測定している倉庫に有線で温湿度を自動確認するシステムを導入する場合、電源や通信線設置の工事をしなければならない。また、測定点が固定となり、倉庫内保管物の入れ替えやレイアウト変更 による測定点の変更に対応することが出来ないという問題があった。しかしセンサネットワークを導入することによって上記のような問題を解決しつつ、自動確認システムを導入することが可能となった。

2.2.PICとは

PICとは、Peripheral Interface Controllerの略称であり、マイクロチップ・テクノロジー社が製造しているマイクロコントローラ製品群の総称である。コンピュータの周辺機器接続の制御用として1980年代にゼネラル・インスツルメント社により開発された。後にPICの事業部門が独立してマイクロチップ社となり現在に至る。
PICにはCPU、メモリ(RAM、ROM)、I/Oなどが1チップに収められており、ROMに書き込まれたプログラムにより制御される。プログラムはアセンブリ言語とC言語が使用できる。PICは1つ500円以下と安価であり、アセンブラ環境も無償で提供されている。
本研究ではPIC16F877Aをアセンブリ言語で使用する。PIC16F877Aは5Vとクロックがあれば動作する。

3.本研究

本研究では子機のスイッチを押すと、親機にデータを送信する。そして、データの信号を受け取った親機は、データをLCDに表示すという非常に簡易なものである。しかし、今後の発展も視野に入れ、現在はまだ使われていない部品も接続されている。次から製作したセンサネットワークの詳細を説明する。

3.1.研究の仕様

本研究では簡略化のため、送信機と受信機を分けて製作を行った。送信機はあらかじめ個体番号が振られている。送信機のスイッチを押すと、コマンド、個体番号、データの3つを赤外線で送信する。受信機は赤外線受信モジュールで信号を受信し、個体番号とデータをLCDに表示する。データは2つのロータリースイッチの番号である。製作物のブロック図を図2に、LCD表示例を図3に表示する。

図2 製作物ブロック図
図3 LCDのデータ表示例

3.2.回路について

子機の回路図を付録1に、親機の回路図を付録2に示す。回路の詳細を説明する。

(1)受信部について(受信機)
図4は信号受信部の回路図である。回路図の中心にある丸にダイオードの付いているIRCRMという素子が赤外線リモコン受信モジュールであり、これが受信部の中心である。このリモコン受信モジュールは38kHz前後(約35〜40kHz)の周波数の信号のみを受信し、その他の周波数の信号は受信しない。そして信号を出力する際には信号を受信している間を1、受信していない期間を0として出力する。この素子はノイズに弱いため、周辺の回路にノイズ対策をしなければならない。
ノイズ対策のためにリモコン受信モジュールの電源部にショットキーバリアダイオード(SCHOTTKY-D)を接続している。ショットキーバリアダイオードは普通のダイオードに比べ順方向の電圧降下が低く、スイッチング速度が速いという特徴を持つ。この特性を活かし、ノイズに弱い赤外線リモコン受信モジュールを電源電圧の揺れから保護している。また、リモコン受信モジュール周辺に接続されている2つのコンデンサもバイパスコンデンサとしてノイズ除去を行っている。
リモコン受信モジュールの出力部から抵抗(10kΩ)を通してトランジスタ(C1815)のベース部に入力されている。ベースから電流が入ると、ベース電流とベース電流の100倍以上のコレクタ電流がコレクタの電源から流れ込み、エミッタへと抜ける。このとき電源とコレクタの間の10kΩの抵抗に電圧が掛かる。この電圧が同じくコレクタと接続されているPICのピンにも入力としてかかる。したがって、赤外線リモコン受信モジュールが信号を受信しているときはPICの入力がHiになり、赤外線リモコン受信モジュールが何も受信していないときはPICの入力はLow状態となる。
外部から信号、またはノイズを受信していることがわかるようにトランジスタのコレクタにLED(LED3)を接続している。トランジスタがON状態のときはLEDが点灯、または点滅している。

図4 信号受信部の回路

(2)送信部について(送信機)
図5は信号送信部の回路図である。送信部には赤外線LEDをしようしている。PICの1ピンあたりの最大出力電流は25mAなので、直接PICのポートにLEDを接続し光らすことができる。

図5 信号送信部の回路

(3)スイッチ部について(送信機)
図6はスイッチ部の回路図である。PICに外部から手動で信号を入れる手段としてスイッチを使用している。スイッチはPICにプルダウン抵抗を接続している。プルダウンの回路は、スイッチがOFFのとき、PICの入力がGNDと同電位になるため、PICの入力がLowになる。スイッチがONのとき抵抗にVCCがかかるため、抵抗の手前にあるPICの入力はVCCと同電位になる。つまり、スイッチをONにするとPICの入力がHiになり、スイッチをOFFにするとPICの入力がLowになる。

図6 スイッチ部の回路

(4)ロータリースイッチについて(送信機)
図7はロータリースイッチ部の回路図である。子機のデータとしてロータリースイッチを使用する。子機は親機からリクエストがあった場合、2つのロータリースイッチの値をデータとして親機に送る。ロータリースイッチに接続している2つの10kΩの集合抵抗(RA1、RA2)はプルダウン抵抗である。
ロータリースイッチについて説明する。ロータリースイッチとは回転するスイッチで、本研究では0〜9を表すことが出来るロータリースイッチを使用した。4bitの端子を使い、数字を表す。図8にロータリースイッチの実体図を、図9にロータリースイッチの割り当て表を記載する。

図7 ロータリースイッチ部の回路
図8 ロータリースイッチ実体図
図9 ロータリースイッチの割り当て表

(5)発信器(送信機・受信機共通)
本研究で使用するPICには内部にクロック用の発振器が付いていない。したかって、外部に発振器を接続しなければならない。今回使用する発振器は20MHzのセラミック発振器である。図10は発振器部の回路図である。
20MHzはPIC16F877Aに接続することができる最速の発振器である。

図10 発振器部の回路

(6)リセット回路(送信機・受信機共通)
電源の立ち上がりが遅い恐れがあるため、外部にパワー・オン・リセット回路を接続した。図11はリセット部の回路図である。この回路の出力先は特別なポートで、リセット端子になっている。このポートがHiのときPICは起動している状態にある。リセット端子にリセット回路を入れることで電源を入れてから、PICが立ち上がるまでに少し時間を持たせることができる。この時間に電源が立ち上がれば、PICを正常に起動させることができる。また、スイッチを押すとLEDが点灯し、コンデンサにチャージされた電荷を放電する。するとPICの入力がLowになり、PICは停止する。そしてコンデンサに電荷が溜まりリセット端子がHiになると、PICは起動する。
ポートに接続されている10Ωは保護抵抗である。リセット端子の抵抗が十分にあるので、この抵抗での電圧降下の危険はない。

図11 リセット部の回路

(7)LCDについて(受信機)
LCDとはLiquid Crystal Displayの略語で、液晶ディスプレイのことである。本研究で使用するLCDは最大2行16列の文字を表示させるものである。表示させることが出来る文字はJISX0201を基にした専用の文字コードが使われている。
LCDはRS、R/W、Eと8bitのコマンドを使用し制御を行う。RSは書き込み対象となるレジスタの選択信号で、コマンドを出力するときはRS=Low、データを出力するときはRS=Highを出力する。R/WはSC1602 内部レジスタの読み込み/書き込み切替え信号で、読み込みのときはRW=High、書き込みのときはR/W=Lowを出力する。Eとはイネーブル信号のことでLCDにデータを出力する際は、データ信号を出力した後E信号を Low-High-Lowと変化させる。今回は少ないポートで駆動するために、4bitでLCDを駆動した。4bitバスの初期設定を付録3に示す。

3.3.通信方式について

図13は送受信の波形である。上が送信側のPIC出力波形で、下は受信側のPIC入力波形である。送信側は38kHzの搬送波に乗せて信号が送られているが、受信側は搬送波が取り除かれているのがわかる。これは赤外線リモコン受信モジュールが搬送波を取り除いた信号を出力しているためである。製作物のブロック図を図12に、送受信の波形を図13に示す。

図12 製作物のブロック図

送信側は上の黄色い波形を送信し、受信側は赤外線リモコンモジュールの出力である下の青い波形を解析する。

図 13 製作物の波形

図14は図13の送信側のHi状態の信号を細かく見たものである。図を見ると約38kHzの信号になっていることがわかる。この信号が搬送波で、この信号でなければ赤外線リモコンモジュールは受信しない。

図14 38kHzの搬送波に乗せた信号

本研究では赤外線通信を行う。この通信ではHiを1、Lowを0とし、受信した信号を8bitのコマンドとして見る。 通信は図15のようになる。

図15 通信信号

図15の信号について説明する。

(1)スタート信号
通信開始の合図になる1bitの信号。信号は1。この信号を受信した時点で通信を開始する。
(2)パリティ信号
8bitの信号と信号の間に入る1bitの信号。信号は1。受信側は8bit受信するたびに1のパリティ信号をチェックする。パリティ信号によって受信信号のずれ、もしくはノイズをスタートと認識し通信し続けることを防ぐ。
(3)ストップ信号
通信終了の合図になる2bitの信号。信号は01。この信号を受信して通信を終了する。
(4)コマンド
何の通信を行うかを0と1で表した8bitの信号。受信機はこの信号を受け取り何の信号かを識別し、対応をする。しかし、本研究では送信機と受信機を別けて製作を行ったため使用していないが、受信機から送信機への通信は使用していない。
bit7 伝言か、通信か
0 伝言 1 通信
bit6 何から何への通信か
0 親機→子機
1 子機→親機
bit7-6 何から何への通信か
10 親機→子機
11 子機→親機
00 子機→子機(子機への伝言)
01 子機→子機(親機への伝言)
bit5 何回目の通信か
0 1回目
1 2回目
bit4 リクエスト
0 1以外の通信 1 親機の場合:データのリクエスト
子機の場合:データの送信
bit3、bit2、bit1、bit0は使用していない。通信をする際は常に0とする。
個体識別
この信号で個体を識別する。信号は8bitあるので、最大256個の機体を作ることが出来る。
データ識別
本研究の通信では2つのロータリースイッチの数字をデータとし受信機に集める。 2つのロータリースイッチの信号をI/Oポートから取り出し、そのまま受信機に送る。上位4bitと下位4bitがそれぞれのロータリースイッチの信号になっている。

3.4.プログラムについて

通信の方法の細かい説明は3.2.で行ったので、ここではプログラムの流れについて説明する。

(1)送信側について
送信側はスイッチを押されるまで常に待機状態にある。スイッチを押されると、3.2.にあるようにコマンド・個体識別・データ信号を赤外線で送信する。このときのプログラムをフローチャートとして図16に示す。また、プログラムを付録4に記載する。

図16 信号送信プログラムのフローチャート

次に、受信側について説明する。受信側は赤外線の信号受信するまで常に待機状態にある。信号を受信すると、受信したパリティビット以外の8bitを収納していく。そして収納した1回目と2回目の8bitの信号を比較し、同じならば信号識別信号で何のための通信なのかを確認する。例えば“1101000”という信号を受信したならば「送信機から受信機へのデータの送信」ということになる。この信号を受信した場合、LCDに何番の個体からどんなデータを受け取ったかをLCDに表示する。
受信機のプログラムをフローチャートとして図17に示す。また、プログラムを付録5に記載する。

図17 信号受信プログラムのフローチャート

4.まとめ

本研究ではセンサネットワークの基礎となる通信機構を製作し、PICマイコンと赤外線LED、赤外線受光モジュールを使用し、データの伝送実験を行った。この結果、一応赤外線でデータ通信が可能になった。本研究は最初の立ち上げにあたるため、当初の目的である自立式センサネットワーク自体の作成には至らなかったが、開発手法、設計などさまざまな基礎について得るものが大きかった。
簡易とは言え、他の研究室で使われている小型のセンサネットワーク機器に比べ、かなり安く作ることが出来た。今後は通信の高速化や機能充実を検討し、最終形態である安価な自立式センサネットワークの製作につなげていきたいと思う。

今回の製作を今後に生かす上で5つの課題がある。

@ノイズ対策
本研究の製作では光ノイズと原因不明ノイズがあった。今回はハードウェアとソフトウェアの両面から対策を行い、ノイズとスタートビットを間違えるような誤受信はなかった。しかし、2回受信した信号を比べたときに誤りを発見した場合の対策は十分ではなく、この場合もノイズと同じくエラーになってしまう。この場合の対策として誤り訂正などを取り入れたい。
A実センサへの対応
本研究ではセンサの代わりにロータリースイッチを使用した。しかし、温度センサ、湿度センサ、照度センサ、音など簡易に手に入るセンサが沢山ある。今はネットワーク通信の確立と低価格に重点を置き製作しているが、今後センサについても検討していきたい。
B送受信の統合
今回は簡略化のために送受信は分けて製作を行った。しかし、本来センサネットワークは送受信の機能を持ち、双方向通信を行わなくてはならない。
CPCとの通信
今回、通信データの表示にLCDを使用した。今後は収集したデータをPCに集められるようにしたい。PCへの通信は数年前まで赤外線ポートのついているPCがあったが最近は見当たらないので、USBの使用が良いと思われる。また、携帯電話の赤外線通信を利用し、携帯電話でデータの収集を行うことも検討したい。
Dアドホックネットワーク
@、B、Cを踏まえ、最終的には端末がアドホックネットワークで収集したデータをPCにまとめられるようにしたい。図18は最終的な製作目標図である。
図 18 アドホックネットワークの図

5.参考文献

6.付録

付録1 子機回路図
付録2 親機回路図
付録3 LCDの4bitコマンド初期設定
付録4 送信プログラム
付録5 受信プログラム