名刺サイズの超小型PC「ラズパイ」で遊ぶ(第61回)
ラズパイの時計をGPSモジュールと同期させる 実装編
前回はラズパイを使ってGPSの信号を受け取るところまで設定しました。今回はラズパイの内部時計としてGPSモジュールを使う方法について紹介します。
まずはGPSで受信しているデータから日付などの情報を得るようにします。「gpsdata.sh」というシェルスクリプトを使います。nanoを起動して以下の内容を記述しましょう。
#!/bin/sh
echo start at `/bin/date`
GPSDATE="`/usr/bin/gpspipe -w | /usr/bin/head -10 | /bin/grep TPV | /bin/sed -r 's/.*"time":"([^"]*)".*/1/' | /usr/bin/head -1`"
echo $GPSDATE
/bin/date -s "$GPSDATE"
echo end at `/bin/date`
gpsdata.sh
このスクリプトを実行してみましょう。
$ sudo bash gpsdata.sh
すると以下のように表示されます。
start at Mon 28 Feb 2022 01:34:53 PM JST
2022-02-28T04:34:53.000Z
Mon 28 Feb 2022 01:34:53 PM JST
end at Mon 28 Feb 2022 01:34:53 PM JST
これでラズパイの時刻がGPSユニットによって較正されるようになりました。
あとは定期的に較正されるように「crontab」を設定します。
$ crontab -e
としてcrontabを編集モードで起動します。このファイルの最後に、以下のように記述します。
* */1 * * * sudo bash /home/pi/gpsdata.sh > /home/pi/gpsdata.log 2>&1
crontab
ここでcrontabについておさらいしておきましょう。実行時間は分、時、日、月、曜日を指定できます。それぞれ半角を開けて記述します。時は24時間表記で、曜日は0~6までが日曜日~土曜日に割り当てられています。例えば毎週金曜日の12時に実行したい場合は、以下のように指定します。
0 12 * * 5 bash /home/pi/hogehoge.sh
今回は上記のように指定していますが「*/1」というのは「1時間おき」という意味になります。このため1時間おきにファイルを実行して時刻合わせをすることになります。ここでは時刻を合わせるとともに、「gpsdata.log」というログファイルを保存しています。
ラズパイにNTPを設定してGPSユニットと同期する
では次に、ラズパイをNTPサーバにしてPCの時刻を合わせられるようにしましょう。NTPサーバとは、正しい時刻を配信しているサーバのことで、Windowsでは「time.windows.com」がNTPサーバとして最初に登録されています。
まずはラズパイにNTPサーバをインストールします。以下のコマンドを入力します。
$ sudo apt install ntp
NTPサーバをインストールしたら、設定ファイル「ntp.conf」を開き、記述を追加します。
$ sudo nano /etc/ntp.conf
このファイルでは、先頭にある「server 0」から「server 3」までの冒頭に#を入れてコメントアウトし、
erver 127.127.28.0 minpoll 4
fudge 127.127.28.0 time1 0.183 refid GPS stratum 1
を最後に追加します。全体の内容は以下のようになります。
# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help
driftfile /var/lib/ntp/ntp.drift
# Leap seconds definition provided by tzdata
leapfile /usr/share/zoneinfo/leap-seconds.list
# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example
# pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server will
# pick a different set every time it starts up. Please consider joining the
# pool:
#pool 0.debian.pool.ntp.org iburst #←ここをコメントアウト
#pool 1.debian.pool.ntp.org iburst #←ここをコメントアウト
#pool 2.debian.pool.ntp.org iburst #←ここをコメントアウト
#pool 3.debian.pool.ntp.org iburst #←ここをコメントアウト
# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.
# By default, exchange time with everybody, but don't allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict -6 default kod notrap nomodify nopeer noquery limited
# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1
# Needed for adding pool entries
restrict source notrap nomodify noquery
# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
server 127.127.28.0 minpoll 4 #←ここを追記
fudge 127.127.28.0 refid GPS stratum 1 #←ここを追記
/etc/ntp.conf
Windows PCでラズパイのNTPを使う
では設定したNTPサーバを使って、Windows PCの時計を較正するようにしましょう。タスクバーいちばん右にある日時と時間が表示されているところを右クリックし、「日時を調整する」を選びます。下の方にスクロールすると「関連リンク」に「その他の時計」という項目があります。これをクリックします。
「日付と時刻」が表示されたら、「インターネット時刻」のタブを選んで「設定の変更」を選びます。
「サーバー」の箇所にラズパイのサーバ名を入れます。デフォルトだと「raspberrypi.local」です。入力したら「今すぐ更新」をクリックして更新したあと、「OK」で画面を閉じます。これで設定は終了です。
Copyright © ITmedia, Inc. All Rights Reserved.
名刺サイズの超小型PC「ラズパイ」で遊ぶ
今やスマートフォンアプリで何でも完結できてしまう時代。しかし、一から自分の手でデバイスを作り上げ、試行錯誤しながらアイデアを具現化する楽しさは格別です。この連載では、テーマや用途にあわせてマイクロコンピュータ(マイコン)と呼ばれる名刺サイズの超小型PC「Raspberry Pi」(通称ラズパイ)の活用方法から具体的な工作手順までを紹介します。
この記事の著者
関連記事
こんなメディアも見られています
ITmedia NEWSに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
本日の新着記事
アクセスランキング
-
1
メルカリ、梨の転売疑惑に「盗品の出品は確認されず」 誹謗中傷には利用制限も
-
2
Anthropic、「Claude Opus 5」公開 Fable 5に迫る性能を半額で――サイバー安全策は緩和、拒否時は自動フォールバックも
-
3
「iPhone高騰」はこれからも続く? 中国CXMTに近づくApple、メモリ競合へのけん制が不発に終わりそうなワケ【後編】
-
4
「ニューロマンサー」実写ドラマ、Apple TV+で2027年1月配信開始へ
-
5
検索結果に「詐欺ではありません」と表示させる詐欺手口、警視庁が注意喚起 AI要約も餌食に
-
6
「こんなのに追われたら……」急斜面もやすやす爆走、中国製の車輪付き四足ロボのデモ動画が話題 最高時速20km超
-
7
海外の新作バカゲー「電車アタック」にマンガ家が感心した理由 ブッ飛んだ内容と完成度の高さ、そして“日本”
-
8
「めっちゃカメレオン」公式Discord乗っ取り 担当者PCがマルウェア感染、管理者が全員BANに 現在は復旧
-
9
暑さ対策が熱い! 「猛暑対策展」で感じた、転んでもただでは起き上がらない日本人のエネルギー
-
10
スーパーに並んだ「ごちゃごちゃ生成AIポップ」が物議 “看板王”こと、きぬた歯科院長「これはアリ」
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR