RaspberryPi Zero WH でみちびき対応GPSモジュールを試す
今日はRaspberryPi Zero WH でみちびき対応GPSモジュールを試す手順を備忘録として残します。
環境
Pi: Raspberry Pi Zero WH
OS: 2018-11-13-raspbian-stretch
GPSモジュール http://akizukidenshi.com/catalog/g/gK-09991/
注意
詳細は「モジュール用設定」で書きますが、[/boot/cmdline.txt]を編集するとカーネルパニックになり、起動しなくなる場合があります。OSのバージョンにより編集する内容が違うようです。今回は上記の環境で動作することを確認していますが、自己責任で行ってください。
OSの書き込み
OSを準備します。
入手
公式ページからOS本体をダウンロードしてきましょう。
https://www.raspberrypi.org/downloads/raspbian/
※バージョンによって、本記事では不十分な場合があります。本環境は2018-11-13-raspbian-stretchです。
書き込み
Windowsであれば適当にフリーソフトなどを用いてOSの起動ディスクを作ってください。MacOSであればddコマンドが役に立ちます。探せばいくらでも出てくる情報なので、参考記事を載せておきます。
Windows: https://itdecoboconikki.com/2017/03/05/win32diskimager/
Mac/Linux: https://ledsun.hatenablog.com/entry/2014/10/26/174712
基本的な設定
まずはOSの基本的な設定を行います。知識のある人は個人で設定してください。あまり複雑なことをしたくないので全てをRaspi-Configで行います。
1 |
$sudo raspi-config |
このコマンドを使って選択することだけで色々設定できます。超便利。
CLI起動
GUIで起動しているなら必要ないのでCLI起動に変更しましょう。
Raspi-configを開きます。
1 2 3 |
[3]Boot Options [B1] Desktop/CLI [B1] Console OR [B2] Console Autologin |
Locale
1 2 3 4 5 |
[4] Localisation Option [I1] Change Locale [] en**忘れた** のチェックを外す [*]ja_JP.UTF8 UTF-8 にチェックを入れる None を選択 |
Timezone
1 2 3 |
[I2] Change Timezone [Asia] を選択 [Tokyo] を選択 |
Keyboard Layout
1 2 3 4 5 6 7 8 |
[I3] Change Keyboard Layout [Generic 105-key (Intl) PC] を選択 [Other]を選択 [English (US)] 自分の使ってるキーボードを選択 [English (US)] を選択 [The default for the keyboard layout]を選択 [No compose key]を選択 [No]を選択 |
Wi-fi Country
1 2 |
[I4] Change Wi-fi Country [JP Japan]を選択 |
Wifi設定
1 2 3 4 |
[2] Network Option [N2] Wi-fiを選択 SSIDを入力 Passphraseを入力 |
アップデート
1 |
[8] Update |
モジュールの接続
今回使用するモジュールはハンダ付けされていない状態です。必要に応じてはんだ付けしましょう。
電池はなくても動きます。電池がない場合GPS衛星との同期とかで立ち上がりの時間が遅くなります。
仕様書を確認しましょう。同封されていた仕様書です。(クリックで拡大表示)
Raspberry Pi Zero WHのGPIOの配置は画像の様になっています。今回の配線は簡単なので[4, 6, 8, 10, 12]のピンを使います。
回路にこんな感じです。接続には適当なジャンパ線などを使います。接続後がこんな感じ。
モジュール用設定
後はモジュール用の設定をしていきます。設定を間違えるとカーネルパニックになって振り出しに戻ります。自身がない場合は現在のSDカードをddコマンドなのでバックアップしておきましょう。
Serialコンソールを無効に
GPSモジュールとSerial通信するために、コンソールでの使用を無効化します。
編集や設定を間違えるとカーネルパニックになります。OSのバージョンによって編集内容が変わる場合があります。本環境では多分動きます。
/boot/cmdline.txt を編集します。
元々書いてある物を書き換えます。
1 2 |
$sudo cat /boot/cmdline dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait |
他の参考サイトだと、[rpitestmode=1]がない場合があります。記述しない場合、本環境だとカーネルパニックになります。
シリアルコンソールを無効化します。
1 2 |
$sudo systemctl stop serial-getty@ttyS0.service $sudo systemctl disable serial-getty@ttyS0.service |
UARTを有効化
enable_uart=1を最後の行に追加します。
1 2 3 |
$echo ‘enable_uart=1’ | sudo sh -c ‘cat - >> /boot/config.txt’ $cat /boot/config.txt | grep enable_uart enable_uart=1 |
タイムパルスの受信
dtoverlay=pps-gpio,gpiopin=18を最後の行に追加します。
1 2 3 |
$echo ‘dtoverlay=pps-gpio,gpiopin=18’ | sudo sh -c ‘cat - >> /boot/config.txt’ $cat /boot/config.txt | dtoverlay=pps-gpio,gpiopin=18 dtoverlay=pps-gpio,gpiopin=18 |
/etc/modulesにpps-gpioを追記
1 2 3 |
$echo ‘pps-gpio’ | sudo sh -c ‘cat - >> /etc/modules’ $sudo cat /etc/modules | geap pps-gpio pps-gpio |
ここで一回再起動。
1 |
$sudo reboot |
受信テスト
入手
1 2 3 |
$sudo apt update $sudo apt upgrade $sudo apt install gpsd gpsd-clients pps-tools |
設定
1 2 3 4 5 6 7 8 |
$sudo cat /etc/default/gpsd START_DAEMON="true" USBAUTO=”true’ DEVICES="/dev/ttyS0 /dev/pps0" GPSD_OPTIONS="-n" $sudo systemctl enable gpsd.socket $sudo reboot |
実際に受信してみた
1 |
$gpsmon |
一部隠していますが、こんな感じで座標を取得できます。取得までに時間がかかる場合もありますが、1分もあれば取得できるでしょう。そのうちツールを使わずに座標を取得できるようにしたいと思います。