LoginSignup
4
5

More than 5 years have passed since last update.

GPSモジュールを使ってローカルでNTPサーバーを立ててみた

Last updated at Posted at 2016-12-17

サーバーの時間を正確にしたいのだけど、閉じたネットワークなのでインターネット上の
NTPサーバーを使えないので、GPSデータから時刻を取得するローカルなNTPサーバーを
作った。

(raspberry piでは、いろんな方が作っているのだけど普通のPCでなかなか見つけれなかったので
覚書として、、)

使ったGPSモジュールはこれ
https://www.amazon.co.jp/HiLetgo-U-blox-%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BC-GPS%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-Arduino/dp/B01D1D0F5M/ref=sr_1_2?ie=UTF8&qid=1481961666&sr=8-2&keywords=gps+%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB

結果は、RS232C(TTLレベル)で出力されるので秋月のこれをつかって
PCとはUSB接続。

必要なパッケージ(gpsd,gpsd-clients,ntp)をインストール。

●GPSモジュールの確認
gpsd-clientsをいれるとgpsmonで確認できます

また、pythonでも確認可能。
import serial
s=serial.Serial("/dev/ttyUSB0") #環境によってデバイスの名称変わります。通信速度は
モジュールが9600で、pythonもデフォルトが9600なのでこれだけで大丈夫
while True:
s.readline()

これでつらつらっと流れてくればGPSモジュールの接続確認OK。
窓際に置かないと測位はできないけど、時間だけなら部屋の中でも受信できました。

・gpsdの設定
 /etc/default/gpsdが設定ファイルです
 START_DAEMON="true"
GPSD_OPTION=""
DEVICES="/dev/ttyUSB0"
USBAUTO="true"
GPSD_SOCKET="/var/run/gpsd.sock"

・ntpdの設定
/etc/ntp.confが設定ファイルです
下記をコメントアウト(先頭に#)
 server 0.ubuntu.pool.ntp.org
 server 1.ubuntu.pool.ntp.org
 server 2.ubuntu.pool.ntp.org
 server 3.ubuntu.pool.ntp.org

その下あたりに下記を追加
 server 127.127.1.0 minpoll 4 maxpoll 4
fudge 127.127.1.0 refid GPS time1 0.0 stratum 10
restrict 192.168.11.0 mask 255.255.255.0

いろいろ調べると127.127.28.0にして共有メモリを介してgpsd→ntpdがやり取りを
するとあったのですが、どうもうまくいかなかったので、127.127.1.0にして自分を参照する
ようにしたらうまくできた

とりあえずばっちりあっているけど、ずれてこないか心配です。
初めてNTPサーバー立てたので自信がない。。

4
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5