以下に添付図面を参照して、本発明にかかる通信装置、通信方法、通信プログラム、および通信システムの実施の形態を詳細に説明する。以降では、本発明にかかる通信装置の機能を有し、本発明にかかる通信システムを実現するセンサーノードを例に挙げるが、これに限らない。例えば、本発明にかかる通信装置は、センサーノード以外の通信装置にも適用可能である。
(センサーネットワーク内のセンサーノード間の通信例)
図1は、センサーネットワーク内のセンサーノード間の通信例を示す図である。図1(A)はセンサーネットワーク100の構成例を示し、図1(B)はセンサーネットワーク100内のセンサーノード101による通信の流れの一例を示す。
図1(A)に示すように、センサーネットワーク100は、所定の設置領域110内に配置されたチップ状の複数のセンサーノード101と、複数のセンサーノード101のセンサー出力を無線等により受信する親ノード102と、を含む通信システムである。設置領域110は、例えば、コンクリート、土、水、空気などの物質で満たされた領域である。または、設置領域110は、宇宙空間などの真空の領域であってもよい。
センサーノード101は、設置領域110内の各設置箇所における所定の変位量を検出し、検出したデータを無線通信により親ノード102に送信するコンピュータである。親ノード102は、設置領域110に設けられた複数のセンサーノード101から得られたデータを集約し、外部装置としてのサーバーへのデータのアップロードを行うコンピュータである。また、親ノード102は、外部装置としての利用者端末に対し設置箇所においてセンサーノード101が検出したデータの通知等を行ってもよい。また、親ノード102は、センサーノード101として動作してもよい。
センサーノード101(図1の黒丸)は、図1(A)に示すように、設置領域110内に大量に設置される。また、親ノード102(図1の白丸)は、設置領域110内のいずれかの箇所に1台設置される。センサーノード101は、近距離の無線通信能力、少なくとも隣接するセンサーノード101に到達可能な無線電波を出力できればよい。以降、無線電波の到達可能な範囲を「通信圏」と称す。このため、親ノード102から遠いセンサーノード101−1は、隣接する他の一つまたは複数のセンサーノード101−2を介してデータをリレー転送させる。
このとき、各センサーノード101は、消費電力を低減するために、内部のマイクロプロセッサ(MCU:Micro Control Unit)への電力供給を停止している場合がある。そのため、データの発信元になるセンサーノード101は、他のセンサーノードに起動指示を発信して、他のセンサーノードにデータの受信準備を完了させてから無線電波によってデータを発信することになる。各センサーノード101は、このリレー転送により、検出したデータを親ノード102に届ける(図1矢印参照)。
ここで、図1(B)を用いて、センサーノード101−1をデータの発信元とした場合について、センサーノード101−1がデータを発信する流れについて説明する。(1)まず、センサーノード101−1は、自装置の通信圏内に起動指示を発信する。これにより、センサーノード101−1は、自装置の通信圏内の他のセンサーノード101(図1の例ではセンサーノード101−2)に起動指示を受信させ、データの受信準備を開始させる。
(2)次に、センサーノード101−1は、起動指示に対する他のセンサーノード101からの応答に関わらず、所定の待機時間の経過を待つ。所定の待機時間とは、例えば、センサーノード101の製造ばらつき上の最長起動時間である。所定の待機時間は、例えば、センサーノード101−1内のROMに記憶されている。これにより、センサーノード101−1は、通信圏内の他のセンサーノード101がデータの受信準備を完了するのを待つ。
(3)一方で、センサーノード101−2は、起動指示を受信すると、自装置内のMCUを起動させ、MCUの起動時間を計測する。起動時間とは、起動指示を受信してからMCUがデータの受信準備を完了するまでの時間である。ここで、センサーノード101−2は、起動指示に対する応答をセンサーノード101−1に返さなくてもよい。
(4)その後、センサーノード101−1は、所定の待機時間が経過すると、自装置の通信圏内にデータを発信する。これにより、センサーノード101−1は、自装置の通信圏内の他のセンサーノード101(図1の例ではセンサーノード101−2)にデータを受信させる。
(5)一方で、センサーノード101−2は、データを受信すると、受信したデータに対する応答として、センサーノード101−2のMCUの起動時間を示す情報を含むデータをセンサーノード101−1に送信する。
(6)次に、センサーノード101−1は、(5)で送信された応答を受信すると、受信した応答から、センサーノード101−2のMCUの起動時間を示す情報を抽出する。そして、センサーノード101−1は、抽出した情報が示すセンサーノード101−2のMCUの起動時間を用いて、待機時間を製造ばらつき上の最長起動時間から短縮する。短縮後の待機時間は、例えば、センサーノード101−1内の不揮発メモリに記憶されている。
以降、センサーノード101−1は、(1)、(2)、および(4)と同様にして、センサーノード101−2に起動指示を発信し、不揮発メモリに記憶された短縮後の待機時間の経過を待ってから、センサーノード101−2にデータを発信する。このように、センサーノード101−1はセンサーノード101−2が受信準備を完了した直後にデータを発信することができ、待機時間を短縮することができる。また、センサーノード101−1は、待機時間を短縮することにより、消費電力を低減することができる。
また、センサーノード101−2は、起動指示に対する応答を送信しなくてもよいため、応答の送信にかかる消費電力を低減することができる。また、センサーノード101−2が応答を送信しない場合、センサーネットワーク100における通信量を低減することができ、通信の輻輳の発生を抑制することができる。また、センサーノード101−1は、待機時間を削減することにより、発生したイベントに対する処理時間を短縮することができる。
また、センサーノード101−1は、複数の応答を受信した場合は、複数の応答に含まれる情報が示す起動時間のうち、最長の起動時間を用いて待機時間を短縮してもよい。最長の起動時間を用いて待機時間を短縮する場合については、図21および図22を用いて後述する。また、センサーノード101−1は、複数の応答を受信した場合は、複数の応答に含まれる情報が示す起動時間のうち、所定番目に短い起動時間を用いて待機時間を短縮してもよい。所定番目に短い起動時間を用いて待機時間を短縮する場合については、図27〜図29を用いて後述する。
(センサーノード101の内部構成例)
次に、図2を用いて、図1に示したセンサーノード101の内部構成例について説明する。
図2は、センサーノード101の内部構成例を示すブロック図である。センサーノード101は、MCU201と、RAM(Random Access Memory)202と、ROM(Read Only Memory)203と、不揮発メモリ204と、タイマー205と、センサー206と、を含む。また、センサーノード101は、起動指示発信回路207と、起動指示受信回路208と、無線通信回路209と、アンテナ210と、を含む。また、センサーノード101は、ハーベスタ211と、バッテリ212と、PMU(Power Management Unit)213と、を含む。
MCU201は、センサーノード101全体の制御を司る。MCU201は、RAM202、ROM203、不揮発メモリ204、タイマー205、起動指示発信回路207、無線通信回路209、およびセンサー206に信号線を介して接続されている。
RAM202は、MCU201における処理の一時データを格納する。RAM202は、MCU201に信号線を介して接続されている。ROM203は、MCU201が実行する処理プログラム等(例えば、通信プログラム)を格納する。また、ROM203は、センサーノード101の製造ばらつき上の最長起動時間に基づく待機時間を格納してもよい。ROM203は、MCU201に信号線を介して接続されている。
不揮発メモリ204は、電力供給が途絶えたとき等においても書き込まれた所定のデータを保持する。また、不揮発メモリ204は、他のセンサーノード101の起動時間に基づく待機時間を格納してもよい。不揮発メモリ204は、MCU201に信号線を介して接続されている。
タイマー205は、クロック(CLK)により発生したパルス信号をカウントし、経過時間を測定する。タイマー205は、MCU201に信号線を介して接続されている。センサー206は、設置箇所における所定の変位量を検出する。センサー206は、例えば、設置箇所の圧力を検出する圧電素子や、光を検出する光電素子等を用いることができる。センサー206は、検出した変位量に基づいてイベントを発生する。センサー206は、MCU201およびPMU213に信号線を介して接続されている。
起動指示受信回路208は、アンテナ210を介して受信された起動指示を受信してPMU213に起動指示を送る。起動指示とは、他のセンサーノード101を起動させる所定の周波数の電波である。起動指示受信回路208は、例えば、起動指示となる所定の周波数の電波のみを検出する回路である。所定の周波数は、例えば、センサーネットワーク100の開発者によって決定される。
起動指示発信回路207は、アンテナ210を介して起動指示を発信する。起動指示発信回路207は、例えば、起動指示となる所定の周波数の電波のみをアンテナ210を介して発信する回路である。起動指示受信回路208と起動指示発信回路207とは、後述する無線通信回路209とは異なり、所定の周波数の電波のみを扱うため、無線通信回路209より消費電力が少ない。
無線通信回路(RF:Radio Frequency)209は、アンテナ210を介して受信された無線電波を受信信号としてMCU201に出力する。また、無線通信回路209は、発信信号を無線電波としてアンテナ210を介して発信する。無線通信回路209は、起動指示受信回路208および起動指示発信回路207とは異なり、所定の周波数幅の電波を発信し、または受信する回路である。無線通信回路209は、起動指示受信回路208と起動指示発信回路207より電波の周波数帯域が広いため、起動指示受信回路208と起動指示発信回路207より消費電力が多い。
アンテナ210は、電波を発信したり受信したりする。ここでは、アンテナ210は、起動指示受信回路208と、起動指示発信回路207と、無線通信回路209と、が共用しているが、これに限らない。例えば、センサーノード101は、起動指示受信回路208と、起動指示発信回路207と、無線通信回路209との各々に固有のアンテナを有してもよい。
ハーベスタ211は、センサーノード101の設置箇所における外部環境、例えば、光、振動、温度、無線電波(受信電波)等のエネルギー変化に基づき発電を行う。バッテリ212は、ハーベスタ211により発電された電力を蓄える。PMU213は、バッテリ212に蓄えられた電力を、センサーノード101の各部の駆動電源として供給する。換言すれば、センサーノード101は、二次電池や外部電源等が不要であり、動作に必要な電力をセンサーノード101内部で生成する。
センサーノード101は、例えば、バッテリ212に蓄えられた電力に制限があるため、イベントが発生するまでは、MCU201やROM203等への電力供給を停止しておき、消費電力を低減してもよい。例えば、センサーノード101は、MCU201と、RAM202と、ROM203と、不揮発メモリ204と、タイマー205と、起動指示発信回路207と、無線通信回路209と、への電力供給を停止しておく。
このとき、センサーノード101は、MCU201やROM203等への電力供給を開始するトリガを発生するセンサー206や起動指示受信回路208には、常時、電力供給を行っておく。また、センサー206は、センサー206自体において発生した起電力により動作可能であって、PMU213からの電力供給なしに動作可能であってもよい。同様に、起動指示受信回路208は、アンテナ210において発生した起電力により動作可能であって、PMU213からの電力供給なしに動作可能であってもよい。
(無線通信回路209によって送受信される信号)
次に、図3および図4を用いて、無線通信回路209によって送受信される信号の一例について説明する。無線通信回路209によって送受信される信号には、例えば、センサー206の検出結果を示すデータや、センサー206の検出結果を示すデータに対する応答がある。
<センサー206の検出結果を示すデータ>
図3は、センサー206の検出結果を示すデータの一例を示す説明図である。図3に示すように、データ300は、フラグ(符号301の領域)と、発信元ID(符号302の領域)と、データサイズ(符号303の領域)と、データ内容(符号304の領域)と、を含む。
フラグは、当該フラグを含む信号が、発信元から発信されたデータ300であるか、データ300に対する応答であるか、を識別する情報である。例えば、フラグは、当該フラグを含む信号が発信元から発信されたデータ300である場合には「0」となる。発信元IDは、信号の発信元のセンサーノード101の識別子である。データサイズは、データ内容のビット長やバイト長である。データ内容は、データ300の内容であり、例えば、センサー206の検出結果である。
<データ300に対する応答>
図4は、データ300に対する応答の一例を示す説明図である。図4に示すように、応答400は、フラグ(符号401の領域)と、発信元ID(符号402の領域)と、宛先ID(符号403の領域)と、起動時間(符号404の領域)と、を含む。
当該フラグを含む信号が、発信元から発信されたデータ300であるか、データ300に対する応答であるか、を識別する情報である。例えば、フラグは、当該フラグを含む信号がデータ300に対する応答である場合には「1」となる。発信元IDは、信号の発信元のセンサーノード101の識別子である。宛先IDは、データ300の発信元であって、応答400の宛先であるセンサーノード101の識別子である。起動時間は、応答400を発信するセンサーノード101の起動時間を示す情報である。
(通信装置として機能するセンサーノード101の機能的構成例)
次に、図5および図6を用いて、通信装置として機能するセンサーノード101の機能的構成例について説明する。以降では、発信側の通信装置としての機能と受信側の通信装置としての機能とを分けて説明するが、センサーノード101は発信側の通信装置としての機能と受信側の通信装置としての機能とを併せて有してもよい。
図5は、発信側の通信装置として機能するセンサーノード101の機能的構成例を示すブロック図である。発信側のセンサーノード101は、記憶部501と、第1の発信部502と、検出部503と、第2の発信部504と、受信部505と、格納部506と、を含む。
記憶部501は、受信部505によって他通信装置の起動にかかる時間を示す情報が受信される前には、他通信装置の最長起動時間以上の待機時間を記憶する。ここで、通信装置とは、例えば、センサーノード101である。起動にかかる時間とは、センサーノード101が起動指示を受信してから、データの受信準備が完了するまでの時間であって、例えば、上述した起動時間である。待機時間とは、他のセンサーノード101がMCU201を起動してデータ300の受信処理が可能になるまでの起動時間以上の時間である。最長起動時間とは、例えば、センサーノード101の製造ばらつき上での最長の起動時間である。
これにより、検出部503は、通信圏内の他のセンサーノード101が当該センサーノード101のMCU201を起動終了してデータ300の受信準備が完了するまでの待機時間が経過したことを検出することができる。記憶部501は、例えば、図2に示したMCU201内のレジスタ、ROM203、RAM202、不揮発メモリ204などの記憶装置により、その機能を実現する。
第1の発信部502は、通信圏内に起動指示を発信する。起動指示とは、上述したように、他のセンサーノード101を起動させる所定の周波数の電波であって、センサーノード101の起動指示受信回路208によって受信可能な周波数の電波である。これにより、第1の発信部502は、通信圏内の他のセンサーノード101に、当該センサーノード101のMCU201を起動するトリガを与えることができる。第1の発信部502は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、起動指示発信回路207により、その機能を実現する。
検出部503は、第1の発信部502によって起動指示が発信されてから、記憶部501に格納された待機時間が経過したことを検出する。検出部503は、例えば、第1の発信部502によって起動指示が発信された時点において、タイマー205によって計測された経過時間を取得する。次に、検出部503は、タイマー205によって計測される経過時間を監視し、タイマー205によって計測される経過時間が、取得した経過時間と待機時間との和以上になった場合に、待機時間が経過したことを検出する。
これにより、検出部503は、通信圏内の他のセンサーノード101が当該センサーノード101のMCU201を起動終了してデータ300の受信準備が完了したことを検出することができる。検出部503は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、タイマー205により、その機能を実現する。
第2の発信部504は、検出部503によって待機時間が経過したことが検出された場合に、通信圏内にデータ300を発信する。これにより、通信圏内の他のセンサーノード101は、第2の発信部504によって発信されたデータ300を受信することができる。第2の発信部504は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、無線通信回路209により、その機能を実現する。
受信部505は、通信圏内の他通信装置を起動させる起動指示を発信した場合に他通信装置の起動にかかる時間を示す情報を他通信装置から受信する。受信部505は、例えば、図4に示した応答400を受信し、応答400の符号404の領域から起動時間を抽出する。
これにより、格納部506は、通信圏内の他のセンサーノード101の起動時間を用いて待機時間を調整することができる。受信部505は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、無線通信回路209により、その機能を実現する。
格納部506は、受信部505によって受信された情報が示す時間に基づく待機時間を記憶部501に格納する。格納部506は、例えば、受信部505によって応答400の中から抽出された起動時間を、待機時間として記憶部501に格納する。これにより、格納部506は、待機時間として、センサーノード101の製造ばらつき上の最長起動時間より短い他のセンサーノード101の起動時間を採用して、待機時間を短縮することができる。また、検出部503は、待機時間が短縮されても、他のセンサーノード101がデータの受信準備を完了するまで待つことができる。
また、格納部506は、例えば、受信部505によって応答400の中から抽出された起動時間と、経年劣化等による起動時間の変動に対応するための所定時間と、の和を、待機時間として記憶部501に格納してもよい。これにより、検出部503は、他のセンサーノード101の起動時間が経年劣化等により長くなった場合でも、他のセンサーノード101がデータの受信準備を完了するまで待つことができる。
また、格納部506は、受信部505によって複数の他通信装置から情報が受信された場合に、受信された各々の情報が示す時間の中で最長の時間に基づく待機時間を記憶部501に格納してもよい。これにより、第2の発信部504は、通信圏内のセンサーノード101の全てが起動してからデータ300を発信することができる。
また、格納部506は、受信部505によって複数の他通信装置から情報が受信された場合に、受信された各々の情報が示す時間の中で所定番目に短い時間に基づく待機時間を記憶部501に格納してもよい。ここで、所定番目とは、例えば、センサーネットワーク100の構成に使用するセンサーノード101の個数番目を示す。センサーネットワーク100の構成に使用するセンサーノード101の個数は、例えば、センサーネットワーク100の開発者によって決定される。
これにより、第2の発信部504は、通信圏内のセンサーノード101のうち、センサーネットワーク100の構成に使用する個数のセンサーノード101が起動した時点で、データ300を発信することができる。従って、格納部506は、待機時間を短縮することができる。
また、格納部506は、第2の発信部504によって発信されたデータ300に対する他通信装置からの応答400が所定数以下である場合に、記憶部501に記憶された待機時間を延長してもよい。所定数とは、例えば、センサーネットワーク100の構成に使用するセンサーノード101の個数である。所定数とは、例えば、センサーネットワーク100の開発者によって決定される。また、所定数は、例えば、前回にデータ300の通信を行ったセンサーノード101の個数であり、可変であってもよい。
これにより、センサーノード101は、通信圏内のセンサーノード101が起動する前に第2の発信部504によってデータ300を発信してしまった場合に、待機時間を延長することができる。格納部506は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、その機能を実現する。
以降では、発信側のセンサーノード101は、格納部506によって記憶部501に格納された待機時間を用いて、データを発信することになる。これにより、発信側のセンサーノード101は、通信圏内の他のセンサーノード101がデータ300の受信準備を完了するまでの適切な待機時間を用いてデータを発信することができる。従って、発信側のセンサーノード101は、待機時間が低減されたことにより、消費電力を低減することができる。
図6は、受信側の通信装置として機能するセンサーノード101の機能的構成例を示すブロック図である。受信側のセンサーノード101は、受信部601と、起動部602と、計測部603と、送信部604と、を含む。
受信部601は、起動指示を発信してから所定の待機時間経過後にデータ300を発信する発信元から起動指示を受信する。発信元とは、上述した発信側の機能を有する通信装置であって、例えば、センサーノード101である。受信部601は、例えば、他のセンサーノード101から起動指示を受信する。これにより、起動部602は、プロセッサを起動するトリガを得ることができる。受信部601は、例えば、図2に示した起動指示受信回路208により、その機能を実現する。
起動部602は、受信部601によって起動指示が受信された場合に自装置内のプロセッサを起動する。プロセッサとは、データ300の受信処理を実行する装置であって、例えば、センサーノード101のMCU201である。起動部602は、例えば、受信部601によって起動指示が受信された場合にPMU213にMCU201への電力供給を開始させる要求を送信する。これにより、MCU201は起動することができる。起動部602は、例えば、図2に示した起動指示受信回路208およびPMU213により、その機能を実現する。
計測部603は、受信部601によって起動指示が受信されてから、起動部602によって起動されたプロセッサによるデータ300の受信処理が可能になるまでの時間を計測する。受信部601によって起動指示が受信されてから、起動部602によって起動されたプロセッサによるデータ300の受信処理が可能になるまでの時間とは、例えば、上述した起動時間である。
これにより、計測部603は、実際の起動時間を取得することができる。計測部603は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、タイマー205により、その機能を実現する。
送信部604は、計測部603によって計測された時間を示す情報を発信元に送信する。送信部604は、例えば、発信側の機能を有するセンサーノード101に対して、自装置の起動時間を含む図4の応答400を送信する。
これにより、発信側のセンサーノード101は、上述した受信部505および格納部506によって、待機時間を調整することができる。送信部604は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、無線通信回路209により、その機能を実現する。
(センサーノード101間の通信例)
次に、図7〜図20を用いて、センサーノード101間の通信例について説明する。図7〜図16は、センサーノード101間の初回の通信例を示す説明図である。図17〜図20は、センサーノード101間の2回目以降の通信例を示す説明図である。ここで、図7〜図20では、センサーノード101−1を発信側の機能を有する通信装置とし、センサーノード101−2を受信側の機能を有する通信装置とする。また、図7〜図20において、センサーノード101−1とセンサーノード101−2とは互いに通信圏内に存在するとする。
以降では、図2に示したセンサーノード101内部の構成について、センサーノード101−1側では接尾語「−1」を付与し、センサーノード101−2側では接尾語「−2」を付与し、各々を識別する。例えば、MCU201−1はセンサーノード101−1側のMCU201を示し、MCU201−2はセンサーノード101−2側のMCU201を示す。
<初回の通信例>
まず、図7〜図16を用いて、初回の通信例について説明する。ここでは、センサーノード101−1は、MCU201−1やROM203−1等への電力供給を停止しているとする。センサーノード101−2は、同様に、MCU201−2やROM203−2等への電力供給を停止しているとする。
図7において、(11)センサー206−1は、所定の変位量を検出してイベントを発生する。センサー206−1は、例えば、検出した温度が閾値を超えた場合にイベントを発生する。(12)センサー206−1は、イベントを発生すると、電力供給の開始要求をPMU213−1に送信する。次に、図8の説明に移行する。
図8において、(13)PMU213−1は、電力供給の開始要求を受信すると、MCU201−1やROM203−1等への電力供給を開始する。これにより、MCU201−1は起動を開始する。また、タイマー205−1は経過時間の計測を開始する。次に、図9の説明に移行する。
図9において、MCU201−1は、起動してデータ300の受信準備を完了すると、発生したイベントに応じた処理を実行する。ここで、MCU201−1は、処理結果を、通信圏内の他のセンサーノード101を介して、親ノード102にリレー転送することになる。
(14)そのために、MCU201−1は、通信圏内のセンサーノード101を起動させる起動指示の発信要求を、起動指示発信回路207−1に送信する。(15)起動指示発信回路207−1は、発信要求を受信すると、アンテナ210−1を介して起動指示を通信圏内に発信する。
(16)また、MCU201−1は、発信要求を送信すると、ROM203−1から、センサーノード101の製造ばらつき上の最長起動時間である待機時間を読み出す。(17)また、MCU201−1は、タイマー205−1から発信要求を送信した時点での経過時間を取得する。次に、図10の説明に移行する。
図10において、(18)起動指示受信回路208−2は、アンテナ210−2を介して、センサーノード101−1が発信した起動指示を受信する。(19)起動指示受信回路208−2は、起動指示を受信すると、PMU213−2に電力供給の開始要求を送信する。次に、図11の説明に移行する。
図11において、(20)PMU213−2は、電力供給の開始要求を受信すると、MCU201−2やROM203−2等への電力供給を開始する。これにより、MCU201−2は起動を開始する。また、タイマー205−2は経過時間の計測を開始する。次に、図12の説明に移行する。
図12において、(21)MCU201−2は、起動を完了した時点でタイマー205−2により計測された経過時間を取得する。(22)次に、MCU201−2は、計測された経過時間を、MCU201−2の起動時間として、不揮発メモリ204−2に格納しておく。次に、図13の説明に移行する。
図13において、(23)MCU201−1は、タイマー205−1により計測される経過時間を取得する。次に、MCU201−1は、取得した経過時間と(17)で取得した発信要求を送信した時点での経過時間とを用いて、(16)で読み出した待機時間が経過したか否かを判定する。ここでは、待機時間が経過したとする。
(24)MCU201−1は、待機時間が経過したと判定すると、処理結果の発信要求を、無線通信回路209−1に送信する。(25)無線通信回路209−1は、発信要求を受信すると、アンテナ210−1を介して処理結果を通信圏内に発信する。次に、図14の説明に移行する。
図14において、(26)無線通信回路209−2は、アンテナ210−2を介して、センサーノード101−1が発信した処理結果を受信する。(27)無線通信回路209−2は、処理結果を受信すると、処理結果をMCU201−2に送信する。次に、図15の説明に移行する。
図15において、(28)MCU201−2は、処理結果を受信すると、(22)で格納しておいたMCU201−2の起動時間を不揮発メモリ204−2から読み出す。(29)次に、MCU201−2は、読み出したMCU201−2の起動時間を含む応答400を生成する。そして、MCU201−2は、生成した応答400の発信要求を、無線通信回路209−2に送信する。(30)無線通信回路209−2は、発信要求を受信すると、アンテナ210−2を介して応答400を通信圏内に発信する。次に、図16の説明に移行する。
図16において、(31)無線通信回路209−1は、アンテナ210−1を介して、センサーノード101−2が発信した応答400を受信する。(32)無線通信回路209−1は、応答400を受信すると、応答400をMCU201−1に送信する。
(33)MCU201−1は、応答400を受信すると、応答400の中からMCU201−2の起動時間を抽出する。次に、MCU201−1は、抽出した起動時間を、新たな待機時間として不揮発メモリ204−1に格納しておく。このようにして、センサーノード101は、通信圏内の他のセンサーノード101にデータ300を受信させ、データ300の通信を行う。また、(31)において複数の応答が受信された場合については、図21および図22を用いて、または、図27〜図29を用いて後述する。
その後、センサーノード101−1は、データ300の通信が終了すると、MCU201−1やROM203−1等への電力供給を停止する。センサーノード101−2は、同様に、データ300の通信が終了すると、MCU201−2やROM203−2等への電力供給を停止する。これにより、センサーノード101は、消費電力を低減することができる。
<2回目以降の通信例>
次に、図17〜図20を用いて、2回目以降の通信例について説明する。ここでは、センサーノード101−1は、MCU201−1やROM203−1等への電力供給を停止しているとする。センサーノード101−2は、同様に、MCU201−2やROM203−2等への電力供給を停止しているとする。
図17において、(34)センサー206−1は、(11)と同様に、再びイベントを発生したとする。(35)センサー206−1は、イベントを発生すると、電力供給の開始要求をPMU213−1に送信する。次に、図18の説明に移行する。
図18において、(36)PMU213−1は、電力供給の開始要求を受信すると、MCU201−1やROM203−1等への電力供給を開始する。これにより、MCU201−1は起動を開始する。また、タイマー205−1は経過時間の計測を開始する。次に、図19の説明に移行する。
図19において、MCU201−1は、起動してデータ300の受信準備を完了すると、発生したイベントに応じた処理を実行する。ここで、MCU201−1は、処理結果を、通信圏内の他のセンサーノード101を介して、親ノード102にリレー転送することになる。
(37)そのために、通信圏内のセンサーノード101を起動させる起動指示の発信要求を、起動指示発信回路207−1に送信する。(38)起動指示発信回路207−1は、発信要求を受信すると、アンテナ210−1を介して起動指示を通信圏内に発信する。
(39)また、MCU201−1は、発信要求を送信すると、不揮発メモリ204−1から(33)で格納しておいたMCU201−2の起動時間を読み出す。次に、MCU201−1は、読み出した起動時間を待機時間として設定する。(40)また、MCU201−1は、タイマー205−1から発信要求を送信した時点での経過時間を取得する。
ここで、センサーノード101−2は、図10〜図12と同様に、(38)で発信した起動指示を受信して、MCU201−2を起動させているとする。次に、図20の説明に移行する。
図20において、(41)MCU201−1は、タイマー205−1により計測される経過時間を取得する。次に、MCU201−1は、取得した経過時間と(40)で取得した発信要求を送信した時点での経過時間とを用いて、(39)で設定した待機時間が経過したか否かを判定する。ここでは、待機時間が経過したとする。
(42)MCU201−1は、待機時間が経過したと判定すると、処理結果の発信要求を、無線通信回路209−1に送信する。(43)無線通信回路209−1は、発信要求を受信すると、アンテナ210−1を介して処理結果を通信圏内に発信する。
以降、図14、図15と同様にして、センサーノード101−2は、応答400を発信する。また、図16と同様にして、センサーノード101−1は、応答400を受信する。このようにして、センサーノード101は、通信圏内の他のセンサーノード101にデータ300を受信させ、データ300の通信を行う。その後、センサーノード101−1は、データ300の通信が終了すると、MCU201−1やROM203−1等への電力供給を停止する。センサーノード101−2は、同様に、データ300の通信が終了すると、MCU201−2やROM203−2等への電力供給を停止する。
これにより、センサーノード101−1は、センサーノード101−2が受信準備を完了した直後にデータ300を発信することができ、待機時間を削減することができる。また、センサーノード101−1は、待機時間を削減することにより、MCU201−1やROM203−1等へ電力供給する時間を短縮することができ、消費電力を低減することができる。
また、センサーノード101−2は、起動指示に対する応答を送信しなくてもよいため、応答の発信にかかる消費電力を削減することができる。また、センサーノード101−1は、待機時間を削減することにより、発生したイベントに対する処理時間を短縮することができる。
センサーノード101は、既にMCU201が起動している場合に起動指示を受信した場合、タイマー205による経過時間の計測をしなくてもよく、不揮発メモリ204に記憶した起動時間を発信すればよい。
(複数のセンサーノード101から応答400を受信した場合の待機時間の設定例1)
次に、図21および図22を用いて、センサーノード101が、複数のセンサーノード101から応答400を受信した場合の待機時間の設定例1について説明する。
図21および図22は、複数のセンサーノード101から応答400を受信した場合の待機時間の設定例1を示す説明図である。図21において、(51)センサーノード101−1は、通信圏内に起動指示を発信する。これにより、センサーノード101−2〜101−6は、起動指示を受信する。(52)次に、センサーノード101−1は、通信圏内にデータ300を発信する。これにより、センサーノード101−2〜101−6は、データ300を受信する。次に、図22の説明に移行する。
図22において、(53)センサーノード101−2は、起動時間「30ms(milli second)」を含む応答400をセンサーノード101−1に送信する。(54)センサーノード101−1は、センサーノード101−2から送信された応答400を受信し、受信した応答400の中から起動時間「30ms」を抽出する。そして、センサーノード101−1は、抽出した起動時間「30ms」を待機時間として採用し、不揮発メモリ204に格納する。
(55)また、センサーノード101−3は、起動時間「32ms」を含む応答400をセンサーノード101−1に送信する。(56)センサーノード101−1は、センサーノード101−3から送信された応答400を受信し、受信した応答400の中から起動時間「32ms」を抽出する。
次に、センサーノード101−1は、不揮発メモリ204に格納された待機時間「30ms」と抽出した起動時間「32ms」とを比較する。そして、センサーノード101−1は、比較した結果、現在の待機時間より起動時間が長いため、待機時間「30ms」を「32ms」に更新して、不揮発メモリ204に格納する。
(57)また、センサーノード101−4は、起動時間「35ms」を含む応答400をセンサーノード101−1に送信する。(58)センサーノード101−1は、(55)と同様にして、起動時間「35ms」を抽出し、現在の待機時間より起動時間が長いため、待機時間「32ms」を「35ms」に更新して、不揮発メモリ204に格納する。
(59)また、センサーノード101−5は、起動時間「39ms」を含む応答400をセンサーノード101−1に送信する。(60)センサーノード101−1は、(55)と同様にして、起動時間「39ms」を抽出し、現在の待機時間より起動時間が長いため、待機時間「35ms」を「39ms」に更新して、不揮発メモリ204に格納する。
(61)また、センサーノード101−6は、起動時間「38ms」を含む応答400をセンサーノード101−1に送信する。(62)センサーノード101−1は、センサーノード101−6から送信された応答400を受信し、受信した応答400の中から起動時間「38ms」を抽出する。次に、センサーノード101−1は、不揮発メモリ204に格納された待機時間「39ms」と抽出した起動時間「38ms」とを比較する。そして、センサーノード101−1は、比較した結果、現在の待機時間より起動時間が短いため、待機時間「39ms」を更新しない。
これにより、センサーノード101−1は、通信圏内のセンサーノード101−2〜101−6が起動して受信準備を完了するまでの待機時間を決定して、不揮発メモリ204に記憶しておくことができる。結果として、センサーノード101−1は、決定した待機時間を用いてデータ300を発信することにより、データ300をセンサーノード101−2〜101−6に受信させることができる。
(設定例1を採用した場合のデータ発信処理)
次に、図23を用いて、設定例1を採用した場合のセンサーノード101によるデータ発信処理について説明する。データ発信処理は、図5に示した発信側の機能を有するセンサーノード101が実行する処理であり、例えば、図7〜図20に示したセンサーノード101−1により実行される。
図23は、設定例1を採用した場合のセンサーノード101によるデータ発信処理の一例を示すフローチャートである。図23において、まず、センサーノード101は、起動指示を発信する(ステップS2301)。次に、センサーノード101は、図24の処理により待機時間を設定する(ステップS2302)。
そして、センサーノード101は、待機時間が経過したか否かを判定する(ステップS2303)。ここで、待機時間が経過していない場合(ステップS2303:No)、センサーノード101は、ステップS2303の処理に戻り、待機時間の経過を待つ。
一方、待機時間が経過した場合(ステップS2303:Yes)、センサーノード101は、データ300を発信する(ステップS2304)。そして、センサーノード101は、データ発信処理を終了する。これにより、センサーノード101は、通信圏内の他のセンサーノード101を起動させ、他のセンサーノード101の受信準備の完了後にデータ300の発信をすることができる。結果として、センサーノード101は、通信圏内の他のセンサーノード101にデータ300を受信させることができる。
(設定例1を採用した場合の待機時間設定処理)
次に、図24を用いて、設定例1を採用した場合のセンサーノード101による待機時間設定処理について説明する。待機時間設定処理は、ステップS2302において実行される処理である。
図24は、設定例1を採用した場合のセンサーノード101による待機時間設定処理の一例を示すフローチャートである。図24において、まず、センサーノード101は、不揮発メモリ204から待機時間を探索する(ステップS2401)。次に、センサーノード101は、待機時間が探索できたか否かを判定する(ステップS2402)。
ここで、探索できなかった場合(ステップS2402:No)、センサーノード101は、ROM203からセンサーノード101の最長起動時間である待機時間を探索し(ステップS2403)、ステップS2404の処理に移行する。
一方、探索できた場合(ステップS2402:Yes)、センサーノード101は、探索した待機時間を設定する(ステップS2404)。そして、センサーノード101は、待機時間設定処理を終了する。これにより、センサーノード101は、初回の通信時および2回目以降の通信時に待機時間を設定することができる。
(設定例1を採用した場合のデータ受信処理)
次に、図25および図26を用いて、設定例1を採用した場合のセンサーノード101によるデータ受信処理について説明する。データ受信処理は、図5に示した発信側の機能を有するセンサーノード101、および図6に示した受信側の機能を有するセンサーノード101が実行する処理である。データ受信処理は、例えば、図7〜図20に示したセンサーノード101−1およびセンサーノード101−2により実行される。
図25および図26は、設定例1を採用した場合のセンサーノード101によるデータ受信処理の一例を示すフローチャートである。図25において、まず、センサーノード101は、信号を受信する(ステップS2501)。次に、センサーノード101は、受信した信号の中からフラグを抽出する(ステップS2502)。
そして、センサーノード101は、抽出したフラグが応答400を示すか否かを判定する(ステップS2503)。ここで、応答400を示す場合(ステップS2503:Yes)、センサーノード101は、図26のステップS2601の処理に移行する。
一方、応答400を示さない場合(ステップS2503:No)、センサーノード101は、受信した信号がデータ300であると特定し、データ300の中から発信元IDを抽出する(ステップS2504)。
次に、センサーノード101は、受信したデータ300を処理する(ステップS2505)。データ300の処理とは、例えば、データ300のリレー転送の処理でもよいし、データ300のデータ内容の解析処理でもよい。また、データ300の処理とは、例えば、外部装置としてのサーバーへのデータ300のアップロード処理でもよいし、外部装置としての利用者端末に対するデータ300の通知処理でもよい。
そして、センサーノード101は、抽出した発信元IDが示すセンサーノード101に対して、自装置の起動時間を含む応答400を送信する(ステップS2506)。次に、センサーノード101は、データ受信処理を終了する。上述したステップS2501〜ステップS2506を経由する処理により、センサーノード101は、他のセンサーノード101から発信されたデータ300を処理し、当該データ300に対する応答400を発信することができる。
次に、図26の説明に移行する。図26において、センサーノード101は、受信した信号が応答400であると特定し、応答400の中から宛先IDを抽出する(ステップS2601)。次に、センサーノード101は、宛先IDが自装置のIDであるか否かを判定する(ステップS2602)。ここで、自装置のIDでない場合(ステップS2602:No)、センサーノード101は、データ受信処理を終了する。
一方、自装置のIDである場合(ステップS2602:Yes)、センサーノード101は、受信した応答400の中から起動時間を抽出する(ステップS2603)。次に、センサーノード101は、不揮発メモリ204から待機時間を探索する(ステップS2604)。
そして、センサーノード101は、探索できたか否かを判定する(ステップS2605)。ここで、探索できなかった場合(ステップS2605:No)、センサーノード101は、ステップS2608の処理に移行する。
一方、探索できた場合(ステップS2605:Yes)、センサーノード101は、探索された待機時間を取得する(ステップS2606)。次に、センサーノード101は、取得した待機時間が抽出した起動時間より短いか否かを判定する(ステップS2607)。ここで、短くない場合(ステップS2607:No)、センサーノード101は、データ受信処理を終了する。
一方、短い場合(ステップS2607:Yes)、センサーノード101は、待機時間を抽出した起動時間で上書きして更新する(ステップS2608)。次に、センサーノード101は、データ受信処理を終了する。上述したステップS2601〜ステップS2608を経由する処理により、センサーノード101は、自装置から発信したデータ300に対する応答400を処理し、待機時間を更新することができる。
(複数のセンサーノード101から応答400を受信した場合の待機時間の設定例2)
次に、図27〜図29を用いて、センサーノード101が、複数のセンサーノード101から応答400を受信した場合の待機時間の設定例2について説明する。
図27は、センサーノード101の密集度合いを示す説明図である。図27に示すように、センサーネットワーク100において、センサーノード101はランダムに設置される。そのため、設置場所によって、センサーノード101の密集度合いにばらつきが生じることがある。
例えば、センサーノード101−1の通信圏2701内には5つのセンサーノード101(センサーノード101−2〜101−6)が存在する。また、センサーノード101−7の通信圏2702内には3つのセンサーノード101(センサーノード101−8〜101−10)が存在する。
ここで、センサーノード101は、通信圏2701内のセンサーノード101全てにデータ300を受信させなくてもよい場合がある。例えば、センサーノード101−1は、通信圏2701内の5つのセンサーノード101のうち、3つのセンサーノード101にデータ300を受信させればよい場合がある。この場合、センサーノード101−1は、通信圏2701内の5つのセンサーノード101が受信準備を完了するまで待機しなくても、3つのセンサーノード101が受信準備を完了するまで待機すれば、データ300を発信することができる。
このため、センサーノード101−1は、通信圏2701内のセンサーノード101の起動時間のうち3番目に短い起動時間を待機時間として採用することにより、3つのセンサーノード101が受信準備を完了するまで待機するようにしてもよい。この場合、センサーノード101−1は、通信圏2701内のセンサーノード101の起動時間のうち最長の起動時間を待機時間として採用した場合より、待機時間を短縮することができる。
ここで、センサーノード101は、例えば、通信圏2701内のセンサーノード101の起動時間のうち3番目に短い起動時間を待機時間とて採用するために、図28に示す起動時間テーブルを使用する。
図28は、起動時間テーブルの記憶内容の一例を示す説明図である。起動時間テーブルは、所定数のセンサーノード101が受信準備を完了するまでの待機時間を採用するために、所定数のセンサーノード101の起動時間を記憶する。起動時間テーブルは、例えば、ROM203やRAM202や不揮発メモリ204等の記憶装置によって実現される。
図28に示すように、起動時間テーブル2800は、ノードID項目に関連付けて、起動時間項目を有し、センサーノード101ごとに各項目に情報が設定されることにより、所定数以内のレコード(図28の例では、3つのレコード2801〜2803)を構成する。
ノードID項目には、センサーノード101の識別子が記憶される。起動時間項目には、ノードID項目の識別子が示すセンサーノード101の起動時間が記憶される。例えば、レコード2801は、センサーノード101−2の起動時間が「30ms」であることを示す情報である。
図29は、起動時間テーブル2800を使用した待機時間の設定例2を示す説明図である。図29において、センサーノード101−1は、図21と同様に、通信圏内に起動指示を発信した後、データ300を発信しているとする。
(71)ここで、センサーノード101−2は、起動時間「30ms」を含む応答400をセンサーノード101−1に送信する。(72)センサーノード101−1は、センサーノード101−2から送信された応答400を受信し、受信した応答400の中から起動時間「30ms」を抽出する。そして、センサーノード101−1は、応答400の発信元のセンサーノード101−2のID「101−2」と、抽出した起動時間「30ms」と、を関連付けたレコードを起動時間テーブル2800に記憶する。
(73)また、センサーノード101−3は、起動時間「32ms」を含む応答400をセンサーノード101−1に送信する。(74)センサーノード101−1は、(72)と同様に、応答400の発信元のセンサーノード101−3のID「101−3」と、抽出した起動時間「32ms」と、を関連付けたレコードを起動時間テーブル2800に記憶する。
(75)また、センサーノード101−4は、起動時間「35ms」を含む応答400をセンサーノード101−1に送信する。(76)センサーノード101−1は、(72)と同様に、応答400の発信元のセンサーノード101−4のID「101−4」と、抽出した起動時間「35ms」と、を関連付けたレコードを起動時間テーブル2800に記憶する。
(77)また、センサーノード101−5は、起動時間「39ms」を含む応答400をセンサーノード101−1に送信する。(78)センサーノード101−1は、センサーノード101−5から送信された応答400を受信し、受信した応答400の中から起動時間「39ms」を抽出する。ここで、センサーノード101−1は、起動時間テーブル2800のレコードが3つになっているため、起動時間テーブル2800に各レコードの起動時間と、抽出した起動時間「39ms」とを比較する。次に、センサーノード101−1は、比較した結果、各レコードの起動時間より抽出した起動時間が長いため、待機時間「39ms」に関するレコードを生成しない。
(79)また、センサーノード101−6は、起動時間「38ms」を含む応答400をセンサーノード101−1に送信する。(80)センサーノード101−1は、(78)と同様に、起動時間テーブル2800に各レコードの起動時間と、抽出した起動時間「38ms」とを比較する。次に、センサーノード101−1は、比較した結果、各レコードの起動時間より抽出した起動時間が長いため、待機時間「38ms」に関するレコードを生成しない。
これにより、センサーノード101−1は、通信圏内のセンサーノード101−2〜101−6の起動時間のうち、1番目〜3番目に短い起動時間を起動時間テーブル2800に記憶しておく。そして、センサーノード101−1は、起動時間テーブル2800に記憶された3番目に短い起動時間を待機時間として採用する。
これにより、センサーノード101−1は、通信圏内の3つのセンサーノード101が受信準備を完了するまでの待機時間を決定して、不揮発メモリ204に記憶しておくことができる。結果として、センサーノード101−1は、決定した待機時間を用いてデータ300を発信することにより、データ300を3つのセンサーノード101に受信させることができる。
また、センサーノード101は、起動時間テーブル2800に起動時間が記憶されたセンサーノード101から応答400を受信した場合は、起動時間テーブル2800に記憶された起動時間を、受信した応答に含まれる起動時間で更新してもよい。これにより、センサーノード101は、起動時間テーブル2800の起動時間を最新の状態に交信することができる。
(設定例2を採用した場合のデータ発信処理)
次に、設定例2を採用した場合のセンサーノード101によるデータ発信処理について説明する。設定例2を採用した場合のデータ発信処理は、図23に示した設定例1を採用した場合のデータ発信処理と同様のため、ここでは説明を省略する。
(設定例2を採用した場合の待機時間設定処理)
次に、設定例2を採用した場合のセンサーノード101による待機時間設定処理について説明する。設定例2を採用した場合の待機時間設定処理は、図24に示した設定例1を採用した場合の待機時間設定処理とステップS2402〜S2404は同様のため、ステップS2401について説明する。
設定例2では、ステップS2401において、センサーノード101は、起動時間テーブル2800の中で、最長の起動時間を探索する。これにより、センサーノード101は、通信圏内のセンサーノード101のうち、所定数のセンサーノード101が受信準備を完了するまでの待機時間を設定することができる。
(設定例2を採用した場合のデータ受信処理)
次に、図30を用いて、設定例2を採用した場合のセンサーノード101によるデータ受信処理について説明する。設定例2を採用した場合のデータ受信処理は、図25および図26に示した設定例1を採用した場合のデータ受信処理とステップS2501〜S2506,S2601〜S2602,S2602:Noの分岐先の処理は同様である。そのため、ここでは、図26に示したステップS2602:Yesの分岐先における設定例2を採用した場合の処理について説明する。
図30は、設定例2を採用した場合のセンサーノード101によるデータ受信処理の一例を示すフローチャートである。図30において、センサーノード101は、受信した応答400の中から、発信元IDと起動時間とを抽出する(ステップS3001)。
次に、センサーノード101は、起動時間テーブル2800の中からレコードを探索する(ステップS3002)。そして、センサーノード101は、探索できたか否かを判定する(ステップS3003)。ここで、探索できなかった場合(ステップS3003:No)、センサーノード101は、起動時間テーブル2800に抽出した発信元IDと起動時間とを関連付けたレコードを追加し(ステップS3004)、データ受信処理を終了する。
一方、探索できた場合(ステップS3003:Yes)、センサーノード101は、起動時間テーブル2800の各レコードのノードID項目と発信元IDとを比較する(ステップS3005)。次に、センサーノード101は、比較した結果、一致したか否かを判定する(ステップS3006)。ここで、一致した場合(ステップS3006:Yes)、センサーノード101は、一致したレコードの起動時間項目を抽出した起動時間で上書き更新して(ステップS3007)、データ受信処理を終了する。
一方、一致しない場合(ステップS3006:No)、センサーノード101は、起動時間テーブル2800のレコード数を取得する(ステップS3008)。次に、センサーノード101は、レコード数が上限未満か否かを判定する(ステップS3009)。ここで、上限未満である場合(ステップS3009:Yes)、センサーノード101は、起動時間テーブル2800に抽出した発信元IDと起動時間とを関連付けたレコードを追加して(ステップS3010)、データ受信処理を終了する。
一方、上限以上である場合(ステップS3009:No)、センサーノード101は、起動時間テーブル2800の各レコードの中で最長の起動時間を待機時間として取得する(ステップS3011)。次に、センサーノード101は、取得した待機時間が抽出した起動時間より短いか否かを判定する(ステップS3012)。ここで、短くない場合(ステップS3012:No)、センサーノード101は、データ受信処理を終了する。
一方、短い場合(ステップS3012:Yes)、センサーノード101は、起動時間テーブル2800の各レコードのうち最長の起動時間のレコードを削除し、発信元IDと起動時間とを関連付けたレコードを起動時間テーブル2800に追加する(ステップS3013)。そして、センサーノード101は、データ受信処理を終了する。これにより、センサーノード101は、通信圏内のセンサーノード101の起動時間を短い順に所定数記憶しておくことができる。
以上説明したように、開示の通信装置(例えば、センサーノード101)は、予め通信圏内の他の通信装置から送信された他の通信装置の起動時間に基づく待機時間を設定しておき、通信圏内に起動指示を発信した後、設定した待機時間が経過した場合に通信圏内にデータ300を発信する。これにより、開示の通信装置は、他の通信装置がデータ300の受信準備を完了した後に、他の通信装置にデータ300を受信させることができる。
従って、通信装置は、待機時間を固定した場合に比べて、待機時間を短縮することができ、消費電力を低減することができる。また、開示の通信装置は、起動指示に対する応答を受信しなくてもデータ300を発信することができるため、通信圏内に他の通信装置が何個あるかを特定しなくてもよい。
また、他の通信装置は、起動指示に対する応答を送信しなくてもよい。これにより、他の通信装置は、応答400の送信処理を削減することができ、処理量を低減して消費電力を低減することができる。また、開示の通信装置は、起動指示に対する応答の受信によりデータ300を発信する場合と比べて、起動指示に対する応答の受信にかかる時間を削減して、待機時間を短縮することができ、消費電力を低減することができる。
また、開示の通信装置は、初回の通信時には、通信装置の製造ばらつき上の最長起動時間に基づく待機時間を設定しておき、通信圏内に起動指示を発信した後、設定した待機時間が経過した場合に通信圏内にデータ300を発信する。これにより、開示の通信装置は、初回の通信時にも、通信圏内の他の通信装置がデータ300の受信準備を完了した後に、他の通信装置にデータ300を受信させることができる。また、開示の通信装置は、起動指示に対する応答を受信しなくてもデータ300を発信することができるため、通信圏内に他の通信装置が何個あるかを特定しなくてもよい。
また、開示の通信装置は、通信圏内に他の通信装置が複数ある場合は、各々の他の通信装置の起動時間のうち最長の起動時間に基づく待機時間を設定する。これにより、開示の通信装置は、各々の他の通信装置にデータ300を受信させることができる。
また、開示の通信装置は、通信圏内に他の通信装置が複数ある場合は、各々の他の通信装置の起動時間のうち所定番目に短い起動時間に基づく待機時間を設定する。これにより、開示の通信装置は、待機時間が短い順で所定番目までの他の通信装置にデータ300を受信させることができる。
また、開示の通信装置は、発信したデータ300に対する応答400が所定数以下である場合に、設定した待機時間を延長する。これにより、開示の通信装置は、他の通信装置が経年劣化等により起動時間が長くなった場合に、待機時間を延長して他の通信装置が起動を完了するまで待機することができる。
また、通信装置が、自装置の通信圏内に他通信装置が何個存在するか不明である場合、通信圏内の他通信装置から応答を受信して、当該他通信装置にのみデータを送信する構成が考えられる。しかしながら、この構成では、通信装置は、応答を受信することにより処理時間が増大するため、データを発信するまでの待機時間が長くなる。また、通信装置が応答を受信するごとにデータを送信すると、ネットワークの通信量が増大して、輻輳が発生することがある。
一方で、開示の通信装置は、待機時間の経過によりデータ300を発信するため、自装置の通信圏内に他通信装置が何個存在するか特定しなくても、データ300を発信することができる。また、開示の通信装置は、他通信装置からの応答400の有無に関わらず、他通信装置が起動した直後にデータ300を発信することができるため、待機時間を削減することができる。また、開示の通信装置により、他通信装置は、応答400を送信しなくてもよいため、ネットワークの輻輳を抑制することができる。
また、通信装置が、自装置の通信圏内に他通信装置が何個存在するか不明である場合、予め通信装置の開発者等によって決定された待機時間の中で、通信圏内の他通信装置からの応答を受信し、応答を受信できた他通信装置にのみデータを送信する構成が考えられる。しかしながら、この構成では、通信装置は、待機時間の中で通信圏内の全ての他通信装置から応答を受信していても、待機時間が終了するまで待機することになり、待機時間が長くなる。また、この構成では、通信装置は、待機時間の中でネットワークの構成に使用する数の通信装置から応答を受信できず、ネットワークが構成できないことがある。
一方で、開示の通信装置は、待機時間の経過によりデータ300を発信するため、自装置の通信圏内に他通信装置が何個存在するか特定しなくても、データ300を発信することができる。また、開示の通信装置は、他通信装置からの応答400の有無に関わらず、他通信装置が起動した直後にデータ300を発信することができるため、待機時間を削減することができる。また、開示の通信装置は、ネットワークの構成に使用する数の通信装置がデータ300の受信準備を完了してから、データ300を発信することができる。
なお、本実施の形態で説明した通信方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通信プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本通信プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した通信装置は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、例えば、上述した発信側の通信装置の機能(第1の発信部502〜格納部506)や受信側の通信装置の機能(受信部601〜送信部604)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、通信装置を製造することができる。
以下に添付図面を参照して、本発明にかかる通信装置、通信方法、通信プログラム、および通信システムの実施の形態を詳細に説明する。以降では、本発明にかかる通信装置の機能を有し、本発明にかかる通信システムを実現するセンサーノードを例に挙げるが、これに限らない。例えば、本発明にかかる通信装置は、センサーノード以外の通信装置にも適用可能である。
(センサーネットワーク内のセンサーノード間の通信例)
図1は、センサーネットワーク内のセンサーノード間の通信例を示す図である。図1(A)はセンサーネットワーク100の構成例を示し、図1(B)はセンサーネットワーク100内のセンサーノード101による通信の流れの一例を示す。
図1(A)に示すように、センサーネットワーク100は、所定の設置領域110内に配置されたチップ状の複数のセンサーノード101と、複数のセンサーノード101のセンサー出力を無線等により受信する親ノード102と、を含む通信システムである。設置領域110は、例えば、コンクリート、土、水、空気などの物質で満たされた領域である。または、設置領域110は、宇宙空間などの真空の領域であってもよい。
センサーノード101は、設置領域110内の各設置箇所における所定の変位量を検出し、検出したデータを無線通信により親ノード102に送信するコンピュータである。親ノード102は、設置領域110に設けられた複数のセンサーノード101から得られたデータを集約し、外部装置としてのサーバーへのデータのアップロードを行うコンピュータである。また、親ノード102は、外部装置としての利用者端末に対し設置箇所においてセンサーノード101が検出したデータの通知等を行ってもよい。また、親ノード102は、センサーノード101として動作してもよい。
センサーノード101(図1の黒丸)は、図1(A)に示すように、設置領域110内に大量に設置される。また、親ノード102(図1の白丸)は、設置領域110内のいずれかの箇所に1台設置される。センサーノード101は、近距離の無線通信能力、少なくとも隣接するセンサーノード101に到達可能な無線電波を出力できればよい。以降、無線電波の到達可能な範囲を「通信圏」と称す。このため、親ノード102から遠いセンサーノード101−1は、隣接する他の一つまたは複数のセンサーノード101−2を介してデータをリレー転送させる。
このとき、各センサーノード101は、消費電力を低減するために、内部のマイクロプロセッサ(MCU:Micro Control Unit)への電力供給を停止している場合がある。そのため、データの発信元になるセンサーノード101は、他のセンサーノードに起動指示を発信して、他のセンサーノードにデータの受信準備を完了させてから無線電波によってデータを発信することになる。各センサーノード101は、このリレー転送により、検出したデータを親ノード102に届ける(図1矢印参照)。
ここで、図1(B)を用いて、センサーノード101−1をデータの発信元とした場合について、センサーノード101−1がデータを発信する流れについて説明する。(1)まず、センサーノード101−1は、自装置の通信圏内に起動指示を発信する。これにより、センサーノード101−1は、自装置の通信圏内の他のセンサーノード101(図1の例ではセンサーノード101−2)に起動指示を受信させ、データの受信準備を開始させる。
(2)次に、センサーノード101−1は、起動指示に対する他のセンサーノード101からの応答に関わらず、所定の待機時間の経過を待つ。所定の待機時間とは、例えば、センサーノード101の製造ばらつき上の最長起動時間である。所定の待機時間は、例えば、センサーノード101−1内のROMに記憶されている。これにより、センサーノード101−1は、通信圏内の他のセンサーノード101がデータの受信準備を完了するのを待つ。
(3)一方で、センサーノード101−2は、起動指示を受信すると、自装置内のMCUを起動させ、MCUの起動時間を計測する。起動時間とは、起動指示を受信してからMCUがデータの受信準備を完了するまでの時間である。ここで、センサーノード101−2は、起動指示に対する応答をセンサーノード101−1に返さなくてもよい。
(4)その後、センサーノード101−1は、所定の待機時間が経過すると、自装置の通信圏内にデータを発信する。これにより、センサーノード101−1は、自装置の通信圏内の他のセンサーノード101(図1の例ではセンサーノード101−2)にデータを受信させる。
(5)一方で、センサーノード101−2は、データを受信すると、受信したデータに対する応答として、センサーノード101−2のMCUの起動時間を示す情報を含むデータをセンサーノード101−1に送信する。
(6)次に、センサーノード101−1は、(5)で送信された応答を受信すると、受信した応答から、センサーノード101−2のMCUの起動時間を示す情報を抽出する。そして、センサーノード101−1は、抽出した情報が示すセンサーノード101−2のMCUの起動時間を用いて、待機時間を製造ばらつき上の最長起動時間から短縮する。短縮後の待機時間は、例えば、センサーノード101−1内の不揮発メモリに記憶されている。
以降、センサーノード101−1は、(1)、(2)、および(4)と同様にして、センサーノード101−2に起動指示を発信し、不揮発メモリに記憶された短縮後の待機時間の経過を待ってから、センサーノード101−2にデータを発信する。このように、センサーノード101−1はセンサーノード101−2が受信準備を完了した直後にデータを発信することができ、待機時間を短縮することができる。また、センサーノード101−1は、待機時間を短縮することにより、消費電力を低減することができる。
また、センサーノード101−2は、起動指示に対する応答を送信しなくてもよいため、応答の送信にかかる消費電力を低減することができる。また、センサーノード101−2が応答を送信しない場合、センサーネットワーク100における通信量を低減することができ、通信の輻輳の発生を抑制することができる。また、センサーノード101−1は、待機時間を削減することにより、発生したイベントに対する処理時間を短縮することができる。
また、センサーノード101−1は、複数の応答を受信した場合は、複数の応答に含まれる情報が示す起動時間のうち、最長の起動時間を用いて待機時間を短縮してもよい。最長の起動時間を用いて待機時間を短縮する場合については、図21および図22を用いて後述する。また、センサーノード101−1は、複数の応答を受信した場合は、複数の応答に含まれる情報が示す起動時間のうち、所定番目に短い起動時間を用いて待機時間を短縮してもよい。所定番目に短い起動時間を用いて待機時間を短縮する場合については、図27〜図29を用いて後述する。
(センサーノード101の内部構成例)
次に、図2を用いて、図1に示したセンサーノード101の内部構成例について説明する。
図2は、センサーノード101の内部構成例を示すブロック図である。センサーノード101は、MCU201と、RAM(Random Access Memory)202と、ROM(Read Only Memory)203と、不揮発メモリ204と、タイマー205と、センサー206と、を含む。また、センサーノード101は、起動指示発信回路207と、起動指示受信回路208と、無線通信回路209と、アンテナ210と、を含む。また、センサーノード101は、ハーベスタ211と、バッテリ212と、PMU(Power Management Unit)213と、を含む。
MCU201は、センサーノード101全体の制御を司る。MCU201は、RAM202、ROM203、不揮発メモリ204、タイマー205、起動指示発信回路207、無線通信回路209、およびセンサー206に信号線を介して接続されている。
RAM202は、MCU201における処理の一時データを格納する。RAM202は、MCU201に信号線を介して接続されている。ROM203は、MCU201が実行する処理プログラム等(例えば、通信プログラム)を格納する。また、ROM203は、センサーノード101の製造ばらつき上の最長起動時間に基づく待機時間を格納してもよい。ROM203は、MCU201に信号線を介して接続されている。
不揮発メモリ204は、電力供給が途絶えたとき等においても書き込まれた所定のデータを保持する。また、不揮発メモリ204は、他のセンサーノード101の起動時間に基づく待機時間を格納してもよい。不揮発メモリ204は、MCU201に信号線を介して接続されている。
タイマー205は、クロック(CLK)により発生したパルス信号をカウントし、経過時間を測定する。タイマー205は、MCU201に信号線を介して接続されている。センサー206は、設置箇所における所定の変位量を検出する。センサー206は、例えば、設置箇所の圧力を検出する圧電素子や、光を検出する光電素子等を用いることができる。センサー206は、検出した変位量に基づいてイベントを発生する。センサー206は、MCU201およびPMU213に信号線を介して接続されている。
起動指示受信回路208は、アンテナ210を介して受信された起動指示を受信してPMU213に起動指示を送る。起動指示とは、他のセンサーノード101を起動させる所定の周波数の電波である。起動指示受信回路208は、例えば、起動指示となる所定の周波数の電波のみを検出する回路である。所定の周波数は、例えば、センサーネットワーク100の開発者によって決定される。
起動指示発信回路207は、アンテナ210を介して起動指示を発信する。起動指示発信回路207は、例えば、起動指示となる所定の周波数の電波のみをアンテナ210を介して発信する回路である。起動指示受信回路208と起動指示発信回路207とは、後述する無線通信回路209とは異なり、所定の周波数の電波のみを扱うため、無線通信回路209より消費電力が少ない。
無線通信回路(RF:Radio Frequency)209は、アンテナ210を介して受信された無線電波を受信信号としてMCU201に出力する。また、無線通信回路209は、発信信号を無線電波としてアンテナ210を介して発信する。無線通信回路209は、起動指示受信回路208および起動指示発信回路207とは異なり、所定の周波数幅の電波を発信し、または受信する回路である。無線通信回路209は、起動指示受信回路208と起動指示発信回路207より電波の周波数帯域が広いため、起動指示受信回路208と起動指示発信回路207より消費電力が多い。
アンテナ210は、電波を発信したり受信したりする。ここでは、アンテナ210は、起動指示受信回路208と、起動指示発信回路207と、無線通信回路209と、が共用しているが、これに限らない。例えば、センサーノード101は、起動指示受信回路208と、起動指示発信回路207と、無線通信回路209との各々に固有のアンテナを有してもよい。
ハーベスタ211は、センサーノード101の設置箇所における外部環境、例えば、光、振動、温度、無線電波(受信電波)等のエネルギー変化に基づき発電を行う。バッテリ212は、ハーベスタ211により発電された電力を蓄える。PMU213は、バッテリ212に蓄えられた電力を、センサーノード101の各部の駆動電源として供給する。換言すれば、センサーノード101は、二次電池や外部電源等が不要であり、動作に必要な電力をセンサーノード101内部で生成する。
センサーノード101は、例えば、バッテリ212に蓄えられた電力に制限があるため、イベントが発生するまでは、MCU201やROM203等への電力供給を停止しておき、消費電力を低減してもよい。例えば、センサーノード101は、MCU201と、RAM202と、ROM203と、不揮発メモリ204と、タイマー205と、起動指示発信回路207と、無線通信回路209と、への電力供給を停止しておく。
このとき、センサーノード101は、MCU201やROM203等への電力供給を開始するトリガを発生するセンサー206や起動指示受信回路208には、常時、電力供給を行っておく。また、センサー206は、センサー206自体において発生した起電力により動作可能であって、PMU213からの電力供給なしに動作可能であってもよい。同様に、起動指示受信回路208は、アンテナ210において発生した起電力により動作可能であって、PMU213からの電力供給なしに動作可能であってもよい。
(無線通信回路209によって送受信される信号)
次に、図3および図4を用いて、無線通信回路209によって送受信される信号の一例について説明する。無線通信回路209によって送受信される信号には、例えば、センサー206の検出結果を示すデータや、センサー206の検出結果を示すデータに対する応答がある。
<センサー206の検出結果を示すデータ>
図3は、センサー206の検出結果を示すデータの一例を示す説明図である。図3に示すように、データ300は、フラグ(符号301の領域)と、発信元ID(符号302の領域)と、データサイズ(符号303の領域)と、データ内容(符号304の領域)と、を含む。
フラグは、当該フラグを含む信号が、発信元から発信されたデータ300であるか、データ300に対する応答であるか、を識別する情報である。例えば、フラグは、当該フラグを含む信号が発信元から発信されたデータ300である場合には「0」となる。発信元IDは、信号の発信元のセンサーノード101の識別子である。データサイズは、データ内容のビット長やバイト長である。データ内容は、データ300の内容であり、例えば、センサー206の検出結果である。
<データ300に対する応答>
図4は、データ300に対する応答の一例を示す説明図である。図4に示すように、応答400は、フラグ(符号401の領域)と、発信元ID(符号402の領域)と、宛先ID(符号403の領域)と、起動時間(符号404の領域)と、を含む。
当該フラグを含む信号が、発信元から発信されたデータ300であるか、データ300に対する応答であるか、を識別する情報である。例えば、フラグは、当該フラグを含む信号がデータ300に対する応答である場合には「1」となる。発信元IDは、信号の発信元のセンサーノード101の識別子である。宛先IDは、データ300の発信元であって、応答400の宛先であるセンサーノード101の識別子である。起動時間は、応答400を発信するセンサーノード101の起動時間を示す情報である。
(通信装置として機能するセンサーノード101の機能的構成例)
次に、図5および図6を用いて、通信装置として機能するセンサーノード101の機能的構成例について説明する。以降では、発信側の通信装置としての機能と受信側の通信装置としての機能とを分けて説明するが、センサーノード101は発信側の通信装置としての機能と受信側の通信装置としての機能とを併せて有してもよい。
図5は、発信側の通信装置として機能するセンサーノード101の機能的構成例を示すブロック図である。発信側のセンサーノード101は、記憶部501と、第1の発信部502と、検出部503と、第2の発信部504と、受信部505と、格納部506と、を含む。
記憶部501は、受信部505によって他通信装置の起動にかかる時間を示す情報が受信される前には、他通信装置の最長起動時間以上の待機時間を記憶する。ここで、通信装置とは、例えば、センサーノード101である。起動にかかる時間とは、センサーノード101が起動指示を受信してから、データの受信準備が完了するまでの時間であって、例えば、上述した起動時間である。待機時間とは、他のセンサーノード101がMCU201を起動してデータ300の受信処理が可能になるまでの起動時間以上の時間である。最長起動時間とは、例えば、センサーノード101の製造ばらつき上での最長の起動時間である。
これにより、検出部503は、通信圏内の他のセンサーノード101が当該センサーノード101のMCU201を起動終了してデータ300の受信準備が完了するまでの待機時間が経過したことを検出することができる。記憶部501は、例えば、図2に示したMCU201内のレジスタ、ROM203、RAM202、不揮発メモリ204などの記憶装置により、その機能を実現する。
第1の発信部502は、通信圏内に起動指示を発信する。起動指示とは、上述したように、他のセンサーノード101を起動させる所定の周波数の電波であって、センサーノード101の起動指示受信回路208によって受信可能な周波数の電波である。これにより、第1の発信部502は、通信圏内の他のセンサーノード101に、当該センサーノード101のMCU201を起動するトリガを与えることができる。第1の発信部502は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、起動指示発信回路207により、その機能を実現する。
検出部503は、第1の発信部502によって起動指示が発信されてから、記憶部501に格納された待機時間が経過したことを検出する。検出部503は、例えば、第1の発信部502によって起動指示が発信された時点において、タイマー205によって計測された経過時間を取得する。次に、検出部503は、タイマー205によって計測される経過時間を監視し、タイマー205によって計測される経過時間が、取得した経過時間と待機時間との和以上になった場合に、待機時間が経過したことを検出する。
これにより、検出部503は、通信圏内の他のセンサーノード101が当該センサーノード101のMCU201を起動終了してデータ300の受信準備が完了したことを検出することができる。検出部503は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、タイマー205により、その機能を実現する。
第2の発信部504は、検出部503によって待機時間が経過したことが検出された場合に、通信圏内にデータ300を発信する。これにより、通信圏内の他のセンサーノード101は、第2の発信部504によって発信されたデータ300を受信することができる。第2の発信部504は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、無線通信回路209により、その機能を実現する。
受信部505は、通信圏内の他通信装置を起動させる起動指示を発信した場合に他通信装置の起動にかかる時間を示す情報を他通信装置から受信する。受信部505は、例えば、図4に示した応答400を受信し、応答400の符号404の領域から起動時間を抽出する。
これにより、格納部506は、通信圏内の他のセンサーノード101の起動時間を用いて待機時間を調整することができる。受信部505は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、無線通信回路209により、その機能を実現する。
格納部506は、受信部505によって受信された情報が示す時間に基づく待機時間を記憶部501に格納する。格納部506は、例えば、受信部505によって応答400の中から抽出された起動時間を、待機時間として記憶部501に格納する。これにより、格納部506は、待機時間として、センサーノード101の製造ばらつき上の最長起動時間より短い他のセンサーノード101の起動時間を採用して、待機時間を短縮することができる。また、検出部503は、待機時間が短縮されても、他のセンサーノード101がデータの受信準備を完了するまで待つことができる。
また、格納部506は、例えば、受信部505によって応答400の中から抽出された起動時間と、経年劣化等による起動時間の変動に対応するための所定時間と、の和を、待機時間として記憶部501に格納してもよい。これにより、検出部503は、他のセンサーノード101の起動時間が経年劣化等により長くなった場合でも、他のセンサーノード101がデータの受信準備を完了するまで待つことができる。
また、格納部506は、受信部505によって複数の他通信装置から情報が受信された場合に、受信された各々の情報が示す時間の中で最長の時間に基づく待機時間を記憶部501に格納してもよい。これにより、第2の発信部504は、通信圏内のセンサーノード101の全てが起動してからデータ300を発信することができる。
また、格納部506は、受信部505によって複数の他通信装置から情報が受信された場合に、受信された各々の情報が示す時間の中で所定番目に短い時間に基づく待機時間を記憶部501に格納してもよい。ここで、所定番目とは、例えば、センサーネットワーク100の構成に使用するセンサーノード101の個数番目を示す。センサーネットワーク100の構成に使用するセンサーノード101の個数は、例えば、センサーネットワーク100の開発者によって決定される。
これにより、第2の発信部504は、通信圏内のセンサーノード101のうち、センサーネットワーク100の構成に使用する個数のセンサーノード101が起動した時点で、データ300を発信することができる。従って、格納部506は、待機時間を短縮することができる。
また、格納部506は、第2の発信部504によって発信されたデータ300に対する他通信装置からの応答400が所定数以下である場合に、記憶部501に記憶された待機時間を延長してもよい。所定数とは、例えば、センサーネットワーク100の構成に使用するセンサーノード101の個数である。所定数とは、例えば、センサーネットワーク100の開発者によって決定される。また、所定数は、例えば、前回にデータ300の通信を行ったセンサーノード101の個数であり、可変であってもよい。
これにより、センサーノード101は、通信圏内のセンサーノード101が起動する前に第2の発信部504によってデータ300を発信してしまった場合に、待機時間を延長することができる。格納部506は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、その機能を実現する。
以降では、発信側のセンサーノード101は、格納部506によって記憶部501に格納された待機時間を用いて、データを発信することになる。これにより、発信側のセンサーノード101は、通信圏内の他のセンサーノード101がデータ300の受信準備を完了するまでの適切な待機時間を用いてデータを発信することができる。従って、発信側のセンサーノード101は、待機時間が低減されたことにより、消費電力を低減することができる。
図6は、受信側の通信装置として機能するセンサーノード101の機能的構成例を示すブロック図である。受信側のセンサーノード101は、受信部601と、起動部602と、計測部603と、送信部604と、を含む。
受信部601は、起動指示を発信してから所定の待機時間経過後にデータ300を発信する発信元から起動指示を受信する。発信元とは、上述した発信側の機能を有する通信装置であって、例えば、センサーノード101である。受信部601は、例えば、他のセンサーノード101から起動指示を受信する。これにより、起動部602は、プロセッサを起動するトリガを得ることができる。受信部601は、例えば、図2に示した起動指示受信回路208により、その機能を実現する。
起動部602は、受信部601によって起動指示が受信された場合に自装置内のプロセッサを起動する。プロセッサとは、データ300の受信処理を実行する装置であって、例えば、センサーノード101のMCU201である。起動部602は、例えば、受信部601によって起動指示が受信された場合にPMU213にMCU201への電力供給を開始させる要求を送信する。これにより、MCU201は起動することができる。起動部602は、例えば、図2に示した起動指示受信回路208およびPMU213により、その機能を実現する。
計測部603は、受信部601によって起動指示が受信されてから、起動部602によって起動されたプロセッサによるデータ300の受信処理が可能になるまでの時間を計測する。受信部601によって起動指示が受信されてから、起動部602によって起動されたプロセッサによるデータ300の受信処理が可能になるまでの時間とは、例えば、上述した起動時間である。
これにより、計測部603は、実際の起動時間を取得することができる。計測部603は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、タイマー205により、その機能を実現する。
送信部604は、計測部603によって計測された時間を示す情報を発信元に送信する。送信部604は、例えば、発信側の機能を有するセンサーノード101に対して、自装置の起動時間を含む図4の応答400を送信する。
これにより、発信側のセンサーノード101は、上述した受信部505および格納部506によって、待機時間を調整することができる。送信部604は、例えば、図2に示したROM203、RAM202、不揮発メモリ204などの記憶装置に記憶されたプログラムをMCU201に実行させることにより、および、無線通信回路209により、その機能を実現する。
(センサーノード101間の通信例)
次に、図7〜図20を用いて、センサーノード101間の通信例について説明する。図7〜図16は、センサーノード101間の初回の通信例を示す説明図である。図17〜図20は、センサーノード101間の2回目以降の通信例を示す説明図である。ここで、図7〜図20では、センサーノード101−1を発信側の機能を有する通信装置とし、センサーノード101−2を受信側の機能を有する通信装置とする。また、図7〜図20において、センサーノード101−1とセンサーノード101−2とは互いに通信圏内に存在するとする。
以降では、図2に示したセンサーノード101内部の構成について、センサーノード101−1側では接尾語「−1」を付与し、センサーノード101−2側では接尾語「−2」を付与し、各々を識別する。例えば、MCU201−1はセンサーノード101−1側のMCU201を示し、MCU201−2はセンサーノード101−2側のMCU201を示す。
<初回の通信例>
まず、図7〜図16を用いて、初回の通信例について説明する。ここでは、センサーノード101−1は、MCU201−1やROM203−1等への電力供給を停止しているとする。センサーノード101−2は、同様に、MCU201−2やROM203−2等への電力供給を停止しているとする。
図7において、(11)センサー206−1は、所定の変位量を検出してイベントを発生する。センサー206−1は、例えば、検出した温度が閾値を超えた場合にイベントを発生する。(12)センサー206−1は、イベントを発生すると、電力供給の開始要求をPMU213−1に送信する。次に、図8の説明に移行する。
図8において、(13)PMU213−1は、電力供給の開始要求を受信すると、MCU201−1やROM203−1等への電力供給を開始する。これにより、MCU201−1は起動を開始する。また、タイマー205−1は経過時間の計測を開始する。次に、図9の説明に移行する。
図9において、MCU201−1は、起動してデータ300の受信準備を完了すると、発生したイベントに応じた処理を実行する。ここで、MCU201−1は、処理結果を、通信圏内の他のセンサーノード101を介して、親ノード102にリレー転送することになる。
(14)そのために、MCU201−1は、通信圏内のセンサーノード101を起動させる起動指示の発信要求を、起動指示発信回路207−1に送信する。(15)起動指示発信回路207−1は、発信要求を受信すると、アンテナ210−1を介して起動指示を通信圏内に発信する。
(16)また、MCU201−1は、発信要求を送信すると、ROM203−1から、センサーノード101の製造ばらつき上の最長起動時間である待機時間を読み出す。(17)また、MCU201−1は、タイマー205−1から発信要求を送信した時点での経過時間を取得する。次に、図10の説明に移行する。
図10において、(18)起動指示受信回路208−2は、アンテナ210−2を介して、センサーノード101−1が発信した起動指示を受信する。(19)起動指示受信回路208−2は、起動指示を受信すると、PMU213−2に電力供給の開始要求を送信する。次に、図11の説明に移行する。
図11において、(20)PMU213−2は、電力供給の開始要求を受信すると、MCU201−2やROM203−2等への電力供給を開始する。これにより、MCU201−2は起動を開始する。また、タイマー205−2は経過時間の計測を開始する。次に、図12の説明に移行する。
図12において、(21)MCU201−2は、起動を完了した時点でタイマー205−2により計測された経過時間を取得する。(22)次に、MCU201−2は、計測された経過時間を、MCU201−2の起動時間として、不揮発メモリ204−2に格納しておく。次に、図13の説明に移行する。
図13において、(23)MCU201−1は、タイマー205−1により計測される経過時間を取得する。次に、MCU201−1は、取得した経過時間と(17)で取得した発信要求を送信した時点での経過時間とを用いて、(16)で読み出した待機時間が経過したか否かを判定する。ここでは、待機時間が経過したとする。
(24)MCU201−1は、待機時間が経過したと判定すると、処理結果の発信要求を、無線通信回路209−1に送信する。(25)無線通信回路209−1は、発信要求を受信すると、アンテナ210−1を介して処理結果を通信圏内に発信する。次に、図14の説明に移行する。
図14において、(26)無線通信回路209−2は、アンテナ210−2を介して、センサーノード101−1が発信した処理結果を受信する。(27)無線通信回路209−2は、処理結果を受信すると、処理結果をMCU201−2に送信する。次に、図15の説明に移行する。
図15において、(28)MCU201−2は、処理結果を受信すると、(22)で格納しておいたMCU201−2の起動時間を不揮発メモリ204−2から読み出す。(29)次に、MCU201−2は、読み出したMCU201−2の起動時間を含む応答400を生成する。そして、MCU201−2は、生成した応答400の発信要求を、無線通信回路209−2に送信する。(30)無線通信回路209−2は、発信要求を受信すると、アンテナ210−2を介して応答400を通信圏内に発信する。次に、図16の説明に移行する。
図16において、(31)無線通信回路209−1は、アンテナ210−1を介して、センサーノード101−2が発信した応答400を受信する。(32)無線通信回路209−1は、応答400を受信すると、応答400をMCU201−1に送信する。
(33)MCU201−1は、応答400を受信すると、応答400の中からMCU201−2の起動時間を抽出する。次に、MCU201−1は、抽出した起動時間を、新たな待機時間として不揮発メモリ204−1に格納しておく。このようにして、センサーノード101は、通信圏内の他のセンサーノード101にデータ300を受信させ、データ300の通信を行う。また、(31)において複数の応答が受信された場合については、図21および図22を用いて、または、図27〜図29を用いて後述する。
その後、センサーノード101−1は、データ300の通信が終了すると、MCU201−1やROM203−1等への電力供給を停止する。センサーノード101−2は、同様に、データ300の通信が終了すると、MCU201−2やROM203−2等への電力供給を停止する。これにより、センサーノード101は、消費電力を低減することができる。
<2回目以降の通信例>
次に、図17〜図20を用いて、2回目以降の通信例について説明する。ここでは、センサーノード101−1は、MCU201−1やROM203−1等への電力供給を停止しているとする。センサーノード101−2は、同様に、MCU201−2やROM203−2等への電力供給を停止しているとする。
図17において、(34)センサー206−1は、(11)と同様に、再びイベントを発生したとする。(35)センサー206−1は、イベントを発生すると、電力供給の開始要求をPMU213−1に送信する。次に、図18の説明に移行する。
図18において、(36)PMU213−1は、電力供給の開始要求を受信すると、MCU201−1やROM203−1等への電力供給を開始する。これにより、MCU201−1は起動を開始する。また、タイマー205−1は経過時間の計測を開始する。次に、図19の説明に移行する。
図19において、MCU201−1は、起動してデータ300の受信準備を完了すると、発生したイベントに応じた処理を実行する。ここで、MCU201−1は、処理結果を、通信圏内の他のセンサーノード101を介して、親ノード102にリレー転送することになる。
(37)そのために、通信圏内のセンサーノード101を起動させる起動指示の発信要求を、起動指示発信回路207−1に送信する。(38)起動指示発信回路207−1は、発信要求を受信すると、アンテナ210−1を介して起動指示を通信圏内に発信する。
(39)また、MCU201−1は、発信要求を送信すると、不揮発メモリ204−1から(33)で格納しておいたMCU201−2の起動時間を読み出す。次に、MCU201−1は、読み出した起動時間を待機時間として設定する。(40)また、MCU201−1は、タイマー205−1から発信要求を送信した時点での経過時間を取得する。
ここで、センサーノード101−2は、図10〜図12と同様に、(38)で発信した起動指示を受信して、MCU201−2を起動させているとする。次に、図20の説明に移行する。
図20において、(41)MCU201−1は、タイマー205−1により計測される経過時間を取得する。次に、MCU201−1は、取得した経過時間と(40)で取得した発信要求を送信した時点での経過時間とを用いて、(39)で設定した待機時間が経過したか否かを判定する。ここでは、待機時間が経過したとする。
(42)MCU201−1は、待機時間が経過したと判定すると、処理結果の発信要求を、無線通信回路209−1に送信する。(43)無線通信回路209−1は、発信要求を受信すると、アンテナ210−1を介して処理結果を通信圏内に発信する。
以降、図14、図15と同様にして、センサーノード101−2は、応答400を発信する。また、図16と同様にして、センサーノード101−1は、応答400を受信する。このようにして、センサーノード101は、通信圏内の他のセンサーノード101にデータ300を受信させ、データ300の通信を行う。その後、センサーノード101−1は、データ300の通信が終了すると、MCU201−1やROM203−1等への電力供給を停止する。センサーノード101−2は、同様に、データ300の通信が終了すると、MCU201−2やROM203−2等への電力供給を停止する。
これにより、センサーノード101−1は、センサーノード101−2が受信準備を完了した直後にデータ300を発信することができ、待機時間を削減することができる。また、センサーノード101−1は、待機時間を削減することにより、MCU201−1やROM203−1等へ電力供給する時間を短縮することができ、消費電力を低減することができる。
また、センサーノード101−2は、起動指示に対する応答を送信しなくてもよいため、応答の発信にかかる消費電力を削減することができる。また、センサーノード101−1は、待機時間を削減することにより、発生したイベントに対する処理時間を短縮することができる。
センサーノード101は、既にMCU201が起動している場合に起動指示を受信した場合、タイマー205による経過時間の計測をしなくてもよく、不揮発メモリ204に記憶した起動時間を発信すればよい。
(複数のセンサーノード101から応答400を受信した場合の待機時間の設定例1)
次に、図21および図22を用いて、センサーノード101が、複数のセンサーノード101から応答400を受信した場合の待機時間の設定例1について説明する。
図21および図22は、複数のセンサーノード101から応答400を受信した場合の待機時間の設定例1を示す説明図である。図21において、(51)センサーノード101−1は、通信圏内に起動指示を発信する。これにより、センサーノード101−2〜101−6は、起動指示を受信する。(52)次に、センサーノード101−1は、通信圏内にデータ300を発信する。これにより、センサーノード101−2〜101−6は、データ300を受信する。次に、図22の説明に移行する。
図22において、(53)センサーノード101−2は、起動時間「30ms(milli second)」を含む応答400をセンサーノード101−1に送信する。(54)センサーノード101−1は、センサーノード101−2から送信された応答400を受信し、受信した応答400の中から起動時間「30ms」を抽出する。そして、センサーノード101−1は、抽出した起動時間「30ms」を待機時間として採用し、不揮発メモリ204に格納する。
(55)また、センサーノード101−3は、起動時間「32ms」を含む応答400をセンサーノード101−1に送信する。(56)センサーノード101−1は、センサーノード101−3から送信された応答400を受信し、受信した応答400の中から起動時間「32ms」を抽出する。
次に、センサーノード101−1は、不揮発メモリ204に格納された待機時間「30ms」と抽出した起動時間「32ms」とを比較する。そして、センサーノード101−1は、比較した結果、現在の待機時間より起動時間が長いため、待機時間「30ms」を「32ms」に更新して、不揮発メモリ204に格納する。
(57)また、センサーノード101−4は、起動時間「35ms」を含む応答400をセンサーノード101−1に送信する。(58)センサーノード101−1は、(55)と同様にして、起動時間「35ms」を抽出し、現在の待機時間より起動時間が長いため、待機時間「32ms」を「35ms」に更新して、不揮発メモリ204に格納する。
(59)また、センサーノード101−5は、起動時間「39ms」を含む応答400をセンサーノード101−1に送信する。(60)センサーノード101−1は、(55)と同様にして、起動時間「39ms」を抽出し、現在の待機時間より起動時間が長いため、待機時間「35ms」を「39ms」に更新して、不揮発メモリ204に格納する。
(61)また、センサーノード101−6は、起動時間「38ms」を含む応答400をセンサーノード101−1に送信する。(62)センサーノード101−1は、センサーノード101−6から送信された応答400を受信し、受信した応答400の中から起動時間「38ms」を抽出する。次に、センサーノード101−1は、不揮発メモリ204に格納された待機時間「39ms」と抽出した起動時間「38ms」とを比較する。そして、センサーノード101−1は、比較した結果、現在の待機時間より起動時間が短いため、待機時間「39ms」を更新しない。
これにより、センサーノード101−1は、通信圏内のセンサーノード101−2〜101−6が起動して受信準備を完了するまでの待機時間を決定して、不揮発メモリ204に記憶しておくことができる。結果として、センサーノード101−1は、決定した待機時間を用いてデータ300を発信することにより、データ300をセンサーノード101−2〜101−6に受信させることができる。
(設定例1を採用した場合のデータ発信処理)
次に、図23を用いて、設定例1を採用した場合のセンサーノード101によるデータ発信処理について説明する。データ発信処理は、図5に示した発信側の機能を有するセンサーノード101が実行する処理であり、例えば、図7〜図20に示したセンサーノード101−1により実行される。
図23は、設定例1を採用した場合のセンサーノード101によるデータ発信処理の一例を示すフローチャートである。図23において、まず、センサーノード101は、起動指示を発信する(ステップS2301)。次に、センサーノード101は、図24の処理により待機時間を設定する(ステップS2302)。
そして、センサーノード101は、待機時間が経過したか否かを判定する(ステップS2303)。ここで、待機時間が経過していない場合(ステップS2303:No)、センサーノード101は、ステップS2303の処理に戻り、待機時間の経過を待つ。
一方、待機時間が経過した場合(ステップS2303:Yes)、センサーノード101は、データ300を発信する(ステップS2304)。そして、センサーノード101は、データ発信処理を終了する。これにより、センサーノード101は、通信圏内の他のセンサーノード101を起動させ、他のセンサーノード101の受信準備の完了後にデータ300の発信をすることができる。結果として、センサーノード101は、通信圏内の他のセンサーノード101にデータ300を受信させることができる。
(設定例1を採用した場合の待機時間設定処理)
次に、図24を用いて、設定例1を採用した場合のセンサーノード101による待機時間設定処理について説明する。待機時間設定処理は、ステップS2302において実行される処理である。
図24は、設定例1を採用した場合のセンサーノード101による待機時間設定処理の一例を示すフローチャートである。図24において、まず、センサーノード101は、不揮発メモリ204から待機時間を探索する(ステップS2401)。次に、センサーノード101は、待機時間が探索できたか否かを判定する(ステップS2402)。
ここで、探索できなかった場合(ステップS2402:No)、センサーノード101は、ROM203からセンサーノード101の最長起動時間である待機時間を探索し(ステップS2403)、ステップS2404の処理に移行する。
一方、探索できた場合(ステップS2402:Yes)、センサーノード101は、探索した待機時間を設定する(ステップS2404)。そして、センサーノード101は、待機時間設定処理を終了する。これにより、センサーノード101は、初回の通信時および2回目以降の通信時に待機時間を設定することができる。
(設定例1を採用した場合のデータ受信処理)
次に、図25および図26を用いて、設定例1を採用した場合のセンサーノード101によるデータ受信処理について説明する。データ受信処理は、図5に示した発信側の機能を有するセンサーノード101、および図6に示した受信側の機能を有するセンサーノード101が実行する処理である。データ受信処理は、例えば、図7〜図20に示したセンサーノード101−1およびセンサーノード101−2により実行される。
図25および図26は、設定例1を採用した場合のセンサーノード101によるデータ受信処理の一例を示すフローチャートである。図25において、まず、センサーノード101は、信号を受信する(ステップS2501)。次に、センサーノード101は、受信した信号の中からフラグを抽出する(ステップS2502)。
そして、センサーノード101は、抽出したフラグが応答400を示すか否かを判定する(ステップS2503)。ここで、応答400を示す場合(ステップS2503:Yes)、センサーノード101は、図26のステップS2601の処理に移行する。
一方、応答400を示さない場合(ステップS2503:No)、センサーノード101は、受信した信号がデータ300であると特定し、データ300の中から発信元IDを抽出する(ステップS2504)。
次に、センサーノード101は、受信したデータ300を処理する(ステップS2505)。データ300の処理とは、例えば、データ300のリレー転送の処理でもよいし、データ300のデータ内容の解析処理でもよい。また、データ300の処理とは、例えば、外部装置としてのサーバーへのデータ300のアップロード処理でもよいし、外部装置としての利用者端末に対するデータ300の通知処理でもよい。
そして、センサーノード101は、抽出した発信元IDが示すセンサーノード101に対して、自装置の起動時間を含む応答400を送信する(ステップS2506)。次に、センサーノード101は、データ受信処理を終了する。上述したステップS2501〜ステップS2506を経由する処理により、センサーノード101は、他のセンサーノード101から発信されたデータ300を処理し、当該データ300に対する応答400を発信することができる。
次に、図26の説明に移行する。図26において、センサーノード101は、受信した信号が応答400であると特定し、応答400の中から宛先IDを抽出する(ステップS2601)。次に、センサーノード101は、宛先IDが自装置のIDであるか否かを判定する(ステップS2602)。ここで、自装置のIDでない場合(ステップS2602:No)、センサーノード101は、データ受信処理を終了する。
一方、自装置のIDである場合(ステップS2602:Yes)、センサーノード101は、受信した応答400の中から起動時間を抽出する(ステップS2603)。次に、センサーノード101は、不揮発メモリ204から待機時間を探索する(ステップS2604)。
そして、センサーノード101は、探索できたか否かを判定する(ステップS2605)。ここで、探索できなかった場合(ステップS2605:No)、センサーノード101は、ステップS2608の処理に移行する。
一方、探索できた場合(ステップS2605:Yes)、センサーノード101は、探索された待機時間を取得する(ステップS2606)。次に、センサーノード101は、取得した待機時間が抽出した起動時間より短いか否かを判定する(ステップS2607)。ここで、短くない場合(ステップS2607:No)、センサーノード101は、データ受信処理を終了する。
一方、短い場合(ステップS2607:Yes)、センサーノード101は、待機時間を抽出した起動時間で上書きして更新する(ステップS2608)。次に、センサーノード101は、データ受信処理を終了する。上述したステップS2601〜ステップS2608を経由する処理により、センサーノード101は、自装置から発信したデータ300に対する応答400を処理し、待機時間を更新することができる。
(複数のセンサーノード101から応答400を受信した場合の待機時間の設定例2)
次に、図27〜図29を用いて、センサーノード101が、複数のセンサーノード101から応答400を受信した場合の待機時間の設定例2について説明する。
図27は、センサーノード101の密集度合いを示す説明図である。図27に示すように、センサーネットワーク100において、センサーノード101はランダムに設置される。そのため、設置場所によって、センサーノード101の密集度合いにばらつきが生じることがある。
例えば、センサーノード101−1の通信圏2701内には5つのセンサーノード101(センサーノード101−2〜101−6)が存在する。また、センサーノード101−7の通信圏2702内には3つのセンサーノード101(センサーノード101−8〜101−10)が存在する。
ここで、センサーノード101は、通信圏2701内のセンサーノード101全てにデータ300を受信させなくてもよい場合がある。例えば、センサーノード101−1は、通信圏2701内の5つのセンサーノード101のうち、3つのセンサーノード101にデータ300を受信させればよい場合がある。この場合、センサーノード101−1は、通信圏2701内の5つのセンサーノード101が受信準備を完了するまで待機しなくても、3つのセンサーノード101が受信準備を完了するまで待機すれば、データ300を発信することができる。
このため、センサーノード101−1は、通信圏2701内のセンサーノード101の起動時間のうち3番目に短い起動時間を待機時間として採用することにより、3つのセンサーノード101が受信準備を完了するまで待機するようにしてもよい。この場合、センサーノード101−1は、通信圏2701内のセンサーノード101の起動時間のうち最長の起動時間を待機時間として採用した場合より、待機時間を短縮することができる。
ここで、センサーノード101は、例えば、通信圏2701内のセンサーノード101の起動時間のうち3番目に短い起動時間を待機時間とて採用するために、図28に示す起動時間テーブルを使用する。
図28は、起動時間テーブルの記憶内容の一例を示す説明図である。起動時間テーブルは、所定数のセンサーノード101が受信準備を完了するまでの待機時間を採用するために、所定数のセンサーノード101の起動時間を記憶する。起動時間テーブルは、例えば、ROM203やRAM202や不揮発メモリ204等の記憶装置によって実現される。
図28に示すように、起動時間テーブル2800は、ノードID項目に関連付けて、起動時間項目を有し、センサーノード101ごとに各項目に情報が設定されることにより、所定数以内のレコード(図28の例では、3つのレコード2801〜2803)を構成する。
ノードID項目には、センサーノード101の識別子が記憶される。起動時間項目には、ノードID項目の識別子が示すセンサーノード101の起動時間が記憶される。例えば、レコード2801は、センサーノード101−2の起動時間が「30ms」であることを示す情報である。
図29は、起動時間テーブル2800を使用した待機時間の設定例2を示す説明図である。図29において、センサーノード101−1は、図21と同様に、通信圏内に起動指示を発信した後、データ300を発信しているとする。
(71)ここで、センサーノード101−2は、起動時間「30ms」を含む応答400をセンサーノード101−1に送信する。(72)センサーノード101−1は、センサーノード101−2から送信された応答400を受信し、受信した応答400の中から起動時間「30ms」を抽出する。そして、センサーノード101−1は、応答400の発信元のセンサーノード101−2のID「101−2」と、抽出した起動時間「30ms」と、を関連付けたレコードを起動時間テーブル2800に記憶する。
(73)また、センサーノード101−3は、起動時間「32ms」を含む応答400をセンサーノード101−1に送信する。(74)センサーノード101−1は、(72)と同様に、応答400の発信元のセンサーノード101−3のID「101−3」と、抽出した起動時間「32ms」と、を関連付けたレコードを起動時間テーブル2800に記憶する。
(75)また、センサーノード101−4は、起動時間「35ms」を含む応答400をセンサーノード101−1に送信する。(76)センサーノード101−1は、(72)と同様に、応答400の発信元のセンサーノード101−4のID「101−4」と、抽出した起動時間「35ms」と、を関連付けたレコードを起動時間テーブル2800に記憶する。
(77)また、センサーノード101−5は、起動時間「39ms」を含む応答400をセンサーノード101−1に送信する。(78)センサーノード101−1は、センサーノード101−5から送信された応答400を受信し、受信した応答400の中から起動時間「39ms」を抽出する。ここで、センサーノード101−1は、起動時間テーブル2800のレコードが3つになっているため、起動時間テーブル2800に各レコードの起動時間と、抽出した起動時間「39ms」とを比較する。次に、センサーノード101−1は、比較した結果、各レコードの起動時間より抽出した起動時間が長いため、待機時間「39ms」に関するレコードを生成しない。
(79)また、センサーノード101−6は、起動時間「38ms」を含む応答400をセンサーノード101−1に送信する。(80)センサーノード101−1は、(78)と同様に、起動時間テーブル2800に各レコードの起動時間と、抽出した起動時間「38ms」とを比較する。次に、センサーノード101−1は、比較した結果、各レコードの起動時間より抽出した起動時間が長いため、待機時間「38ms」に関するレコードを生成しない。
これにより、センサーノード101−1は、通信圏内のセンサーノード101−2〜101−6の起動時間のうち、1番目〜3番目に短い起動時間を起動時間テーブル2800に記憶しておく。そして、センサーノード101−1は、起動時間テーブル2800に記憶された3番目に短い起動時間を待機時間として採用する。
これにより、センサーノード101−1は、通信圏内の3つのセンサーノード101が受信準備を完了するまでの待機時間を決定して、不揮発メモリ204に記憶しておくことができる。結果として、センサーノード101−1は、決定した待機時間を用いてデータ300を発信することにより、データ300を3つのセンサーノード101に受信させることができる。
また、センサーノード101は、起動時間テーブル2800に起動時間が記憶されたセンサーノード101から応答400を受信した場合は、起動時間テーブル2800に記憶された起動時間を、受信した応答に含まれる起動時間で更新してもよい。これにより、センサーノード101は、起動時間テーブル2800の起動時間を最新の状態に交信することができる。
(設定例2を採用した場合のデータ発信処理)
次に、設定例2を採用した場合のセンサーノード101によるデータ発信処理について説明する。設定例2を採用した場合のデータ発信処理は、図23に示した設定例1を採用した場合のデータ発信処理と同様のため、ここでは説明を省略する。
(設定例2を採用した場合の待機時間設定処理)
次に、設定例2を採用した場合のセンサーノード101による待機時間設定処理について説明する。設定例2を採用した場合の待機時間設定処理は、図24に示した設定例1を採用した場合の待機時間設定処理とステップS2402〜S2404は同様のため、ステップS2401について説明する。
設定例2では、ステップS2401において、センサーノード101は、起動時間テーブル2800の中で、最長の起動時間を探索する。これにより、センサーノード101は、通信圏内のセンサーノード101のうち、所定数のセンサーノード101が受信準備を完了するまでの待機時間を設定することができる。
(設定例2を採用した場合のデータ受信処理)
次に、図30を用いて、設定例2を採用した場合のセンサーノード101によるデータ受信処理について説明する。設定例2を採用した場合のデータ受信処理は、図25および図26に示した設定例1を採用した場合のデータ受信処理とステップS2501〜S2506,S2601〜S2602,S2602:Noの分岐先の処理は同様である。そのため、ここでは、図26に示したステップS2602:Yesの分岐先における設定例2を採用した場合の処理について説明する。
図30は、設定例2を採用した場合のセンサーノード101によるデータ受信処理の一例を示すフローチャートである。図30において、センサーノード101は、受信した応答400の中から、発信元IDと起動時間とを抽出する(ステップS3001)。
次に、センサーノード101は、起動時間テーブル2800の中からレコードを探索する(ステップS3002)。そして、センサーノード101は、探索できたか否かを判定する(ステップS3003)。ここで、探索できなかった場合(ステップS3003:No)、センサーノード101は、起動時間テーブル2800に抽出した発信元IDと起動時間とを関連付けたレコードを追加し(ステップS3004)、データ受信処理を終了する。
一方、探索できた場合(ステップS3003:Yes)、センサーノード101は、起動時間テーブル2800の各レコードのノードID項目と発信元IDとを比較する(ステップS3005)。次に、センサーノード101は、比較した結果、一致したか否かを判定する(ステップS3006)。ここで、一致した場合(ステップS3006:Yes)、センサーノード101は、一致したレコードの起動時間項目を抽出した起動時間で上書き更新して(ステップS3007)、データ受信処理を終了する。
一方、一致しない場合(ステップS3006:No)、センサーノード101は、起動時間テーブル2800のレコード数を取得する(ステップS3008)。次に、センサーノード101は、レコード数が上限未満か否かを判定する(ステップS3009)。ここで、上限未満である場合(ステップS3009:Yes)、センサーノード101は、起動時間テーブル2800に抽出した発信元IDと起動時間とを関連付けたレコードを追加して(ステップS3010)、データ受信処理を終了する。
一方、上限以上である場合(ステップS3009:No)、センサーノード101は、起動時間テーブル2800の各レコードの中で最長の起動時間を待機時間として取得する(ステップS3011)。次に、センサーノード101は、取得した待機時間が抽出した起動時間より短いか否かを判定する(ステップS3012)。ここで、短くない場合(ステップS3012:No)、センサーノード101は、データ受信処理を終了する。
一方、短い場合(ステップS3012:Yes)、センサーノード101は、起動時間テーブル2800の各レコードのうち最長の起動時間のレコードを削除し、発信元IDと起動時間とを関連付けたレコードを起動時間テーブル2800に追加する(ステップS3013)。そして、センサーノード101は、データ受信処理を終了する。これにより、センサーノード101は、通信圏内のセンサーノード101の起動時間を短い順に所定数記憶しておくことができる。
以上説明したように、開示の通信装置(例えば、センサーノード101)は、予め通信圏内の他の通信装置から送信された他の通信装置の起動時間に基づく待機時間を設定しておき、通信圏内に起動指示を発信した後、設定した待機時間が経過した場合に通信圏内にデータ300を発信する。これにより、開示の通信装置は、他の通信装置がデータ300の受信準備を完了した後に、他の通信装置にデータ300を受信させることができる。
従って、通信装置は、待機時間を固定した場合に比べて、待機時間を短縮することができ、消費電力を低減することができる。また、開示の通信装置は、起動指示に対する応答を受信しなくてもデータ300を発信することができるため、通信圏内に他の通信装置が何個あるかを特定しなくてもよい。
また、他の通信装置は、起動指示に対する応答を送信しなくてもよい。これにより、他の通信装置は、応答400の送信処理を削減することができ、処理量を低減して消費電力を低減することができる。また、開示の通信装置は、起動指示に対する応答の受信によりデータ300を発信する場合と比べて、起動指示に対する応答の受信にかかる時間を削減して、待機時間を短縮することができ、消費電力を低減することができる。
また、開示の通信装置は、初回の通信時には、通信装置の製造ばらつき上の最長起動時間に基づく待機時間を設定しておき、通信圏内に起動指示を発信した後、設定した待機時間が経過した場合に通信圏内にデータ300を発信する。これにより、開示の通信装置は、初回の通信時にも、通信圏内の他の通信装置がデータ300の受信準備を完了した後に、他の通信装置にデータ300を受信させることができる。また、開示の通信装置は、起動指示に対する応答を受信しなくてもデータ300を発信することができるため、通信圏内に他の通信装置が何個あるかを特定しなくてもよい。
また、開示の通信装置は、通信圏内に他の通信装置が複数ある場合は、各々の他の通信装置の起動時間のうち最長の起動時間に基づく待機時間を設定する。これにより、開示の通信装置は、各々の他の通信装置にデータ300を受信させることができる。
また、開示の通信装置は、通信圏内に他の通信装置が複数ある場合は、各々の他の通信装置の起動時間のうち所定番目に短い起動時間に基づく待機時間を設定する。これにより、開示の通信装置は、待機時間が短い順で所定番目までの他の通信装置にデータ300を受信させることができる。
また、開示の通信装置は、発信したデータ300に対する応答400が所定数以下である場合に、設定した待機時間を延長する。これにより、開示の通信装置は、他の通信装置が経年劣化等により起動時間が長くなった場合に、待機時間を延長して他の通信装置が起動を完了するまで待機することができる。
また、通信装置が、自装置の通信圏内に他通信装置が何個存在するか不明である場合、通信圏内の他通信装置から応答を受信して、当該他通信装置にのみデータを送信する構成が考えられる。しかしながら、この構成では、通信装置は、応答を受信することにより処理時間が増大するため、データを発信するまでの待機時間が長くなる。また、通信装置が応答を受信するごとにデータを送信すると、ネットワークの通信量が増大して、輻輳が発生することがある。
一方で、開示の通信装置は、待機時間の経過によりデータ300を発信するため、自装置の通信圏内に他通信装置が何個存在するか特定しなくても、データ300を発信することができる。また、開示の通信装置は、他通信装置からの応答400の有無に関わらず、他通信装置が起動した直後にデータ300を発信することができるため、待機時間を削減することができる。また、開示の通信装置により、他通信装置は、応答400を送信しなくてもよいため、ネットワークの輻輳を抑制することができる。
また、通信装置が、自装置の通信圏内に他通信装置が何個存在するか不明である場合、予め通信装置の開発者等によって決定された待機時間の中で、通信圏内の他通信装置からの応答を受信し、応答を受信できた他通信装置にのみデータを送信する構成が考えられる。しかしながら、この構成では、通信装置は、待機時間の中で通信圏内の全ての他通信装置から応答を受信していても、待機時間が終了するまで待機することになり、待機時間が長くなる。また、この構成では、通信装置は、待機時間の中でネットワークの構成に使用する数の通信装置から応答を受信できず、ネットワークが構成できないことがある。
一方で、開示の通信装置は、待機時間の経過によりデータ300を発信するため、自装置の通信圏内に他通信装置が何個存在するか特定しなくても、データ300を発信することができる。また、開示の通信装置は、他通信装置からの応答400の有無に関わらず、他通信装置が起動した直後にデータ300を発信することができるため、待機時間を削減することができる。また、開示の通信装置は、ネットワークの構成に使用する数の通信装置がデータ300の受信準備を完了してから、データ300を発信することができる。
なお、本実施の形態で説明した通信方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通信プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本通信プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明した通信装置は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、例えば、上述した発信側の通信装置の機能(第1の発信部502〜格納部506)や受信側の通信装置の機能(受信部601〜送信部604)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、通信装置を製造することができる。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)通信圏内の他通信装置を起動させる起動指示を発信した場合に前記他通信装置の起動にかかる時間を示す情報を前記他通信装置から受信する受信部と、
前記受信部によって受信された前記情報が示す時間に基づく待機時間を記憶部に格納する格納部と、
前記通信圏内に起動指示を発信する第1の発信部と、
前記第1の発信部によって前記起動指示が発信されてから、前記格納部によって前記記憶部に格納された前記待機時間が経過したことを検出する検出部と、
前記検出部によって前記待機時間が経過したことが検出された場合に、前記通信圏内にデータを発信する第2の発信部と、
を有することを特徴とする通信装置。
(付記2)前記格納部は、
前記受信部によって複数の前記他通信装置から前記情報が受信された場合に、受信された各々の前記情報が示す時間の中で最長の時間に基づく前記待機時間を前記記憶部に格納する、
ことを特徴とする付記1に記載の通信装置。
(付記3)前記格納部は、
前記受信部によって複数の前記他通信装置から前記情報が受信された場合に、受信された各々の前記情報が示す時間の中で所定番目に短い時間に基づく前記待機時間を前記記憶部に格納する、
ことを特徴とする付記1に記載の通信装置。
(付記4)前記格納部は、
前記第2の発信部によって発信された前記データに対する前記他通信装置からの応答が所定数以下である場合に、前記記憶部に記憶された前記待機時間を延長することを特徴とする付記1〜3のいずれか一つに記載の通信装置。
(付記5)前記記憶部は、
前記受信部によって前記情報が受信される前には、前記他通信装置の最長起動時間以上の待機時間を記憶する、
ことを特徴とする付記1〜4のいずれか一つに記載の通信装置。
(付記6)起動指示を発信してから所定の待機時間経過後にデータを発信する発信元から前記起動指示を受信する受信部と、
前記受信部によって前記起動指示が受信された場合に自装置内のプロセッサを起動する起動部と、
前記受信部によって前記起動指示が受信されてから、前記起動部によって起動された前記プロセッサによる前記データの受信処理が可能になるまでの時間を計測する計測部と、
前記計測部によって計測された前記時間を示す情報を前記発信元に送信する送信部と、
を有することを特徴とする通信装置。
(付記7)コンピュータが、
通信圏内の他通信装置を起動させる起動指示を発信した場合に前記他通信装置の起動にかかる時間を示す情報を前記他通信装置から受信し、
受信された前記情報が示す時間に基づく待機時間を記憶部に格納し、
前記通信圏内に起動指示を発信し、
前記起動指示が発信されてから、前記記憶部に格納された前記待機時間が経過したことを検出し、
前記待機時間が経過したことが検出された場合に、前記通信圏内にデータを発信する、
処理を実行することを特徴とする通信方法。
(付記8)コンピュータが、
起動指示を発信してから所定の待機時間経過後にデータを発信する発信元から前記起動指示を受信し、
前記起動指示が受信された場合に自装置内のプロセッサを起動し、
前記起動指示が受信されてから、起動された前記プロセッサによる前記データの受信処理が可能になるまでの時間を計測し、
計測された前記時間を示す情報を前記発信元に送信する、
処理を実行することを特徴とする通信方法。
(付記9)コンピュータに、
通信圏内の他通信装置を起動させる起動指示を発信した場合に前記他通信装置の起動にかかる時間を示す情報を前記他通信装置から受信し、
受信された前記情報が示す時間に基づく待機時間を記憶部に格納し、
前記通信圏内に起動指示を発信し、
前記起動指示が発信されてから、前記記憶部に格納された前記待機時間が経過したことを検出し、
前記待機時間が経過したことが検出された場合に、前記通信圏内にデータを発信する、
処理を実行させることを特徴とする通信プログラム。
(付記10)コンピュータに、
起動指示を発信してから所定の待機時間経過後にデータを発信する発信元から前記起動指示を受信し、
前記起動指示が受信された場合に自装置内のプロセッサを起動し、
前記起動指示が受信されてから、起動された前記プロセッサによる前記データの受信処理が可能になるまでの時間を計測し、
計測された前記時間を示す情報を前記発信元に送信する、
処理を実行させることを特徴とする通信プログラム。
(付記11)互いに通信可能な圏内に位置する第1の通信装置および第2の通信装置を含む通信システムであって、
前記第1の通信装置は、
起動指示を受信した場合に自装置内のプロセッサを起動し、前記起動指示を受信してから、起動した前記プロセッサによるデータの受信処理が可能になるまでの時間の計測結果を前記第2の通信装置に送信し、
前記第2の通信装置は、
前記第1の通信装置によって送信された前記計測結果を受信し、受信した前記計測結果に基づく待機時間を記憶部に格納し、自装置から通信可能な圏内に前記起動指示を発信し、前記起動指示を発信してから、前記記憶部に格納された前記待機時間が経過したことを検出した場合に、前記自装置から通信可能な圏内に前記データを発信する、
ことを特徴とする通信システム。