GPSモジュールを使ってみる(Arduino)
Arduino UNO にGPS受信モジュールを接続して、
位置情報を取得してみます。
今回使用する商品は、
GPS情報を受信するためのGPS受信機モジュール2製品です。
・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/
まずは、GPS受信機キットから送られてくる、GPS情報を
シリアルモニタで表示してみます。
スケッチは、Arduino IDEのスケッチ例にある、
SoftwareSerialライブラリのサンプルスケッチを利用させて頂きます。
メニューの「ファイル」 → 「スケッチ例」
→ 「SoftwareSerial」 → 「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点を変更します。
修正箇所付近を抜粋したスケッチ例です。
~ 略 ~
#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?");
}
~ 略 ~
検証してマイコンボードへ書き込み、
実行してみます。
シリアルモニタに、受信情報が逐次表示されます。
続いて、
受信情報の中から、位置情報等を一覧表示してみます。
こちらも、ライブラリとそのスケッチ例を利用させて頂くことにします。
使用するライブラリは、TinyGPSPlus(TinyGPS++)というものです。
このライブラリの詳細は、Arduiniana TinyGPS ++ ページ で詳しく紹介されています。
http://arduiniana.org/libraries/tinygpsplus/
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」を選択します。
サンプルの2箇所を変更します。
修正箇所付近を抜粋したスケッチです。
#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"));
~ 略 ~
検証してマイコンボードへ書き込み、
実行してみます。
シリアルモニタに、受信情報が一覧表示されます。
赤枠の部分が、緯度・経度表示部分です。
次に、TOPGNSS GPS Modue GN-801を使ってみます。
接続方法は図の通りです。
まずは、TOPGNSS GPS Modue GN-801から送られてくる、
GPS情報をシリアルモニタで表示してみます。
使用するスケッチは、
秋月電子通商のGPS受信機キットの時と同じで、
SoftwareSerialライブラリのサンプルスケッチの、
「SoftwareSerialExample」を使用します。
スケッチ内の修正箇所も同じです。
では、検証してマイコンボードへ書き込み、
実行してみます。
秋月電子通商のGPS受信機キットの時と同じような
メッセージ(NMEAフォーマット)に見えますが、
$ではじまる最初のセンテンス情報のデータタイプ(talkerID)
が違っています。
これは、測位に使用している衛星の違いです。
続いて、
受信情報の中から、位置情報を整理したものを表示みます。
これも、秋月電子通商のGPS受信機キットの時と同じで、
TinyGPS++ライブラリのサンプルスケッチの、「FullExample」を使用します。
スケッチ内の修正箇所も同じです。
では、検証してマイコンボードへ書き込み、
実行してみます。
秋月電子通商のGPS受信機キットの時と同じように
シリアルモニタに、受信情報が一覧表示されます。
こちらも、緯度・経度情報が表示されています。