ZigBeeモジュールを使用したモデル・ロケット軌道計測システムの製作

松本 哲明

 これは,今回使用したCPUの処理能力が,筆者が普段使用しているCPUと比べて非常に低かったことが原因です(本来は,ソフトウェアの基本構成を検討する段階できちんと検討しておくべき問題だった).処理能力が低いこと自体は認識していたのですが,想像以上に能力差があったため,このような事態になってしまいました.

 対策として,A-Dコンバータは割り込みを使用せず,完了状態を確認する方式に変更しました.シリアル通信に関しては,10msごとに収集していた加速度データを20msごとに収集するように変更しました.「シリアル通信ドライバを新規で作成すれば,対策が可能だったのでは?」と考える方もいると思いますが,「開発量を減らし,既存モジュールの組み合わせで開発する」という路線を守るために,筆者らはデータ量を減らすことを選択しました.

● ソフトウェア開発環境

 H8の開発環境は,ルネサス テクノロジ製のHEW(High-performance Embedded Workshop)を使用するのが一般的です.しかし,TOPPERS/JSPカーネルの標準の開発環境はGNUであるため,Hamana-4のスポンサーであるもなみソフトウェアよりGNUベースの開発環境「Pizza Factory2」を提供いただき,これで開発を行いました.

● ZigBeeモジュールの使用方法

 XBee-PROには,モジュールの設定を行うためのソフトウェア「X-CTU」が付属しています(図7).このツールを使用して,ロケットと地上局の双方のXBee-PROの設定を行います.このツールでXBee-PROのモード切り替えも可能で,802.15.4のほか,ZigBeeのコーディネータやルータとして設定することも可能です.

zu07_01.gif
図7 XBee-Proの設定ソフトウェア「X-CTU」
チャネル,相手先アドレス,自局アドレス,RF出力レベル,シリアル伝送速度などを設定する.

 今回は,ロケットと地上局というポイント-ポイント間の通信であるため,双方を802.15.4で使用することにしました.設定が必要な項目は,チャネル,相手先アドレス,自局アドレス,RF出力レベル注1,シリアル伝送速度です.これらを設定するだけで,シリアル-ZigBeeコンバータとして動作します.


注1;日本国内で使用する場合,RF出力レベルは10mW(0)以外の設定にしてはいけない.

 将来的にはロケットと地上局だけでなく,風向計測や発射管制システムも含めてZigBeeのメッシュ・ネットワークで接続し,相互にデータ通信させたいと考えています.

● 打ち上げ結果

 このようにソフトウェアの開発規模を減らす努力をした結果,作成したソフトウェアのステップ数はコメントを含めて240ラインと,非常に少なくできました(図8).このおかげで,何とか打ち上げ日までにシステムが完成しました.打ち上げは,8月30日の朝,静岡県の中田島砂丘で行いました.

図8 作成したソフトウェアのフローチャート(一部)
一定周期ごとに(a)のGgetTaskを呼び出す.GgetTaskの中でGetGdataを呼び出し,加速度データを収集する.(b)のGSendTaskはデータを受信してはセーブし,Z方向の加速度をセーブしたら送信データを作成して送信する.

zu08_01.gif
(a)加速度データ収集タスク


zu08_02.gif
(b)加速度データ送信タスク


 しかし,地上局のシリアル・コンソールから測定開始のコマンドを入力するのを忘れたままロケットを打ち上げてしまい,打ち上げは成功したにもかかわらず,データを収集できませんでした.しかも運の悪いことに,着地の衝撃でZigBeeモジュールが破損してしまったのです(スペースの関係で衝撃吸収の構造がなかったことが原因と考えられる.事前の試射では問題なく動作していたのだが...).結局,公式な打ち上げの場でデータを取得することができませんでした.

 そこで後日,ZigBeeモジュールを交換し,ノーズコーンと本体の間に衝撃吸収ゾーンを追加して再度打ち上げ,計測データを取得しました(写真4写真5図9).

photo04_01.jpg
写真4 衝撃吸収ゾーンを追加したモデル・ロケット
白いマフラーのような部分が衝撃吸収ゾーン.この追加により,全長が35mmほど延びた.

photo05_01.jpg
写真5 モデル・ロケットの発射の様子
打ち上げ場所が住宅街に近い河川敷だったため,A型エンジン(C型エンジンに比べて出力は1/4)を使って打ち上げた.

zu09_01.gif
図9 取得したZ軸の加速度から計算した高度の推移
加速度と時間(Δt:20ms)から速度の増加分(Δv)を求め,このデータからその時点の速度(v)を求め,速度と時間から移動距離(Δl)を求め,20msごとの移動距離を積算することで全体の移動距離(l)を求めた.なお,この計算方法は,計測ポイント間では等加速運動をしているということと,飛行軌道が直線であることを前提としているので,正確な到達高度が算出できているわけではない.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日