7segduino Application (6) GPS Clock

2014年07月18日

GPSを使ったシンプルな時計です。

GPS in action

1. 回路図

GPSのシリアル出力を7segduinoにつなげます。

Scematic

今回、電源はUSBからとりました。GPSの消費電力が大きい様ですので、電池での駆動には工夫が必要です。

2. プログラム

シリアル経由で送られてくる情報から時刻の情報だけを取り出して表示しています。(ダウンロード)

時刻は世界標準時(UTC)なので、9時間を足して日本時間(JST)に変換しています。


/*
 GPS clock for 7segduino
 2014/05/25
 morecat_lab
*/

#include <Sseg.h>

// offset = 9 hours, JST
#define TIMEZONE 900

Sseg mySseg = Sseg(4, 8, 11, 13, 14, 2, 10, 12, 3, 6, 7, 9);

long time = 8888;
int sec = 0;

void setup() {
 Serial.begin(9600);

 mySseg.setZeroSupress(0);
 mySseg.begin();

}

void parseLine(char *s) {
 char *p;

 p = strtok(s, ",");
 if(strcmp(s, "$GPRMC") != 0) {
 return;
 }
 p = strtok(NULL, ",");
 time = atol(p) / 100 + TIMEZONE;
 if (time > 2400) {
 time -= 2400;
 }
 sec  = atol(p) % 100;
}

void loop() {
 static char buf[256];
 static int ptr = 0;

 while (Serial.available() > 0) {
 if (((buf[ptr] = Serial.read()) == '\n') ||
 ((buf[ptr] == '\r'))) {
 buf[ptr] = 0;
 parseLine(buf);
 ptr = 0;
 } else {
 ptr++;
 }
 }

 mySseg.writeNum(time);
 if ((sec % 2) == 0) {
 mySseg.setDot(1);
 } else {
 mySseg.clearDot(1);
 }
 mySseg.updateWithDelay(3);
}

3. 実装

GPSモジュールに付属していたコネクタ付きのケーブルを切断して、7segduinoのコネクタに接続しました。

Connector

また、同じコネクタから電源を供給するためのケーブルも出しました。

FTDIアダプタ経由で7segduinoにプログラムを書き込んだ後、コネクタをつなげば動作します。

GPSが衛星をとらえるまで5分から10分程度かかります。

Simple GPS Clock

Simple GPS Clock

(了)

コメントは受け付けていません。