以下、本発明に係わる実施例について添付図面を参照しながら説明する。
図1は第1の実施例であり、本発明を適用したセンサノード1のブロック図を示す。図1はおいては、課題を解決するため、リアルタイムクロック138からの周期的な信号をトリガとして任意の周期でセンシングしてデータをRAM110に取り込み、ストレージ160に記録するセンシングプログラム122と、外部接続検出部132でUSBを介したパーソナルコンピュータ等の外部機器との接続をトリガとして、ストレージ160からデータを読み出して外部機器に有線送信を開始する有線通信プログラム123に従って、センサノード1を制御することを特徴とする。以下、個々について説明する。
センサノード1は、ゲートウェイ(基地局)と通信を行うアンテナ150を備えた無線通信部(RF)131と、加速度センサ135、温度センサ136、脈拍センサ137と、マイクロコンピュータ100と、マイクロコンピュータ100に一定間隔でトリガをかけるためのタイマとして機能するリアルタイムクロック(RTC)138と、不揮発な記憶媒体であるストレージ160と、文字や波形、グラフ等を表示するLCD134と、マイクロコンピュータ100に対してトリガをかけることができる複数のスイッチ141、142と、端子170への外部機器からのUSB接続を検出してマイクロコンピュータ100にトリガをかけ、その状態をマイクロコンピュータ100に出力する外部接続検出部132と、マイクロコンピュータ100からのシリアル通信によって送信されたデータをUSB接続の外部機器に転送するUSB通信部133と、マイクロコンピュータ100からの信号でUSB通信部133との信号線を遮断するスイッチ144と、2次電池147と、外部機器とのUSB接続を介して供給される電源で2次電池147を充電する充電部139と、2次電池147の電圧をマイクロコンピュータ100に出力する電圧検出部140と、レギュレータ146と、レギュレータ146に供給する電源を2次電池147とUSBを介した外部電源とで切替える電源切替部145と、USBケーブルを接続する端子170と、リセット端子145を接地した場合に2次電池147からの電源供給を遮断するリセット用のスイッチ143を含んで構成されている。なお、本実施形態では、生体情報を取得するためのセンサとして加速度センサ、温度センサ、脈拍センサを示すが、上記センサに限定されない。
マイクロコンピュータ100は、演算処理を実行するCPU101と、CPU101で実行するプログラム121などを記録するROM120と、データなどを一時的に記録するRAM110と、外部から入力されるアナログ信号をデジタル信号に変換するA/Dコンバータ104と、外部からデジタル信号を入力し、又は外部に出力するI/Oポート105と、リアルタイムクロック138とストレージ160とLCD134と加速度センサ135と温度センサ136と脈拍センサ137でシリアル信号にて信号の送受信を行うシリアル通信部103と、無線通信部7でシリアル信号にて信号の送受信を行うシリアル通信部108と、CPU101を介さずにシリアル通信部103を制御し、シリアル通信にて受信したデータをRAM110に取り込むDMAC102と、外部からの信号をトリガとしてプログラム121を実行中のCPU101に割込みをかける割込制御部106、107とを含んで構成される。
ROM120に予め記録されているプログラム121には、センシングプログラム122と有線通信プログラム123を含む。センシングプログラム122に記述される処理はCPU101にて実行され、リアルタイムクロック138の信号をトリガとして、シリアル通信部103を介して加速度センサ135、温度センサ136及び脈拍センサ137でセンシングしたデータをRAM110に取り込み、無線通信部131を制御してRAM110に取り込んだデータを所定のゲートウェイに無線送信し、さらにストレージ160に書き込んで記録する。
有線通信プログラム123に記述される処理もまたCPU101にて実行され、外部接続検出部132からの信号をトリガとして有線通信を開始し、シリアル通信部103を介してストレージ160に記録され、かつ無線または有線通信により外部に送信されていないデータ(未送信データ)を読み出し、USB通信部133に送信し、USB通信部133から外部機器に有線送信する。また、有線通信プログラム123の処理では、無線及び有線で一度送信されたデータ(送信済データ)を再度送ることもできる。
また、有線通信プログラム123は、DMAC102を制御して、CPU101で処理を実行することなく、ストレージ160のデータを読出し、RAM110に記録できる。従って、ストレージ160を読出している間も、CPU101は別の処理を実行できるため、RAM100からUSB通信部133にデータを送信することができる。このUSB通信部133への送信においても、DMAC102を制御して、CPU101を介さず、データをRAM110から転送することができる。
RAM110は書き換え可能な値である、パラメータ111と、無線通信状態112と、有線接続状態113と、有線通信状態114と、無線送信用のデータを一時的に記録する送信用バッファ115と、ストレージ160から読み出したデータ、及び書き込むデータを一時的に記録するストレージ用バッファ116と、ストレージ160から未送信データを読み出す際にストレージ160におけるデータの位置を示す読出アドレス117と、センシングしたデータを書き込む際にストレージ160における書込み位置を示す書込アドレス118を有する。
パラメータ111は、センサノード1の動作を規定する値であり、ユーザによって変更可能である。無線通信部131を制御して無線通信する際に用いる無線周波数を示す無線チャネルや、センサノードを識別する固有のID等を記録する。
無線通信状態112はセンシングしたデータを送信した結果、つまり送信成功、失敗等の結果を記録する。
有線接続状態113は、外部機器とUSBを介して接続されているか否かを記録する。有線通信状態114は、外部機器とUSBを介して接続されている上、相手の外部機器がデータを受け取れる状態か否かを記録する。
送信用バッファ115は加速度センサ135、温度センサ136、脈拍センサ137でセンシングしたデータを一時的に記録して、送信する容量に達するまで蓄積する領域である。例えば無線規格をIEEE802.15.4とした場合、一度に送信できるデータ容量(パケット容量)と同じく100バイト程度とする。
ストレージ用バッファ116は、送信用バッファ115のデータを送信後に、圧縮してストレージ160に送信して記録するデータの領域である。また、ストレージ160からデータを読み出して無線、または有線で送信する際に、読み出したデータを記録する領域でもある。典型的な公知の圧縮方式を適用した場合、例えば日常動作における人の腕の動きを表すのに十分な最大3G,最小で−3Gの加速度を20ヘルツでサンプリングした波形データであれば、平均で1/3程度に圧縮できる。本実施形態では、例えばストレージ用バッファ116に1パケット容量分の圧縮データが蓄積された後に、ストレージ160に記録する。この結果、ストレージ160への書込み頻度も削減できる。
このように、送信用バッファ115とストレージ用バッファ116を両方持つ特徴により、センシングした直後のリアルタイムデータは無線で送信してストレージ160に記録し、外部機器と無線または有線で通信可能であればストレージ160から未送信データを読み出して送信するという両方の処理を滞りなく実行することができる。
読出アドレス117は、無線または有線通信可能時に送信すべき未送信データのストレージ160内部における位置を示す。
書込アドレス118は、ストレージ用バッファ116に記録されたデータをストレージ160に書き込む場合に、記録すべきストレージ160内部における位置を示す。つまり、読出アドレス117と書込アドレス118が同じ値である場合、送信すべき未送信データがストレージ160に存在しないことが判定できる。
ストレージ160には、センシングしたデータを記録するためのデータテーブル161を含む。データテーブルに記録されるデータは、無線通信部131から送信する際の1パケットごとに可変長で区切る。これにより、ストレージ160から読み出した1パケット分のデータをストレージ用バッファ116に一時的に記録した後、そのままデータを加工することなく無線または有線送信可能とすることで、処理を減らすことができる。
1つのパケットは、対応するアドレスが示す位置に記録されており、フラグ、長さも同時にデータテーブル161に記録される。アドレスはデータテーブル161内で一意に割り振られており、1つのアドレスで、1つの対応するデータの位置を示している。フラグは、対応するパケットが一度送信成功したか否かを示している。長さは、対応するパケットのデータ長を示している。ストレージ160はマイクロコンピュータ100からシリアル通信にて読出し、または書込みコマンド内に含まれるアドレスを参照して、ストレージ160に記録された任意の位置のデータを読出し、または書き込むことができる。
長さは対応するパケットのデータ長を示している。つまり、対応するパケットのアドレスに長さ分を足すことで、次に記録されたパケットのアドレスを割り出すことができる。
フラグは、そのデータが送信用バッファ115に記録された後に送信された際に、すべて送信成功であった場合には1を、送信失敗のデータを含んでいれば0を書き込んでいる。つまり、後からストレージ160のパケットを読み出した際に、未送信データを含むか否かを判断することができ、未送信データのみを効率的に、残さず読み出すことを可能にする。
RAM110の書込アドレス118の示すパケット162は、データテーブル161内で最後に記録された最も古いパケットを示している。最も古いデータから書き換えていくことで、ストレージ160内のすべての記録単位(メモリの1セル)において書き換え回数を均等化し、書き換え頻度を削減する。この結果、ストレージ160に書き換え寿命の短いフラッシュメモリを適用しても、実用的な寿命を確保できる。
RAM110の読出アドレス117の示すパケット164はデータテーブル161内で最後に記録された未送信データを含むパケットを示している。パケット164は未送信データを含むので、フラグは必ず0である。つまり。読出アドレス117の示すパケットからフラグが0のパケットを読み出すだけで、未送信データを残さず読み出すことができる。パケット163は、フラグが1であり、過去に一度は送信成功したパケットである。
リアルタイムクロック138は一定の周期でマイクロコンピュータ100の割込制御部106に割込み信号を生成する。この周期は、シリアル通信のコマンドによって変更することができる。この割込み信号によって、マイクロコンピュータ100ではセンシングプログラム122に記述されたセンシングの処理を、他の処理の実行状態に影響を受けることなく、一定の周期で開始することができる。
リアルタイムクロック138は、外部入力端子を持つことが望ましい。つまり、外部入力端子にボタンであるスイッチ141、142を接続することで、センサノード1のユーザによりボタンが押された場合にも同様にマイクロコンピュータ100に割込みをかけることができる。これらの入力状態は、シリアル通信によってマイクロコンピュータ100に読み出すことができ、ボタンの種類や、押されている長さを検知することができる。このスイッチ141、142の操作を利用して、パラメータ111の設定変更等を実行できる。
外部接続検出部132は、端子170の電源端子171が接続されたことを検出する。つまり、電源を有するUSBを介した外部機器との接続を検出できる。接続が検出されると、外部接続検出部132はマイクロコンピュータ100の割込制御部107に対し割込み信号を生成し、I/Oポート105に対しデジタル信号の1を出力する。また切断を検出した場合も割込み信号を生成し、I/Oポート105に対しデジタル信号の0を出力する。つまり、マイクロコンピュータ100では、端子170への接続状態の変化を直ちに検出し、USB通信部133を介したUSB通信を開始、または停止できる。さらにマイクロコンピュータ100からI/Oポート105の出力によりスイッチ144を制御することで、通信停止時には直ちにシリアル信号の通信線を遮断できる。これは、端子170が非接続時には、USB通信部133には電源が供給されないため、信号線を通じてマイクロコンピュータ100からUSB通信部133に流れる電流漏れを抑える役割である。
USB通信部133はマイクロコンピュータ100とのシリアル通信の信号を、USBのデータ端子(送信、受信)172、173を介したUSB規格の信号に変換する。従って、マイクロコンピュータ100の制御では、外部機器へ送信するデータのみをシリアル通信でUSB通信部133に送信するだけで、自動的にUSB規格のデータに変換し、外部機器に送信できる。また、USB通信部133の電源は電源端子171を介して外部機器からのみ供給されるため、USB接続時には余計な電力を消費しない。
電源切替部145はレギュレータ146に供給する電源を、USBの非接続時には2次電池147から供給される電源とし、USB接続時には電源端子171を介して外部機器から供給される電源とで切替える。従って、USB接続時に有線通信を連続的に利用した場合においても、2次電池147を消費しない。グランド148は2次電池147に接続された回路の基準電圧となる点を示す。
図2は、本発明を適用したセンサノード1の外観を示す。図2においては、センサノード1のUSB接続用の端子170が、脈拍センサ137のある装着面とは異なる面に配置されることから、有線通信及び充電中もユーザが常時装着することができ、センシングを妨げないことを特徴とする。また、端子170が、装着面あるいはLCDが存在する面に対して側面に配置されており、スイッチ141,142が覆われておらず操作可能であることから、有線接続中であってもPC作業など人の日常作業を妨げないことを特徴とする。さらに、日常作業を妨げないことを考慮し、センサノードを左腕に装着した場合を想定すれば、端子170は左側の側面に存在するように配置することが望ましく、右腕に装着した場合を想定すれば、端子170は右側の側面に存在するように配置することが望ましい。センサノード1には、リストバンド2が両端に付随しており、典型的な腕時計と同様に腕に装着することができる。図2のバンド2の構造からもわかるように、装着時に脈拍センサ137を有する面がユーザの皮膚に接触する。脈拍センサ137は公知の光学式測定方式であり、赤外線を生体表面に照射し、血管の脈動による反射光の変化から脈拍を推定可能とする。つまり、脈拍センサ137はユーザの皮膚に接触していることが不可欠である。
端子170は脈拍センサ137のある装着面とは異なる側面にある。
ここで、装着面とは、センサノードを腕に装着した場合(皮膚に固定した場合)、皮膚と接触する面をいう。言い換えれば、図2のLCDが存在する面の反対の面、又は、センサノードの表面とした場合の裏面である。また、側面とは、リストバンドが付随していない何れかの面を示す。
端子170はUSBケーブルと対応しており、電源端子171、データ端子(送信、受信)172、173、グランド端子174によってUSBに対応する外部機器と接続し、通信及び電源供給が可能である。また、リセット端子175とグランド端子174を短絡することにより、外部から内部の電源を遮断し、リセットをかけることができる。端子170は各電極のみが露出しており、防水加工も可能である。
また、LCD134には、ユーザが常時見ることのできる時刻や電池残量、無線通信状態等を表示することができる。LCD134にメニューを表示し、スイッチ141,142を操作することにより、センシングの間隔や、無線チャネル等の設定をユーザが変更することが可能である。また、スイッチ141、142が押されたことをトリガとして、通常とは異なるセンシングや無線通信の処理を実行することも可能である。
図3は本発明を適用したクレードル3の外観を示す。クレードルとは、センサノード本体に接続して固定可能な拡張機器であり、PCとの通信、及びセンサノード1の充電を可能にする。図3においては、図2に示したセンサノード1の端子170に接触する端子300〜304を有し、センサノード1の上部を覆う形状である。センサノード1と接続した場合においても、側部から延びるケーブル305と、USB接続端子307によって、ユーザの動作を妨げることなく、外部機器のUSBポートに接続できることを特徴とする。クレードル2とセンサノード1は、ツメのような形状である固定部306によって固定するため、センサノード1を身に付けたユーザが動いたり、ケーブル305を引っ張った場合においても容易に外れることがない。また、LCDに接する上部は、LCDの内容を視認するのを妨げることがないように、中心部を窓状に開ける。
また、ケーブル305と反対側の側部においても、スイッチ141、142の操作を妨げることがないように、中心部を空けた形状とする。従って、クレードル3で接続中においても、センサノード1を身に付けたユーザは、センシングや様々な操作を妨げられることなく、日常動作を続けることができる。
図4は本発明を適用したクレードル3を、センサノード1と接続した場合の外観を示す。図4においては、図3で示したように、クレードル3が、リストバンド2によるユーザの装着、脈拍センサ137によるセンシング、スイッチ141,142の操作、LCD134の表示を妨げることなく接続されることを特徴とする。また、クレードル3の寸法は、センサノード1と比べて1割程度大きいだけであり、ユーザへの負担は、センサノード1のみを装着する場合と変わらない。
図5は、図4に示したクレードル3を接続した状態のセンサノード1を身に付けた場合の外観を示している。図5においては、センサノード1にクレードル3をセットし、パーソナルコンピュータ5のUSBポート7にUSB接続端子307を接続した状態で、有線通信または充電中においても、LCD134に表示される現在時刻401や、脈拍センサ等でセンシングした波形402、センシング中を示す記号403等を視認できることを特徴とする。つまり、ユーザ10からのセンサノード1の利用は、クレードル2を接続していても阻害されない。
図6は、センサノード1、センシングデータを受信可能な所定のパーソナルコンピュータ5、及びゲートウェイ510のブロック図である。図6においては、所定のパーソナルコンピュータ5において、センサノードから基地局に無線送信されるデータとセンサノードから有線送信されるデータを受信し、いずれのデータも同様に、データベース502に格納し、データ解析/表示部501にて処理可能であることを特徴とする。
パーソナルコンピュータ5は、USBで通信可能な機器を接続するUSBポート505、506を備え、USBポート505、506を介してアプリケーションが通信することを容易にするUSBドライバ504と、USBドライバを介して受信したデータをデータベース502に記録し、必要があればデータ解析/表示部501に送信する無線/有線通信部503と、すべてのセンシングデータに時刻情報を付加して記録するデータベース502と、人の活動をセンシングしたデータを解析して、人の健康状態等を導き出し、ユーザに表示可能なデータ解析/表示部501から構成される。ケーブル305によって、センサノード1とパーソナルコンピュータ5が接続されると、センサノード1は通信開始要求を送信し、無線/有線通信部503はレスポンスを返すことにより、センサノード1側からデータを確実に送信できることを確認した上で、有線通信を開始する。
パーソナルコンピュータ5に、センサノードから基地局に無線送信されるデータを受信してデータを取り込むには、ゲートウェイ510をUSBで接続する。ゲートウェイ510はアンテナ520を介して無線でセンサノード1と通信する無線通信部511と、受信したデータが圧縮データであれば解凍し、USB通信部513に送信するマイクロコンピュータ512と、マイクロコンピュータ512からシリアル通信にて受信したデータを、USB規格で外部機器に送信し、またはUSB規格で受信したデータをシリアル通信にて送信するUSB通信部513で構成される。
図7は、図1のROM120に記録されたプログラム121に記述されるセンサノード1の処理のフローチャートを示しており、特に処理P101〜P105はセンシングプログラム122に記述され、処理P110は有線通信プログラム123に記述されている。P106はRAM110から読み出して、読出アドレス117と読出アドレス118が一致しているか判定し、P107は有線接続状態113から有線接続中であるか判定する。P108ではストレージ160からデータを読み出して無線送信し、P110では有線送信する。
図7においては、リアルタイムクロック138から信号を受けた割込制御部106からの割込みにより、他の処理P107〜110を実行中であっても、直ちに処理P101を実行し、常に一定の周期でセンシングできることを特徴とする。つまり、割込制御部からの割り込み信号を受けて、他の処理を中断してセンシングを実行する。言い換えれば、連続的なセンシングを阻害することなく、蓄積されるセンシングデータの送信を可能とする。また、図12で説明するように、割り込み信号の発生タイミングと処理P102〜P105が重複しないように設定することにより、センシング、センシングデータの無線送信を確実に実行することができる。これにより、サーバはセンシングデータをリアルタイムに収集することが可能となる。
処理P101は、割込制御部106の割込みによって処理を開始し、加速度センサ135、温度センサ136、脈拍センサ137のいずれか、または複数でセンシングし、センシングしたデータをRAM110の送信バッファ115に記録する。処理完了後、処理P102に移行する。
処理P102は、送信用バッファ115にさらにセンシングしたデータを記録できる容量があるかを判定する。記録できない状態になった場合は処理P103に移行し、送信用バッファ115に記録されたデータを無線プロトコルに適合するパケットに変換して、所定のゲートウェイ510に無線送信する。このように、送信用バッファにセンシングデータを一時的に記録し、送信容量に達してから無線送信する。言い換えれば、複数回センシングしたあと、複数個のセンシングデータをまとめて送信する。これにより、無線送信による消費電力を大幅に削減することが可能となる。なお、1回のセンシングごとに無線送信することが可能であることはいうまでもない。
処理完了後、処理P104に移行する。無線送信の結果(成功、失敗等)を無線通信状態112に記録する。無線送信の結果の判定は、基地局から当該無線送信を受信したことを示す信号(ACK)を受信するか否かにより判断することができる。記録できる容量が残っている場合には、処理P106に移行する。
処理P104は、無線送信したパケットのデータを公知の圧縮方式にて圧縮し、ストレージ用バッファ116に記録する。適用する圧縮方式は、マイクロコンピュータ100のCPU101で処理を実行した場合に、リアルタイムクロック138が信号を生成する間隔よりも十分に短い処理時間であることが望ましい。これは、圧縮処理中のためにセンシングができないことを防ぐためである。
次に、処理P105は、ストレージ用バッファ116に1パケット容量分のデータが蓄積されていれば、ストレージ160に記録する。また、未送信データを含む場合にはフラグを0とし、それ以外は1として書き込む。ストレージ160における書き込み先の位置は、RAM110の書込アドレス118を参照し、書き込み完了後、書込アドレス118を次のアドレスに更新する。また、読出アドレス117は、送信すべき未送信データのストレージ160の内部における位置を示すため、読出アドレス117と更新前の書込アドレス118が同じで、書込んだフラグが1の場合には、読出すべき未送信データがないことになる。そのため、同時に読出アドレス117も更新する。処理完了後、処理P106に移行する。
処理P106は、RAM110に記録された読出アドレス117と書込アドレス118を比較する。アドレスが異なれば処理P107に移行し、同じであれば処理P109に移行する。つまり、未送信データを含むパケットがあるかを判定しており、読出アドレス117と書込アドレス118が同じであれば、ストレージ160に記録されたすべてのパケットが送信済みであると判断できる。
処理P107は、RAM110の有線接続状態113を参照する。有線接続がONであれば処理P108に移行し、OFFであれば処理P110に移行する。
処理P108は、未送信データを含むパケットを読み出して、パケットに対応するフラグが0であれば無線で送信する。送信が成功し、さらに未送信データを含むパケットがストレージ160に存在する場合は、読み出しと無線送信を繰りかえし実行する。読み出すパケットの位置はRAM110の読出アドレス117を参照する。処理P108は無線送信が失敗するか、ストレージ160に未送信データを含むパケットが存在しなくなった場合、処理P109に進む。また、処理P108の実行中に割込制御部106の割込みが入った場合、処理を中止して処理P101を開始する。
処理P110は、未送信データを含むパケットを読み出して、パケットに対応するフラグが0であれば有線で送信する。有線通信が可能であり、さらに未送信データを含むパケットがストレージ160に存在する場合は、読み出しと有線送信を繰り返し実行する。読み出すパケットの位置はRAM110の読出アドレス117を参照する。処理P110は有線送信ができないか、ストレージ160に未送信データを含むパケットが存在しなくなった場合、処理P109に進む。また、処理P110の実行中に割込制御部106の割込みが入った場合、処理を中止して処理P101を開始する。
処理P109は、マイクロコンピュータ110のクロックを停止して、低電力なスタンバイ状態にする。スタンバイ状態では割込制御部106、107からの割込みによって起動することができる。従って、必要な処理のない時間をスタンバイにし、処理に必要なタイミングのみ起動することで、消費電力を大幅に削減できる。ただし、RAM110の有線接続状態113を参照し、ONであれば外部から電源供給を受けているため、スタンバイにする必要はない。これは、電池147を消費しないからである。
なお、本実施例では、無線送信できなかったデータをセンサノードが自発的に送信する例について説明した。センサノードがサーバからコマンドをうけることにより、あるいは、センサノードのスイッチを介してユーザが指定することにより無線送信できなかったデータを送信することも可能である。また、本実施例では、無線送信できなかったデータを送信する例について説明したが、例えばサーバから無線送信に成功したデータの再送を要求された場合であっても、上述したフローと同様に、成功したデータを無線通信あるいは有線通信により送信できる。
図8は、図1のROM120の有線通信プログラム123に記述される、有線接続状態を検出する処理のフローチャートを示している。図8においては、外部接続検出部132から信号を受けた割込制御部107の割込みによって、他の処理を中断して、RAM110に記録された有線接続状態113及び有線通信状態114の値のみを直ちに切替えることを特徴とする。つまり、USBの接続/非接続を検出して、外部機器とUSBを介して接続されているか否か(有線接続状態)、および、外部機器とUSBを介して接続されている上、相手の外部機器がデータを受け取れる状態か否か(有線通信状態)を判定して、その判定結果を記録することを特徴とする。従って、データを有線通信により送信する際に接続を検出する処理を行う必要がないため、USBの接続を検出してから実際に有線通信を開始するまでの時間を短縮することができる。この結果、データを収集する一連の動作に必要な時間を短縮できる。
処理P201は、割込制御部107からの割込みによって開始し、処理P202は、RAM110に記録されている有線接続状態113を参照する。有線接続中であれば処理P203に移行し、有線接続中でなければ処理P213に移行する。
処理P203は、I/Oポート105に入力される外部接続検出部の出力状態を参照し、外部電源が検出されている状態であれば処理P207に移行し(Y)、外部電源が検出されていなければ処理P204に移行する(N)。
処理P213は、処理P203と同様にして、I/Oポート105に入力される外部接続検出部の出力状態を参照し、外部電源が検出されている状態であれば処理P214に移行し(Y)、外部電源が検出されていなければ処理P206に移行する(N)。
処理P204は、I/Oポート105の出力を制御して、スイッチ144を制御して、USB通信部133とのシリアル通信の信号線を遮断し、電流リークを防止する。処理完了後、処理P205に移行する。
処理P214は、処理P204とは反対に、外部電源検出後に、I/Oポート105の出力を制御して、スイッチ144を制御して、USB通信部133とのシリアル通信の信号線を接続し、通信可能な状態にする。処理完了後、処理P215に移行する。
処理P205は、マイクロコンピュータ100のクロック周波数を低速状態にする。これは、USB非接続で、内部の2次電池147から電力を供給する場合に、消費電力を下げるためである。処理完了後、処理P206に移行する。
処理P215は、マイクロコンピュータ100のクロック周波数を高速状態にする。これは、USB接続で、外部機器から電力を供給する場合には、内部の2次電池147の消費を無視できるため、通信速度を最大化するためである。処理完了後、処理P216に移行する。
処理P216は、RAM110の有線接続状態113にONを書き込み、処理P207に移行する。
処理P217は、RAM110の有線接続状態113と有線通信状態114にOFFを書き込み、処理P207に移行する。
処理P207では、処理P201開始前の中断している処理に戻る。
図9は、図7の処理P110を詳細に示しており、ストレージ160に記録されたデータを読出して有線送信する処理である。図9においては、未送信データを含むパケットがストレージ160に存在する場合、リアルタイムクロック138から信号を受けて割込制御部106から割込みがかかるか、USBが切断されるまで、データを読み出して有線送信する処理を連続して繰り返すことを特徴とする。つまり、センシングのタイミングに影響を与えることなく、可能な限り高速にデータを有線送信することができる。
処理P301からストレージデータ有線送信処理を開始し、処理P302に移行する。
処理P302は、RAM110の有線通信状態114を参照し、ONであれば処理P306に移行し、データの読出しを開始する。OFFであれば処理P303に移行する。
処理P303は、通信開始要求を有線送信し、処理P304まで接続相手となる外部機器からのレスポンスを待つ。これは、たとえUSBが接続されていても、相手となる外部機器が所定の受信動作をするパーソナルコンピュータ5でないと、正しく受信することができない可能性があるためである。
処理P304は、通信開始要求のレスポンスがある場合にのみ有線通信を開始するため、処理P305に移行する。従って、データを受信できない外部機器にデータを送信することはなく所定のパーソナルコンピュータ5にのみデータを送信できるため、無駄にデータ送信することを回避できる。これにより、収集すべきデータを欠損することがない。レスポンスがない場合には、処理P313に移行し、RAM110の有線通信状態114をOFFに書き換え、ストレージデータ有線送信処理を完了する(P312)。
処理P305は、RAM110の有線通信状態114にONを書き込み、処理P306に移行してデータの読出しを開始する。
処理P306は、ストレージ160から未送信データを含むパケットを読み出す。RAM110の読出アドレス117を参照し、対応フラグが0のパケットのみを読み出し、処理P307に移行する。
処理P307は、DMAC102を制御し、次のパケットの読出しを開始する。処理P308に移行して有線送信を開始する前に、次のパケットの読み出しを開始することにより、有線送信とパケットの読み出しを同時に実行する。有線送信がパケットの読み出し完了待ちに律速されることがないため、データの送信速度を最大化することができる。
処理P309は、処理P308完了後にRAM110の有線接続状態113を参照する。途中で接続が切断されていれば、図7に示される割込み処理によって、有線接続状態113にOFFを書き換えられているため、検出することができる。有線接続状態113がONであれば、処理P310にて読出アドレス117を更新して、処理P311に移行する。OFFであれば、処理P312に移行してストレージデータ有線送信処理を完了する。
処理P311では、RAM110の読出アドレス117と書込アドレス118を参照して、同じであればストレージ160に未送信データがないと見なして、処理P312に移行してストレージデータ有線送信処理を完了する。異なる場合には、処理P307に移行して次のデータの読出しを開始する。
図10は、図7の処理P108を詳細に示しており、ストレージ160に記録されたデータを読出して無線送信する処理である。図10においては、未送信データを含むパケットがストレージ160に存在する場合、リアルタイムクロック138から信号を受けて割込制御部106から割込みがかかるか、無線送信が失敗するまで、データを読み出して無線送信する処理を連続して繰り返すことを特徴とする。つまり、センシングのタイミングに影響を与えることなく、可能な限り高速にデータを無線送信することができる。
処理P401からストレージデータ無線送信処理を開始して処理P402に移行し、RAM110の無線通信状態112を参照する。無線通信状態112が成功であれば処理P403に移行し、ストレージから未送信データを含むパケットを読み出す。読出し位置は、RAM110の読出アドレス117を参照し、対応するフラグが0のパケットのみを読み出す。処理完了後、処理P404に移行する。また、無線通信状態112が失敗であれば、処理P408に移行してストレージデータ無線送信処理を完了する。
処理P404は、処理P403で読出したパケットを無線送信する。送信完了後、処理P405に移行して送信に対するレスポンスである基地局からのACKの受信を待ち、ACKを受信した場合は処理P406に移行して、RAM110の読出アドレス117を対応するフラグが0である次のパケットの位置まで進め、処理P407に移行する。ACKを受信できなかった場合には、処理P408に移行して、ストレージデータ無線送信処理を完了する。
処理P407は、RAM110の読出アドレス117と書込アドレス118を参照して比較する。アドレスが異なれば、処理P403に移行してストレージから次のデータを読出し、同じであれば処理P408に移行して、ストレージデータ無線送信処理を完了する。
図11は、センサノード1とパーソナルコンピュータ5が有線通信する際の通信フローを示している。図11においては、センサノード1とパーソナルコンピュータ5の間で、通常のUSB機器と同様の接続処理を実行するだけでなく、独自の通信開始要求を交わすことによって、確実にパーソナルコンピュータ5の所定のアプリケーションにデータを送信できることを特徴とする。
センサノード1とパーソナルコンピュータ5をステップ601にてUSBを介して接続すると、パーソナルコンピュータ5のUSBドライバ504が、センサノード1のUSB通信部133を認識する(ステップ602)。次にセンサノード1がUSBを介してパーソナルコンピュータ5から電源供給されることをトリガとして、外部接続検出部132からマイクロコンピュータ100に信号が送られ、マイクロコンピュータ100で割込みがかかる(ステップ603)。マイクロコンピュータ100は割込みをトリガとして、USB通信部133に通信開始要求をシリアル通信にて送信する(ステップ604)。通信開始要求はステップ605にてパーソナルコンピュータ5のUSBドライバ504に転送され、さらにステップ606にて無線/有線通信部503に転送される。無線/有線通信部503はステップ606の通信開始要求を受信すると、レスポンスを送信する(ステップ607)。レスポンスはステップ608にてUSBドライバ504からセンサノード1のUSB通信部133に転送され、ステップ609にてマイクロコンピュータ100に転送される。この結果、マイクロコンピュータ100では、データを確実に有線通信可能であると判定できる。また、レスポンスがない場合は、一定周期(例えば1秒周期)で通信開始要求を再送する。従って、PC側で有線通信可能になった場合、直ちに通信を開始できる。
マイクロコンピュータ100は、通信可能状態と判定すると、ステップ610にてストレージ160に読出し位置を指定した読出しコマンドを送信し、次にステップ611にてパケットの読出しを開始する。ステップ612でマイクロコンピュータ100はDMAC102を制御し、次のパケットの読出コマンドを送信し、ステップ613にて読出しを開始する。ステップ613の読出しはDMAC102によって実行され、マイクロコンピュータ100は同時にステップ611で読出したパケットをUSB通信部133に送信開始する(ステップ614)。USB通信部133で受信したパケットはステップ615にてパーソナルコンピュータ5のUSBドライバ504に転送され、ステップ616にて無線/優先通信部503に転送される。ストレージ160に未送信データを含むパケットが存在し、USBが切断されていない場合は、同様にステップ617〜621にてデータの有線送信を繰り返し実行する。この結果、無線/優先通信部503はセンサノード1でセンシングしたデータを受信することができ、データベース502への記録や、さらに所定のアプリケーションに転送することも可能になる。
図12〜14は、リアルタイムクロック138の割込み信号701、2次電池147から流れる電流702、パーソナルコンピュータ5で受信するデータの信号703を同じ時系列で示している。図12〜14においては、有線通信にてセンサノード1からデータを送信した場合の、電力消費、及び通信速度についての優位な特徴を示している。
図12は、加速度センサ135によって20ヘルツの頻度でセンシングし、センシングした3軸加速度データ(各1バイト)をRAM110の送信用バッファ115に最大限記録したのちに無線送信した場合を例示している。ただし、ストレージ160に未送信データがないものとしている。これらの条件では無線送信は1秒周期となる。
リアルタイムクロック138からの割込み信号701は、20ヘルツの頻度、即ち50ミリ秒周期で生成される。1回のセンシング(P101)に要する時間は、拡大表示710に示されるように、典型的には1ミリ秒以下で可能である。一方で拡大表示720に示されるように、無線送信(P103)は、IEEE802.15.4に従うと、典型的には100バイトの1パケットあたり10ミリ秒程度を要する。同じタイミングで、センシング(P101)と圧縮(P104)とストレージ160への書込み(P105)を実行すると、典型的には15ミリ秒を要する。これは、送信周期の1秒に対して十分に小さい。従って、消費する電流は平均すると1ミリアンペア以下となり、典型的な小型の2次電池でも数日は動作することができる。703は無線送信されたデータを示す信号であり、基地局で受信し、基地局からPCに送信され、PCで受信した信号である。
図13は、図12と同様であるが、ストレージ160に未送信データを含む場合を例示している。この場合、無線送信が可能な環境においては、ストレージ160の未送信データを含むパケットをすべて送信し終わるまで連続で読み出して送信するため、この間の電流702は平均して10ミリアンペア以上となる。これは図12の場合と比較して一桁以上大きいため、電池寿命への影響が大きい。また、拡大表示730に示すように、未送信データを含むパケットをストレージ160からの読出し(処理403)、無線送信(処理404)するのに12ミリ秒程度を要する。したがって、1パケットの最短無線送信周期は12ミリ秒に制限される。
図14は、図13と同様であるが、USBでゲートウェイ1とパーソナルコンピュータ5を接続した場合を例示しており、図12、13とは異なり外部電源からの電流704も示している。USB接続時には、外部電源からの電流704が供給されるため、内部の2次電池147からの電流702は消費しない。従って、図13に示したストレージ160からの未送信データを含むパケットの読出し、及び送信に伴う電流の消費は問題にならない。
図15に示す図14からの拡大表示740では、ストレージ160からの読出しと、ストレージ用バッファ116への格納、USB通信部133からの送信について詳細に示している。図15においては、DMAC102を利用することによって、ストレージ160からのデータ読出しとUSB通信部133からの送信を並行して実行することが可能になり、USB通信がデータの読み出しを待つ必要がないため、通信速度を最大化している。この結果、USBの通信速度を1メガビット/秒とし、ストレージ160とマイクロコンピュータ100のシリアル通信クロックを1メガヘルツ以上という典型的な値に設定すると、1パケットの送信周期は1.5ミリ秒程度にまで短縮できる。これは、図13において説明した無線通信を利用した場合と比較して約1/8に短縮できる。
図16は、無線パケット800と有線パケット810の構造を示している。図16においては、有線パケットは可変長である圧縮データを、想定される最大の長さで固定して送信することを特徴としている。これは、ストレージ160からデータを読出してUSB通信部133に転送する処理を、DMAC102を利用して実行する場合においては、長さの情報を読出して転送するデータ長を調整する処理を省いた方が高速に処理できるからである。また、固定長にして送信データ量が増加することに伴う送信時間の増加は、データ長を調整する処理の時間と比較して十分に小さいため、結果的に毎回固定長で読み出した方が高速である。
また、有線パケット810に付加されるヘッダ部(例えば、プリアンブル811と同期812)は、無線パケットに付加されるヘッダ部(例えば、PHYヘッダ801とMACヘッダ802)と比較して半分以下の長さであり、実質的に送信するデータ量は削減できる。
図17は、図1に示したブロック図における電源切替部145の詳細な構成について示す。電源切替部145では、外部電源が接続されていない状態では、スイッチ191を2次電池147とレギュレータ146の接続状態にする。さらに、ダイオード192、193により2次電池147からの電流リークを防ぐ。外部電源を接続すると、スイッチ191を遮断し、ダイオード193を通して外部電源からレギュレータ146に電力を供給する。
図18は、センサノード1からセンシングデータを収集して、解析するセンサネットワークシステムについて示す。図18においては、センサノード1を身に付けたユーザ10は、無線または有線通信によってデータをパーソナルコンピュータ5に収集し、さらにインターネット560を介して、複数のユーザの情報を管理するサーバ550で収集することを特徴とする。
なお、P103により無線送信されるセンシングデータを受信する基地局と、P108により無線送信されるストレージデータを受信する基地局は、同一であっても異なっていてもよい。また、基地局と有線接続されるPCと、センサノードと有線接続されるPCは、同一であっても異なっていてもよい。
サーバ550は、複数のユーザのセンシングデータ552を記録するデータベース551と、データベース551から任意の情報を読出して解析し、健康状態等を導き出すデータ解析部553と、解析結果やデータベース551の情報をユーザに表示可能なデータ表示部554から構成される。データ表示部554の生成する表示画面は、インターネット560を介して、ユーザのパーソナルコンピュータ5から一般的なウェブブラウザ等を介して閲覧することができる。
図19は、USB非接続時におけるセンサノード1のLCD134の表示について示している。ユーザ10はセンサノード1を装着中に、センシングデータの波形表示402、時刻情報403、無線電波状態404、電池残量405、メモリ残量406を確認することができる。モード表示401は、現在実行中のモードを表しており、図19では脈拍測定中を示している。
無線電波状態404は、即ち無線送信の結果を示しており、RAM110の無線通信状態112に基づいて表示される。また、無線通信を全く使わない場合には表示されない。
電池残量405は、電圧検出部140によって検出される2次電池147の電圧を、A/Dコンバータ104でデジタル値に変換した値に基づいて表示される。これにより、ユーザ10はUSB接続によって充電が必要なタイミングを知ることができる。
メモリ残量406は、ストレージ160に記録可能な未送信データの量を示しており、RAM110の読出アドレス117と書込アドレス118の差に基づいて表示される。これにより、ユーザ10は無線または有線通信ができない環境において、ストレージ160に未送信データを記録できる時間を推定することができる。
図20は、USB接続時におけるセンサノード1のLCD134の表示について示している。ユーザ10はセンサノード1を装着中に、センシングデータの波形表示402、時刻情報403、USB通信状態407、給電状態408、メモリ残量406を確認することができる。
USB通信状態407は、USBを介して有線送信中であることを示しており、RAM110の有線通信状態114に基づいて表示される。
給電状態408は、USBを介して外部から電源が供給されていることを示しており、RAM110の有線接続状態113に基づいて表示される。
図21は、第2の実施例であり、本発明を適用したセンサノード1のブロック図を示す。図21においては、図1のブロック図の構成に加え、ストレージ160に適用する大容量のフラッシュメモリ等と異なり、バイト単位で書き換え可能で書き換え寿命の長いEEPROM180を備えており、RAM110に記録した情報をバックアップできることを特徴とする。
これにより、2次電池147の電圧低下に伴いRAM110の情報が消えた場合においても、充電後にバックアップした情報をEEPROM180から読出して復旧することができる。これらのバックアップはフラッシュメモリ等を適用するストレージ160に記録することができるが、大容量のフラッシュメモリは書き換え単位が大きく、書き換え寿命が短いことから、小容量のデータを頻繁に書き換える用途には適さない。
本構成では、EEPROM180にパラメータ111と、読出アドレス117と、書込アドレス118をバックアップする。読出アドレス117と書込アドレス118が保持されない場合、ストレージ160の全データから、未送信データを含むパケットや記録した順序を探索する必要がある。従って、EEPROM180の追加によって、センサノード1の電池切れ後の起動時間を大幅に短縮できる。
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されるものでなく、種々変形実施可能であり、上述した各実施形態を適宜組み合わせることが可能であることは、当業者に理解されよう。