さて今度は、GPSの実験をしてみました。
秋月電子で購入した小型高感度GPSモジュール(GYSFDMAXB)
「みちびき」にも対応しているらしいです。
これで何をやりたかったかというと・・・
①時刻を取得すること(電波時計みたいにできるのかな!?)
②ロボカップジュニアのレスキューメイズやレスキューラインで、ロボットの絶対位置を検知できれば最強ですよね。そんなことができるのか!?
の2点です。
まず、GPSモジュールをArduinoに接続します。
電源電圧は5Vなのに、入出力の信号レベルは C-MOSロジック(3.3V)ということで、ちょっと面倒なハズなのですが・・・
どうもGPSから信号を貰うだけの場合は、1本の信号線をそのまま直に接続するだけで良いみたいです。
ということで・・・
GPS(5V)<---- 5V
GPS(GND) <-- GND
GPS(TXD)<-- Arduino(D2)
こんな感じで接続しました。
そして、スケッチはこちら
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
void setup() {
mySerial.begin(9600);
Serial.begin(115200);
}
void loop() {
if (mySerial.available()) {
Serial.write(mySerial.read());
}
}
めっちゃ簡単ですね。
ArduinoとPCはシリアル通信を使う(シリアルモニタを使うので)し、ArduinoとGPSもシリアル通信を使うので、GPSとの通信はソフトシリアル通信を使っています。(そのために、D2,D3をソフト的なTX,RX端子にしている)
GPSとの通信を9600bps、PCとの通信を115200bpsに設定します。
そして、PCのシリアルモニタの通信速度を115200bpsに設定してスケッチを実行すると・・・
なにやら、大量のデータがGPSから送られてきました。
やった~ 簡単に受信成功じゃん!
と喜んだものの、そう簡単ではありませんでした。
単に、GPSとの通信ができただけで、GPSが衛星の電波を受信できているわけではありませんでした。
GPSモジュールが、衛星の電波を受信すると、モジュール上のLEDが1秒ごとに点滅します。
これで、受信ができるのですが・・・(天気にもよると思うのですが・・・)モジュールを窓際に置くと、短い時間で点滅する(衛星の電波を受信する)ように思います。
まあ、とりあえず、GPSの「はじめの一歩」は進めたということで・・・