名刺サイズの超小型PC「ラズパイ」で遊ぶ(第60回)
ラズパイの時計をGPSモジュールと同期させる 初期設定編
ラズパイはリアルタイムクロック(RTC)を持っていませんので、一度電源を落とすと時刻情報はリセットされ、次にネット接続されたときにNTPサーバから時刻情報を得るまで正しい時間を刻めません。
ラズパイが常にネットへ接続できる環境であれば問題ないですが、スタンドアロンで動かす場合で正確な時刻を得たいこともあるでしょう。
そこで登場するのがGPSです。GPSは今やスマホをはじめさまざまなデバイスに搭載されており、身近なのものになっています。GPSは位置情報の他、正確な時刻も得られます。
そこでラズパイとGPSを使っていろいろなことにチャレンジしていきましょう。まずはラズパイからGPSの状態を読むことに挑戦してみます。
GPSユニットはさまざまにありますが、今回使うのは外部アンテナが用意されている「GNSS(GPS・GLONASS・QZSS)受信機キット 1PPS出力 みちびき3機対応 アンテナセット付キット」(以下、GPSユニット)です。秋月電子通商で2680円(税込)で購入できます。外部アンテナがないモデルもありますが、アンテナを使えば本体と離れた場所で受信できるので、本体の設置場所に多少自由度が増します。
GPSはシリアル通信をしますので、ラズパイ側でシリアル通信を行えるように設定する必要があります。コンソール画面であれば「raspi-config」から設定します。
まずはraspi-configを起動しましょう。以下は最新のRaspberry Pi OSである「Bullseye」のものです。
$ sudo raspi-config
すると以下のような画面が表示されますので、「3.Interface Options」を選びます。次に「I6.Seriarl Port」を選びます。
続いて表示される「Would you like a login shell to be……」とあるところでは「いいえ」を、「Would you like the serial port……」では「はい」を選びます。
これでシリアルポートが有効になりました。
デスクトップからの設定は簡単です。左上のラズパイアイコンをクリックして表示させるメニューから「Raspberry Piの設定」を選び、「インタフェース」タブの「シリアルポート」を「有効」にすればOKです。
ではGPSユニットをラズパイに認識させるための準備をしましょう。全てコマンドラインから行います。まずはcmdline.txtを編集します。
$ sudo nano /boot/cmdline.txt
表示された内容の先頭行にコメントアウト「#」を入れて、次の内容に置き換えます。
#dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=2924e30a-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
これがすでに記述されている内容です。先頭に「#」を入れます。そのあと下の内容を入力しましょう。
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
続いて、先ほど1PPS出力をGPIO18に接続したので、その設定をします。「/boot/config.txt」に記述を加えます。
$ sudo nano /boot/config.txt
としてファイルを開いたら、最後の行へ以下のように入力します。
dtoverlay=pps-gpio,gpiopin=18,assert_falling_edge=true
1PPS(Pulse-per-second)出力とは、1秒間に1回だけ出る正確なパルス波のことを言います。GPSユニットからは1000ms(1秒)間隔で100ms(0.1秒)のパルス波が出力されるようになります。今回試用するGPSユニットは0.1秒ごとに立ち下がりのパルスが打たれますので、「assert_falling_edge=true」とする必要があります。
ここまできたらラズパイの電源を落とします。
続いてGPSユニットとラズパイを接続します。GPSユニットにある端子は、端子を右にした場合上から「VDD5V」(電源)、「GND」(GND)、「TXD」(データ出力端子)、「RXD」(データ入力端子)、「1PPS」(1PPS出力端子)と書かれているかと思います。これを順にVDD5Vはラズパイの5V端子(3番ピン)、GNDをGND(6番ピン)、TXDをGPIO15(10番ピン)、1PPSをGPIO18(12番ピン)へと接続します。GPSユニットのRXとラズパイを接続していませんが、ラズパイ側からGPSユニットへ特に指示を出しませんので接続しません。
ラズパイとGPSユニットを接続したら、ラズパイの電源を入れます。GPSユニットにある赤色のLEDが点灯します。GPSユニットの説明書には、点灯して40秒~数十分すると測位されてLEDが1秒ごとに点滅するようになります。筆者が試したときには1分程度で3個以上のGPSをつかんで3次元測位(3D-Fix)ができるようになりました。
CUIで衛星の位置情報を得る
ではラズパイで衛星の位置情報などを得てみましょう。まずはコマンドラインからの操作方法です。以下のコマンドを入力して、GPS関係のツールをインストールします。
$ sudo apt install gpsd gpsd-clients pps-tools -y
続いて導入した「gpsd」の設定をします。「/etc/default/gpsd」を編集します。
$ sudo nano /etc/default/gpsd/
nanoでファイルを開いたら、最後の行に以下の内容を追記します。
START_DAEMON="true"
DEVICES="/dev/ttyS0 /dev/pps0"
GPSD_OPTIONS="-n"
続いて「gpsd.socket」を有効化します。
$ sudo systemctl enable gpsd.socket
ここまで設定できたら、ラズパイを再起動します。
再起動したら、信号を受信しているか「ppstest」で確認します。
$ sudo ppstest /dev/pps0
信号を受信していると、以下のように1秒おきに受信している内容を表示します。
trying PPS source "/dev/pps0"
found PPS source "/dev/pps0"
ok, found 1 source(s), now start fetching data...
source 0 - assert 1645670541.000393424, sequence: 190 - clear 0.000000000, sequence: 0
source 0 - assert 1645670542.000385205, sequence: 191 - clear 0.000000000, sequence: 0
source 0 - assert 1645670543.000374884, sequence: 192 - clear 0.000000000, sequence: 0
source 0 - assert 1645670544.000365770, sequence: 193 - clear 0.000000000, sequence: 0
source 0 - assert 1645670545.000355041, sequence: 194 - clear 0.000000000, sequence: 0
……
衛星からの信号などを表示する
では受信している衛星や時刻、現在の距離を示してくれる「gpsmon」を起動してみましょう。
$ gpsmon
すると以下のような画面が表示されて、衛星の情報を表示してくれます。
上から現在の時刻とGPSが置かれている場所の緯度と経度が表示されており、画面の左下にある「GP」などが衛星の情報です。
同じようにテキストでGPS情報を見ることができるツールに「cgps」があります。以下のコマンドを入力すると、画面のように表示されます。左側が現在地点の情報、右にあるのが衛星の情報です。
$ cgps -s
なお、みちびきのWebサイトには、現在地付近にある衛星の位置を教えてくれる「GNSS VIEW」があります。これも参考にすると、どの衛星の電波を受信しているのか分かります。
上記の2コマンドはCUIのものでしたが、GUIでも表示できます。ラズパイのデスクトップからコンソールを起動し、以下のコマンドを入力します。
$ xgps
するとウィンドウが表示されて、衛星などの情報が分かります。
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
「こんなのに追われたら……」急斜面もやすやす爆走、中国製の車輪付き四足ロボのデモ動画が話題 最高時速20km超
-
6
海外の新作バカゲー「電車アタック」にマンガ家が感心した理由 ブッ飛んだ内容と完成度の高さ、そして“日本”
-
7
検索結果に「詐欺ではありません」と表示させる詐欺手口、警視庁が注意喚起 AI要約も餌食に
-
8
「めっちゃカメレオン」公式Discord乗っ取り 担当者PCがマルウェア感染、管理者が全員BANに 現在は復旧
-
9
暑さ対策が熱い! 「猛暑対策展」で感じた、転んでもただでは起き上がらない日本人のエネルギー
-
10
スーパーに並んだ「ごちゃごちゃ生成AIポップ」が物議 “看板王”こと、きぬた歯科院長「これはアリ」
ITmedia NEWS SNS
インフォメーション
注目情報をチェック
ITmediaNEWSをフォロー
あなたにおすすめの記事PR