2019年8月16日金曜日

AE-GYSFDMAXBと格闘?

今週は時間の余裕が取れそうなので、
作業を保留してたGPSユニットに手をつけることにしました。

これは「かんたんスマートモニター」にGPSを載せるためのユニット。
GPSのモジュールは秋月のAE-GYSFDMAXBを使用しています。
このAE-GYSFDMAXB、心臓部には太陽誘電のGYSFDMAXBを使用していますが、
このモジュールが どうやら製造中止方向っぽいんですね。
太陽誘電のサイトを見ても、普通には表示されません。
(グーグル等にて製品型番で検索すると見つかりますが)

なので、ちと先行きが不安ではありますが、
試作品を作ってしまってる以上、このまま廃棄するのは精神衛生上よろしくない(笑)

さておき、ソフトウェア上のアクセス方法について調査開始。
AE-GYSFDMAXBには諸々の電子部品も載っておりますが、
大雑記に言うと電源のレギュレーターと、通信線のバッファです。
なので、AE-GYSFDMAXBとのシリアル通信は、まんまGYSFDMAXBとの通信そのもの。

GYSFDMAXBとの通信は非同期シリアルです。
非同期シリアルというとRS-232Cが有名ですね。
ただ、AE-GYSFDMAXBの信号ピンは3.3VのC-MOSレベルですので、
RS-232C規格ではありません。

「かんたんスマートモニター」搭載のPICは3.3V動作なので、
AE-GYSFDMAXBのシリアル信号線を直結OK。
もしPICが5V動作だったなら、レベルコンバーターが必要になるところでした。

ハード面は問題無いとして、次はソフト面。
あくまでシリアル通信線だけで制御ということですから、
ソフト的にハンドシェイクを行うのでしょう。
ということで、GYSFDMAXBの資料を眺めてみたものの・・・・・・・
ハンドシェイクについての記述が有りません。
?????


ここでかなり紆余曲折してしまいました。
実は、ハンドシェイクはしていないというのが正解だったんです。
これ、どうやらGYSFDMAXBに限らず、他のGPSモジュールでも そうみたい。

ハンドシェイク無しとはどういう意味かと言いますと、
基本的にはGPSモジュールが一方的にデーターを送出してくるんです。

例外としてGPSモジュールへコマンドを送った際には、
直後にその返答が返ってくるようになっています。

なので、予めGPSモジュールに必要な設定を行っておけば、
電源投入後からデーターが出力されてくることになり、
マイコン側から何も送信する必要がありません。

間欠的に作業してたとはいえ、ここまで来るのに数日かかってしまいました。(;;

GYSFDMAXBからの出力データーはNMEA0183という仕様に基づいてます。
NMEA0183についてはWEB上に情報が溢れてるようですので、
そちらを参照してください。

GYSFDMAXBからの出力データーですが、複数の形式で流れてきます。
全てNMEA0183に基づいているのですが、
GPGGAやGPGLL等、中身のデーターは一部重複しているものの、
同時にこれらが出力されてきます。
要は使用者が好みで使い分ければいいだけの模様。
GYSFDMAXBへコマンドを送って設定変更すれば、
不要な形式のデータ-出力は止められます。

ちなみに私の場合はGPRMC形式を使用する予定。
これ、緯度・経度の座標データーのみならず、日時データーも含まれております。
もちろん座標データーが有効な物か無効な物かを見分ける為のデーターも含まれてる。

各衛星の詳細を把握したい場合には これだけでは情報不足ですが、
単に座標と日時を知りたいだけならば、GPRMCだけで足りてしまうのでした。

とまぁ、ここまで解ってしまえば後は簡単・・・・・・・・
かと思いきや、もう1つ難問が待ち構えてました。
座標データ-です。
緯度、経度とも、小数点以下6桁くらいの値になるんですね。
すると、経度の方は全体で9桁の値になっちゃいます。(日本の場合)

9桁の値って、Sakura.IOで送出するには一捻り必要なんですね。
そもそも小数点があるということは、そのままだと浮動小数点形式。
PICのアセンブラで扱うには かなり難が有ります。

PICの負担を減らしつつ、Sakura.IOのデーター送信量を抑えるにはどうしたらいいもんか、
今は そんなところで思案中でございます。
さすがにもう時間切れなので、また時間取れるときに先延ばしですかねぇ。

ちなみに日時データーについては全く問題がないので、
GPSから日時情報を取り出すだけなら 今すぐでも可能でございます。

0 件のコメント:

コメントを投稿