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

Arduino UNO にGPS受信モジュールを接続して、
位置情報を取得してみます。

今回使用する商品は、
GPS情報を受信するためのGPS受信機モジュール2製品です。

GPS受信機モジュール (表)
GPS受信機モジュール (表)
GPS受信機モジュール (裏)
GPS受信機モジュール (裏)

・GPS受信機キット 1PPS出力付き 「みちびき」3機受信対応
  秋月電子通商 ¥2,100- [AE-GYSFDMAXB]
   http://akizukidenshi.com/catalog/g/gK-09991/
   この製品は、”PCでGPSモジュールを使ってみる”で
   使用した商品で、「みちびき」を使用するものです。

・TOPGNSS 3.3-5V TTL UAR GPS Modue GN-801 GPS GLONASS デュアルモード
  AliExpress ¥918-
   https://ja.aliexpress.com/item/32951163811.html?spm=a2g0s.9042311.0.0.27424c4d5aqjEG
   この製品は、「GLONASS」使用するものです。

秋月電子通商のGPS受信機キットから使ってみます。

接続方法は図の通りです。
 この回路図の作図には fritzing を利用させて頂いております。
 https://fritzing.org/home/

回路図1
回路図1

まずは、GPS受信機キットから送られてくる、GPS情報を
シリアルモニタで表示してみます。

スケッチは、Arduino IDEのスケッチ例にある、
SoftwareSerialライブラリのサンプルスケッチを利用させて頂きます。

メニューの「ファイル」 → 「スケッチ例」
  → 「SoftwareSerial」 → 「SoftwareSerialExample」を選択します。

SoftwareSerialExampleの選択
SoftwareSerialExampleの選択

送受信用のデジタルピント番号と、通信速度を修正します。

1.送受信用のデジタルピント番号変更
 ・SoftwareSerial mySerial(11, 10); // RX, TX
  ※この設定を変更せず、回路の配線を、
   Arduinoの10番にGPSモジュールのTXD端子からの線を、
   Arduinoの11番にRXD端子からの線を配線してもよいです。

2.通信速度を変更
・Serial.begin(9600);
  ※この設定を変更せず、Arduino IDEのシリアルモニタの
   通信速度を、57600bpsに設定してもよいです。
・mySerial.begin(9600);
  ※スケッチの変更が必要です。

3.不要行をコメント行に変更
・// mySerial.println("Hello, world?");
  ※コメント扱いしなくても問題はありません。

の3点を変更します。
修正箇所付近を抜粋したスケッチ例です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
~ 略 ~
 
#include <SoftwareSerial.h>
 
SoftwareSerial mySerial( 11, 10 ); // RX, TX
 
void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin( 9600 );
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
 
  Serial.println("Goodnight moon!");
 
  // set the data rate for the SoftwareSerial port
  mySerial.begin( 9600 );
  // mySerial.println("Hello, world?");
}
 
~ 略 ~

検証してマイコンボードへ書き込み、
実行してみます。

SoftwareSerialExample の実行結果画面
SoftwareSerialExample の実行結果画面

シリアルモニタに、受信情報が逐次表示されます。

続いて、
受信情報の中から、位置情報等を一覧表示してみます。

こちらも、ライブラリとそのスケッチ例を利用させて頂くことにします。
使用するライブラリは、TinyGPSPlus(TinyGPS++)というものです。
このライブラリの詳細は、Arduiniana TinyGPS ++ ページ で詳しく紹介されています。
 http://arduiniana.org/libraries/tinygpsplus/

 TinyGPSPlus(TinyGPS++)のページ
TinyGPSPlus(TinyGPS++)のページ

1.ライブラリのダウンロードをします。
 GitHub mikalhart から TinyGPSPlus ライブラリをダウンロードします。
  https://github.com/mikalhart/TinyGPSPlus/releases

 バージョン1.0.2b の ”ソースコード(zip)” を選択します。

ライブラリのダウンロード
ライブラリのダウンロード

2.ダウンロードした、”TinyGPSPlus-1.0.2b.zip”を
 Arduino IDEへインクルードします。

 メニューの「スケッチ」 → 「ライブラリをインクルード」
    → 「.ZIP形式のライブラリをインクルード」を選択します。

ライブラリをインクルード
ライブラリをインクルード

 「インストールするライブラリを含むZIPファイル
     またはフォルダを指定して下さい」画面から、
 ダウンロードした、”TinyGPSPlus-1.0.2b.zip”を選択します。

インストールするライブラリの選択
インストールするライブラリの選択

これでインストールは完了です。

スケッチ例を選択します。

メニューの「ファイル」 → 「スケッチ例」
  → 「TinyGPS++」 → 「FullExample」を選択します。

 FullExample の選択
FullExample の選択

サンプルの2箇所を変更します。
修正箇所付近を抜粋したスケッチです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
 
/*
   This sample code demonstrates the normal use of a TinyGPS++ (TinyGPSPlus) object.
   It requires the use of SoftwareSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
*/
static const int RXPin = 11, TXPin = 10;
static const uint32_t GPSBaud = 9600;
 
// The TinyGPS++ object
TinyGPSPlus gps;
 
// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);
 
void setup()
{
  Serial.begin( 9600 );
  ss.begin(GPSBaud);
 
  Serial.println(F("FullExample.ino"));
 
~ 略 ~

検証してマイコンボードへ書き込み、
実行してみます。

FullExample の実行結果画面
FullExample の実行結果画面

シリアルモニタに、受信情報が一覧表示されます。
赤枠の部分が、緯度・経度表示部分です。

次に、TOPGNSS GPS Modue GN-801を使ってみます。

接続方法は図の通りです。

回路図2
回路図2

まずは、TOPGNSS GPS Modue GN-801から送られてくる、
GPS情報をシリアルモニタで表示してみます。

使用するスケッチは、
秋月電子通商のGPS受信機キットの時と同じで、
SoftwareSerialライブラリのサンプルスケッチの、
「SoftwareSerialExample」を使用します。
スケッチ内の修正箇所も同じです。

では、検証してマイコンボードへ書き込み、
実行してみます。

 SoftwareSerialExample の実行結果画面
SoftwareSerialExample の実行結果画面

秋月電子通商のGPS受信機キットの時と同じような
メッセージ(NMEAフォーマット)に見えますが、
$ではじまる最初のセンテンス情報のデータタイプ(talkerID)
が違っています。
これは、測位に使用している衛星の違いです。

続いて、
受信情報の中から、位置情報を整理したものを表示みます。
これも、秋月電子通商のGPS受信機キットの時と同じで、
TinyGPS++ライブラリのサンプルスケッチの、「FullExample」を使用します。
スケッチ内の修正箇所も同じです。

では、検証してマイコンボードへ書き込み、
実行してみます。

FullExample の実行結果画面

秋月電子通商のGPS受信機キットの時と同じように
シリアルモニタに、受信情報が一覧表示されます。
こちらも、緯度・経度情報が表示されています。