2018年 春期 応用情報技術者試験 問7
児童の見守り機能付き防犯ブザー
Q社は,児童の見守り機能付き防犯ブザー(以下,防犯ブザーという)を開発している。防犯ブザーは,ストラップを引き抜くとブザーを大音量で鳴動させて周囲に危険を知らせる機能,ブザーが鳴動開始した場合及び鳴動停止した場合に,その動作(以下,ブザー動作という)をサーバに通知する機能,及びGPSで測位した緯度・経度をサーバに通知(以下,位置登録という)することを定期的に行う機能をもつ。サーバとの通信は,携帯電話回線経由で行う。
保護者は,利用者IDとパスワードでサーバにログインして,ブザー動作の通知を電子メールで受信するためのメールアドレスを登録したり,防犯ブザーの位置を地図画面で確認したりすることができる。
防犯ブザーの外観とシステムの構成を図1に示す。
【防犯ブザーの構成】
防犯ブザーは,省電力機能を備えたMPU,日付時刻用タイマ,ブザー,押抜式のストラップ,GPSユニット,移動検出ユニット,通信部,充電式電池,及び充電のためのUSB端子で構成される。
MPUは,通常モード及び省電力モードの二つのモードをもち,省電力モードに移行する命令を実行すると,消費電力の少ない省電力モードに移行する。省電力モードで割込みが発生すると,通常モードに復帰する。
MPUは,16ビットタイマをもつ。このタイマはダウンカウンタで,カウンタに値を設定して動作を開始すると,カウント値が0になった次のカウントクロックで割込みを発生させる。また,このタイマのカウントクロックはMPUの動作クロックを32分周した信号である。
なお,MPUの動作クロックは,16MHzである。
日付時刻用タイマは,1秒単位で日付時刻を設定することができる。日付時刻を設定して動作を開始すると,設定した日付時刻になったときに割込みを発生させる。
移動検出ユニットは,一定以上の揺れを検出するためにも防犯ブザーが移動しているものとして割込みを発生させる。
【防犯ブザーの仕様】
・ストラップの引抜き(以下,抜去という)が発生するとブザーの鳴動を開始し,ストラップの差込み(以下,挿入という)が発生するとブザーの鳴動を停止する。
・防犯ブザーが通信圏外にある場合は,位置登録及びブザー動作のサーバへの通知は行わない。
・防犯ブザーが通信圏内にある場合は,定期的に位置登録を行う。また,ブザー動作を行ったときは,その内容をサーバに通知する。
・通信圏内では,移動状態又は静止状態の,いずれかの状態をとる。移動状態では,位置登録の周期(以下,登録周期という)を5分にする。静止状態では,消費電力の低減を図るために登録周期を30分にする。通信圏外から通信圏内に入った直後は,状態を静止状態にする。
・静止状態で移動を検出すると,直ちに位置登録を行い,状態を移動状態にする。
・移動状態で,登録周期中に一度も移動を検出しなかったときは,位置登録を行った後,状態を静止状態にする。
【防犯ブザーのソフトウェア構成】
防犯ブザーの組込みソフトウェアには,リアルタイムOSを使用する。防犯ブザーの主な割込みハンドラの処理概要を表1に,防犯ブザーの主なタスクの処理概要を表2に,それぞれ示す。
割込みハンドラ名 | 処理概要 |
---|---|
移動検出 | 移動検出ユニットが割込みを発生させたことを,メインタスクに通知する。 |
ストラップ | 抜去又は挿入が発生したことを,メインタスクに通知する。 |
16ビットタイマ | 16ビットタイマが割込みを発生させたことを,タイマタスクに通知する。 |
日付時刻用タイマ | 日付時刻用タイマが割込みを発生させたことを,タイマタスクに通知する。 |
タスク名 | 処理概要 |
---|---|
メイン | ・移動検出割込みハンドラ,ストラップ割込みハンドラ及び各タスクからの通知を待ち,受けた通知に従って防犯ブザーの状態の管理,登録周期の管理,位置登録の処理及びブザー動作の処理を行う。 |
測位 | ・メインタスクからの要求を待ち,要求に従ってGPSユニットを起動して測位を行い,結果をメインタスクに通知する。 |
通信 | ・一定間隔で,通信圏内にあるか否かを確認し,メインタスクに通知する。 ・メインタスクからの要求を待ち,要求に従ってメッセージをサーバに送信する。 |
タイマ | ・メインタスクからの,登録周期の計測開始,登録周期の計測停止,及び登録周期の変更の要求を待ち,要求に従って日付時刻用タイマを設定して,動作を開始又は停止させる。動作を開始させた場合は,日付時刻用タイマ割込みハンドラから通知を待つ。 ・日付時刻用タイマ割込みハンドラから通知を受けると,同じ登録周期で再度日付時刻用タイマを設定して動作を開始させた後,位置登録のタイミングであることをメインタスクに通知する。 |
アイドル | ・他の全てのタスクが待ち状態になると実行され,MPUを省電力モードにする。 |
【メインタスクの主な処理】
・通信圏外にある場合に,通信タスクから通信圏内となったことを通知されると,状態を静止状態にして位置登録を行い,登録周期の計測を開始して移動検出割込みを許可する。
・移動を検出したことが通知されると,移動検出割込みを禁止する。その後,防犯ブザーの状態に従って次の処理を行う。
-静止状態であれば,aを行い,状態を移動状態にしてbを変更した後,移動を検出したことを記憶するメモリ領域(以下,移動検出情報という)をクリアして,移動検出割込みを許可する。
-移動状態であれば,移動検出情報のセットだけを行い,移動検出割込みは禁止したままとする。
・移動状態で位置登録のタイミングであることが通知されると,①移動検出情報を確認して処理を行う。その後,移動検出情報をクリアして移動検出割込みを許可する。
・通信圏外であることが通知されると,移動検出割込みを禁止し,登録周期の計測を停止する。