GPS受信モジュールで現在地を受信してみる(GY-NEO6MV2)
本日はGPS受信モジュールを使って現在地をマイコンで取得してみたいと思います‼
ちょっと難しい内容かもしれませんが、不可能は無いので頑張りましょう‼
①「使う部品」
・GPS受信モジュール(GY-NEO6MV2)
電子工作ステーション 700円(送料無料)
※pinを接続するためにはんだ付けが必要となります。
はんだ付けができない場合はこちらをご使用ください⇩
・Arduino UNO
電子工作ステーション 1255円(送料無料)(互換ボード)
※UNO以外の物でも大丈夫です。
・ジャンパーワイヤー(オス・メス)(4本)
電子工作ステーション 1セット(10本)100円+送料(500円以上で無料)
②「回路図」
GY-NEO6MV2 | Arduino |
VCC | 5V |
GND | GND |
TX | 2 |
RX | 3 |
③「開発環境」
・Arduino IDEというソフトを使ってプログラムをArduinoに書き込みます!
※Arduino IDE導入済みの方はスキップしてOKです。
Arduino IDEをダウンロードされていない方は、こちら↓の①「Arudino IDEをダウンロード」参考に!
Arduino IDEでESP-WROOM-02(ESP8266)とESP-WROOM-32を使えるようにする!(Windows10)
次に、GPSセンサーで取得した値を見やすく表示するためのライブラリーを入れます‼
TinyGPS++というライブラリーで、これを入れることで、GPSデバイスから位置情報などを見やすく表示してくれます‼
Arduino IDEを開きツール→ライブラリーの管理→検索するところに「TinyGPS」と入力→「TinyGPSPlus by Mikal Hart バージョン」
というのが出てくるかと思いますので、それをインストール、これで準備完了です‼
④「プログラミング」
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | #include <TinyGPS++.h> #include <SoftwareSerial.h> // シリアル通信に使用するpinを指定。 int RXPin = 2; int TXPin = 3; int GPSBaud = 9600; // TinyGPS++オブジェクトを作成する TinyGPSPlus gps; // 「gpsSerial」というソフトウェアシリアルポートを作成します SoftwareSerial gpsSerial(RXPin, TXPin); void setup() { // シリアルポートを9600で起動します Serial.begin(9600); gpsSerial.begin(GPSBaud); } void loop() { while (gpsSerial.available() > 0) if (gps.encode(gpsSerial.read())) displayInfo(); // 5000ミリ秒が経過し、文字が入力されていない場合「No GPS detected」とエラーを表示します。 if (millis() > 5000 && gps.charsProcessed() < 10) { Serial.println("No GPS detected"); while(true); } } void displayInfo() { if (gps.location.isValid()) { Serial.print("Latitude: "); Serial.println(gps.location.lat(), 6); Serial.print("Longitude: "); Serial.println(gps.location.lng(), 6); Serial.print("Altitude: "); Serial.println(gps.altitude.meters()); } else { Serial.println("Location: Not Available"); } Serial.print("Date: "); if (gps.date.isValid()) { Serial.print(gps.date.month()); Serial.print("/"); Serial.print(gps.date.day()); Serial.print("/"); Serial.println(gps.date.year()); } else { Serial.println("Not Available"); } Serial.print("Time: "); if (gps.time.isValid()) { if (gps.time.hour() < 10) Serial.print(F("0")); Serial.print(gps.time.hour()); Serial.print(":"); if (gps.time.minute() < 10) Serial.print(F("0")); Serial.print(gps.time.minute()); Serial.print(":"); if (gps.time.second() < 10) Serial.print(F("0")); Serial.print(gps.time.second()); Serial.print("."); if (gps.time.centisecond() < 10) Serial.print(F("0")); Serial.println(gps.time.centisecond()); } else { Serial.println("Not Available"); } Serial.println(); Serial.println(); delay(1000); } |
ビルド後、シリアルモニターを開き、こんな表示がでたら配線などが違うので
ご確認ください。
⑤「結果」
室内だとなかなか取得されず、窓際に置いたら10分ぐらいで取得され始めました‼
しかし、窓際でも精度はイマイチ、外に出してみたところ結構正確に測定できるようになりました。
緯度、経度、高度、共にだいたいあってますね‼
自分でGPSを測定してみるのも中々楽しいです。
是非皆さんもお暇があればやってみてください^^
参考サイト⇩
Interface ublox NEO-6M GPS Module with Arduino