名刺サイズの超小型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
「スーパーリアル麻雀 VR」でゲーセン通いの日々を思い出したマンガ家、ご褒美シーンの“限界突破“に驚愕
-
3
配布前の「ちいかわ」グッズがメルカリに? くら寿司コラボ第2弾、初日から“内部犯”の臆測呼ぶ 第1弾に続き
-
4
ダークチョコ(カカオ85%)を毎日3週間食べる→ネガティブ感情が減少 70%では変化なし 韓国での研究結果
-
5
OpenAI、休眠サイトへの自社AIエージェント書き込みを認め、非公表の理由を説明
-
6
OpenAIのAIエージェント、休眠サイトを掲示板化してタスク回答を共有か 研究団体が報告書公開
-
7
開成の鉄研、寝台特急「サンライズ」での迷惑行為を謝罪 大声やラウンジ占拠など……旅行活動停止
-
8
RIZAP社員、私用AIに顧客の個人情報入力 氏名や疾患、保険証番号など……同社が謝罪
-
9
東京23区で「徒歩10分以内」に駅がない地域はどこ? 駅空白地帯マップが話題
-
10
「三省堂書店池袋本店」閉店へ 11年の歴史に幕、惜しむ声続々
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR