よく迷子になるから人工衛星"みちびき"を使って現在地を簡単に取得してみた①


はじめに

みなさんIoTライフ楽しんでますか?
RHEMS技研荒木です

今回は一家に一台必要と言われているArduinoと、誰でも活用できる人工衛星みちびきを使って現在地を取得し、自分がどこを何時に通過したかを確認できるようにします

夢がありますね!!

1回目となる今回は、Arduino・GY-NEO6MVの接続方法、使用方法を説明します

使用した機器

・Arduino UNO
・ESP-WROOM-02 開発ボード
・GY-NEO6MV2(みちびきと交信するやつ)

おおよそはこれだけです!

せつめい

GY-NEO6MV2の説明をします

電源を入力して、GNDにつなぐだけ
これだけでみちびきと交信して現在地とUTC(協定世界時)が取得できます

あとはTX・RXを所定のピンに指すだけでArduinoで現在地等を確認できます

接続するとこんなかんじ

簡単ですね!

確認するコードはこちら

#include <SoftwareSerial.h>

SoftwareSerial serialConsole(10, 11); // RX=10ピン, TX=11ピン

//電源入力時に一度だけ読まれる部分
void setup() {
  //シリアルコンソールを準備
  Serial.begin(57600);
  while (!Serial) {
    ;
  }
  Serial.println("GPS Console Complete!");

  serialConsole.begin(9600);
  serialConsole.println("Hello World!");
}

//メイン部分
void loop() {
  //なんらかの値が読み取れればそれを読む
  if (serialConsole.available()) {
    Serial.write(serialConsole.read());
  }
  //読み込んだのをシリアルコンソールに表示する
  if (Serial.available()) {
    serialConsole.write(Serial.read());
  }
}

簡単なコードなっています
そして取得できたデータがこちら

モザイクがかかっていますが、読もうと思って読めるものではないとわかりますね
気合を入れると読んで理解できるのですが、そんなことしたくないのでArduinoにライブラリを用意します

今回導入するライブラリはTinyGPS++です
導入方法は他のライブラリと同じです
これを使うことによって難なく読むことができるようになります

みちびきから送られてきたデータを読むコードはこちら

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

SoftwareSerial serialConsole(10, 11); //RX=10ピン, TX=11ピン
TinyGPSPlus gps;

void setup() {
  Serial.begin(57600);
  while (!Serial) {
    ;
  }
  Serial.println("GPS Console Complete!");

  serialConsole.begin(9600);
  serialConsole.println("Hello World!");
}

void loop(){
  while (serialConsole.available())
  {
    //入力されたデータを読めるように翻訳する
    gps.encode(serialConsole.read());
  }
  if (gps.location.isUpdated())
  {
    //緯度を表示
    Serial.print("LAT:");  Serial.println(gps.location.lat(), 6);

    //経度を表示
    Serial.print("LNG:"); Serial.println(gps.location.lng(), 6);

    //時間を表示(UTCで取得されるので+9時間して日本の時間に)
    Serial.print("HOUR:");  Serial.println(gps.time.hour() + 9);

    //分を表示
    Serial.print("MINUTS:");  Serial.println(gps.time.minute());

    //秒を表示
    Serial.print("SECOND:");  Serial.println(gps.time.second());

    Serial.println("");
  }
}

取得→翻訳したものがこちら

これで読めるようになりましたね
現時刻もしっかり取得できています

おわりに

いかがでしたでしょうか
たった4ピン指すだけで簡単に現在地を取得できる日が来るなんて思ってもいなかったですよね?
ですが、緯度・経度が座標で取得されているのでパッと見だとどこにいるかわからないですね
なので次回は取得したデータをAPIに投げ、次次回そのデータをなんらかのMapにプロットします
現在誠意開発中なので更新が遅れると思われますがあしからず
②公開しました!ぜひご覧ください!
https://qiita.com/Akijin/items/00aa775ff6f1a9931f1d

ではよきIoTライフを!!