Monthly FB NEWS 月刊FBニュース 月刊FBニュースはアマチュア無線の電子WEBマガジン。ベテランから入門まで、楽しく役立つ情報が満載です。

My Project

第37回 GPSモジュールを使ってみよう【前編】

JP3DOI 正木潤一

2023年12月1日掲載


モジュールと汎用LCD

GHz帯が活気を帯びはじめています。GHzともなると電波の振る舞いがVHFやUHFとだいぶ異なってきます。GHz時代へ適応する意味も含め、GHz帯の信号を扱ってみたいと思います。ところで、月刊FBニュースではこれまでGPSモジュールから位置情報を取得する目的では製作記事が無かったように思います。

そこで今回は、安価に手に入るGPSモジュールを動作させ、出力されるデータ(センテンス)を前号で製作した『汎用LCD』に表示させてみたいと思います。

GPSの基本

・仕組み
ご存じのように、GPS(Global Positioning System)とは、複数の衛星から送信される1.575GHzの電波を受け、信号の到達時間の差から3次元で位置情報を得る仕組みです。GPS衛星には極めて正確な原子時計が搭載されており、信号の送信時刻と到達時刻の差から衛星との距離が求められます。最低4つの衛星から信号を受信できれば位置を算出できますが、多いほど精度が高くなります。

・趣味としてのGPS
もはや自分の位置情報がいつでもスマホで分かる時代です。確かにスマホやカーナビなどの機器はGPSデータを位置情報として地図上にマッピングしてくれるため、実際に内部のGPSモジュールがどんな信号を出力して、それをアプリがどのように加工して地図にマッピングしているかを知らない方が多いと思います。モジュールを使って自分で位置情報を表示するためにはGPSの生データを扱う必要があるので、GPSの仕様について学ぶ必要があります。すなわち、新しい知識を得るチャンスです。それが電子工作の醍醐味だと思います。

・無線機に使われているGPS
無線家にとってハンディー無線機も身近なGPS搭載機器です。例えばアイコムのID-52にもGPSが内蔵されていて、現在地から最寄りのレピーターを見つけたり、目的地に導くグランド・ナビゲーターとして使ったりすることができます。


位置や高度などが表示されるほか、目的地に近づいたことを知らせる機能など、
GPSを利用した機能が搭載されている。(ID-52の取説より)

これらの情報は内蔵GPSモジュールが出力する様々なデータ(センテンス)を元に加工したものです。多くのGPSモジュールは『NMEA 0183』(※)という仕様に基づいた標準書式でセンテンスを出力します。このデータには位置情報とともに多くの情報が含まれていますが、直接見ただけでは分かりません。
※受信機や航法機器の通信に使用されるプロトコル


表示されている情報はGPSモジュールから取得したセンテンスを加工したもの。

・GPSモジュールから得られる情報=センテンス
GPSモジュールが出力する主なセンテンスは以下のようなものです。
“$”に続いてセンテンスの種類、“,”を区切り文字にデータが続く書式で、各センテンスの最後には制御文字(<キャリッジリターン><ラインフィード>)が付きます。詳しくは使用するGPSモジュールやインターネットを参照してください。

要は、GPSモジュールから出力されるこれらのセンテンスの特定のフィールドから必要なデータを取り出して、所望の情報を得ることがGPSの使い方です。

$GPGGA, UTC(協定世界時), 緯度, 北緯/南緯, 経度, 東経/西経, 信号品質(0~9), 捕捉衛星の数, ・・・ など
センテンスの書式(GPGGAセンテンスの例)


主なセンテンスの種類。(ID-52の取説より)

・モジュールとの通信接続
GPSデータを表示させるデバイスと通信タイプによって接続方法が異なります。大抵のGPSモジュールからはTTLレベルシリアル信号が出ていて、マイコンとはUARTポートを介してそのまま接続できます。PCやタブレットと接続するには変換回路(IC)が必要になります。


GPSモジュールと機器の接続

以前、少しGPSで遊んでみたことがあります。といっても、GPSモジュールにUSB-TTLシリアル変換ICを繋げてPCに接続してみただけです。当時はノートパソコンの地図上に歩いた軌跡をプロットしただけでした。


変換ICを使ってPCとUSB接続できるようにした例。(今回とは別のGPSモジュール)

GPSモジュールを使ってみる

・安価なモジュール『GPS-54』


実物の写真

今回は秋月電子で扱われている『GPS-54』(\2,000)を使います。ほぼ20mm角という小さなサイズです。3.1Vから動作しますが、消費電流が56~75mAと多いので、リチウムポリマーバッテリー(3.7V)、あるいはモバイルバッテリー(+3.3Vレギュレーター)を使うのが経済的だと思います。

外付け部品としては、ホットスタートおよび設定保存のためのバックアップバッテリーくらいです。CR2032のコイン電池を使いました。ホットスタートとは、前回測位した情報を覚えておくことで起動後の測位を早くすることです。


モジュール周りの配線図

秋月電子のサイトにある説明書通りに回路を組みました。バックアップバッテリーにはCR2032コイン電池を使いました。


コネクタを介してGPSモジュールを基板に実装したところ。
三端子レギュレーターはモジュールの下に実装してある。

・通信接続と設定
PCとの接続にはUSBかRS-232、PICマイコンやラズベリーパイなどとはUARTで接続します。3.3Vレベルシリアル信号なので、無線機のプログラミングケーブルが使えます。アイコムのOPC-478UC/-1の中身はUSB-TTLレベルシリアル変換回路なので、PCとのインターフェースに利用できます。ただし、OPC-478UC/-1は半複信通信なので、読み出しと送出でその都度配線を繋ぎ変える必要があります。


OPC-478UC/-1はシリアル-USB変換に使えるが、
GPSデータ受信とコマンド送信とで配線を繋ぎ変える必要がある

モジュールからのデータを表示や設定変更コマンド送信には、シリアル通信ソフトを使います。『Tera Term』が有名ですが、私は『SerialDebugger』を使っています。なお、このソフトは『第31回 IC-705のワイヤレスリモコン(Bluetooth解説編)』でBluetoothモジュールの設定変更にも使用しました。

GPSモジュールからは1秒おきにデータが読み込まれ、受信データログに表示されます。

モジュールを起動させると、続々とデータが出力される。

・ボーレートを変更する場合
このモジュールの初期ボーレートは9600bpsです。これに合わせて通信相手側が変更できるのであればこのままで構いません。私の場合、後のことを考えて通信ボーレートを一番低い4800bpsに変更しました。ボーレートを変更するには、GPSモジュールにコマンドを送ります。


設定変更コマンドを送信した様子

コマンドを送出した後は受信したデータが文字化けを起こします。ボーレートが切り替わった証です。『SerialDebugger』側のボーレートを4800bpsに変更すると再び正しいデータが受信できます。

なお、このモジュールは電源投入時に設定などの情報一覧を出力するので、設定されているボーレートを確認することができます。


モジュール起動時に出力される設定データ一覧。“$Baud rate”が“4800”となっている。

なお、このGPSモジュールは、バックアップバッテリーを付けないと動作しません。抵抗を介してバックアップ端子に電源電圧をかけても動作はしますが、ホットスタートができない上、コマンドで変更した設定がすぐに戻ってしまいます。短時間ならば大丈夫ですが、しばらくすると設定がデフォルトに戻るため、再びコマンドを送出する手間がかかります。なので必ずバックアップバッテリー(3V)を付けたほうがよいです。

・参考:パッチアンテナに傷が付いている!?
入手したGPSモジュールのアンテナに傷が付いていることがあります。これは決して不良品ではなく、受信周波数にマッチングさせるためのトリミングの跡なのです。こうして生産個体ごとに少し削ることでマッチングを取るんですね。


GPSのパッチアンテナの引っかき傷は同調調整(トリミング)の跡。

・LCDにデータを表示させる
前回製作した『汎用LCD』にGPSセンテンスを表示させてみます。『汎用LCD』のマイコンにプログラムを追加して、モジュールからのGPSセンテンスをLCDに表示出来るようにしました。GPSの出力はTTLなので、『汎用LCD』のデジタル(UART)ポートに直接入力できます。

GPSデータの表示のため、前回からプログラムを変更しました。ソースコードはこちらからダウンロードしてください。


GPSモジュールからのデータ($GPRMCセンテンス)を『汎用LCD』に表示した様子。
ただし、室内なので全く測位できていないため数値はデタラメ。

GPSモジュールからのデータ。1秒に1回、6種類のセンテンスが出力されています。

前号の『汎用LCD』では、「一体これが何の役に立つんだ?」と思った方が多いと思いますが、このようにシリアルデータを表示させて動作を確認することが出来ます。もちろん、生データ(センテンス)を表示しただけではGPSとして役に立ちませんが、そこはこれから活用方法を見出していきたいと思います。

今回はとりあえず出力データをLCDに表示させてみました。次回は、実際に屋外に出して(4つ以上の衛星を捕捉して)、取得した位置情報や時刻などを表示させてみたいと思います。

My Project バックナンバー

2023年12月号トップへ戻る

サイトのご利用について

©2024 月刊FBニュース編集部 All Rights Reserved.