行き当たりばったり電子工作

昔の論理IC電子工作少年が、四苦八苦しながら現在の電子工作に挑戦する話。

ArduinoとGPS(1)~ GPSからのデータ受信

はじめに

車ではAndroid Autoでスマホのナビアプリを使っているのですが、ナビアプリって高度を表示してくれないんですよね。単体のカーナビはもう何年も使っていないので分からないけれど。

林道とかよく走るので「やっぱり高度計が欲しい!」ということで、GPSで遊び始めました。

使ったもの

ロジックレベル変換モジュールは8chの安いものです。8chも要らないのだけど、手元にあったのがこれだけだったので。
GPSモジュールは安い中国製も考えたのだけど、いろいろレビューを見ていると怪しいものもあったので、信頼の秋月電子のものにしました。

配線図

ArduinoGPS 配線図

ソフトウェアシリアルを使うので、IO2とIO3に接続。秋月のGPSモジュールがVDD5Vで信号線が3.3Vとなっているのでレベル変換モジュールを間に入れています。面倒だなあ。どっちかの電圧に合わせてくれればいいのにね。上の電源ラインが5V、下の電源ラインが3.3V。OEピンは10kΩ抵抗で3.3Vに接続。
そうそう、GPSモジュールは本当は5ピンありますが、VDD,GND,TX0,RX0のみ使っています。

プログラム

#include <Arduino.h>
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // 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?");
}

void loop() { // run over and over
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(Serial.read());
  }
}

これでシリアルモニタにGPSモジュールからのデータが表示されます。アンテナをつないで10~15分くらい待つと、データが流れてきます。窓際にアンテナを置いただけですが、わりあい早くデータが入ってきました。

※位置情報が分からないようにぼかしてます

GPS受信結果

バックアップ電池(CR2032)をつけておけば、前回の情報を保持しているらしく、2回目からは1分ほどで受信できるようです。

とりあえず動作OKを確認できたので、次回はGPSのライブラリを用いて液晶表示する予定です。