ラズパイ(Raspbian)でGPSモジュールを使ってみる

 


OSインストール

GPSモジュールを使ってみる

 


まずはOSとしてRaspbianをインストール

昨今ラズパイにはOSをMicroSDに焼くのに新しいツールが用意されています。

Raspberry Pi Imager

これを使うと最新のOS(ラズビアン)をダウンロードしながら焼けるし、カードのフォーマットなどもできます。

でも使いたいOSイメージがネットワーク上の別の場所に置かれているような場合(過去バージョンのイメージなどを使う場合)はbalenaEtcherなどが必要になります。

 

Raspberry Pi Imager for Windowsを使ってみます。

ダウンロードしてインストール後、起動して、使いたいOSを選びます。

Desktop版(通常コチラ)

Lite版を選択する場合

 

焼くMicroSDカードを選びます。Lite版なら1.3GB程度のサイズなのでたいていのカードは使えます。

Desktopは3~5GBくらいあります。

 

焼きます。

WRITE->VERIFYはLite版は5分程度、Desktop版は25分くらいで終了。

ダウンロードしながら焼くので回線状況によって変動しますけど。

 


SSH接続の準備

このままでは、Tera Termなどで接続しようとしてもおそらく拒否されます。

Raspbianを焼いたMicroSDをエクスプローラで開きます(最初に見えているのは/bootです)。

sshというフォルダー(または 拡張子なしのsshという空ファイル)を作成します。

もしディスプレイとキーボードが使えるなら….

sshを起動

sudo systemctl start ssh

恒久化

sudo systemctl enable ssh


PCからSSHで接続

TeraTermなどを使います。

初期状態では以下でログイン
ユーザー名:pi
パスワード:raspberry

 


設定

 

設定を変更するためにraspi-configを実行します。

 

以下のような画面が開きます。

1でパスワードを変更しておきます。

2で言語設定とWi-Fiを使えるようにします(お手持ちのルーターのSSIDとパスワードを確認しておきましょう)。

4でタイムゾーンを設定、Asia->Tokyo

VNCでデスクトップを表示したい場合は

5のIntterfacing Optionsを選んで、VNC -> enabled ?でYESを選択すればOK。

外部のViewerでDesktopを表示できるようになります。

 

とりあえずこんなもんで。

で、Wi-Fi設定ではパスワードは平文(プレーンテキスト)で表示されていると思います。

country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid=”<SSID>”
psk=”<パスワード>”
}

 

暗号化しておきたい場合は、

network設定が追記されますので、wpa_supplicant.confを開いて、前の設定を削除しておきます。

 

 

IPアドレスを固定します。

例えば、有線を192.168.0.30、Wi-Fiは192.168.0.35にしておきたい場合

domain_name_serversの表記は例です、確認する場合は以下を実行

sudo systemd-resolve –status | grep “DNS Servers”
または
cat /etc/resolv.conf

 

 

最後尾に追記

interface eth0
static ip_address=192.168.0.30
static routers=192.168.0.1
static domain_name_servers=122.197.254.137

interface wlan0
static ip_address=192.168.0.35
static routers=192.168.0.1
static domain_name_servers=122.197.254.137

 

アドレスは有線、無線とも同じにしていもいいです。

ラズパイを再起動

TOP

 


ラズパイにGPSモジュールをセットして現在地を測位

通常GPSモジュールはこんな感じです。大体3000円から6000円くらいのもんです。

でもこの手の電子工作モジュールはたいがい「半田付け」という手間が必要なものが多いです。

まぁ「電子工作」というぐらいですから….。

ただ管理人のように超がつく不器用もんには敷居が高いです。

で、これ!ビットトレードワンのGPSCAP、組立済みの文字がうれしいですねぇ(7128円でしたけど)。

これはラズパイマガジンとの連動企画もんだったようです(2017年4月~)、が単体でも販売されています。こういう形態のモジュールは通常「HAT」と呼ばれますが、このGPSCAPはその要件を満たしていないので「CAP」と名乗っているそうです(CaptureのCAPかと思ってました….^^)。

少々詳しい紹介はコチラのページ参照(各種実行コードもダウンロードできます)

 

で、どこかで紹介されていたとおり、このモジュールはラズビアンOSのDesktopを前提に構成されています。GPIOのヘッダーピンに差し込んで使います。

他のOS(Ubuntuなど)で使えないか試してみましたが、モジュールをセットした時点でネット接続ができない状態になるので諦めました。

 

で、初期設定なしの場合は、LCDは点灯するものの真っ白な状態です。

Desktopの場合

 

このページからダウンロードしたGPSCAP.tarターボールを解凍してフォルダーごとラズパイにSAMBAなどでコピーしてフォルダー内のsetupGPS3.sh(ラズパイ2ならsetupGPS2.sh)を実行して再起動すれば、LCDに日付が表示され、LED1が点滅して使用可になります。

 

 

Liteの場合

 

GPSCAP.tarターボールを解凍してフォルダーごとラズパイにSAMBAなどでコピーしておくのはいっしょ。

GPSモジュールはラズビアンOSのDesktopを前提にしているのでLiteではそのままでは動きません。

以下のように必要なライブラリを追加してからsetupGPS3.sh(ラズパイ2ならsetupGPS2.sh)を実行します。

 

LCD表示は茶色いスィッチをポチポチ押せば、Date->JST->Latitude->Longitude….という具合に順次表示が変わります。

 

モジュールは衛星を補足しやすいように、開けた場所で使います、それでも初期段階での測位は少々時間がかかります。

茶色いスィッチを5秒以上長押しするとOSはhaltします(茶色いスィッチの右側にあるLED1が消灯します)。

このLED1はシェルスクリプト実行中も消灯します。ただ実行中に他のシェルスクリプト(onLED1.sh、offLED1.sh、initLCD,sh、printLCD.sh ‘Hello!’)を実行すると反応しますので回路はオープンされているようです。LED1やLCDを他の目的で使えると思います。

また、何かの理由でLED1が消灯して茶色いスィッチも機能しないことがあります(理由不明)。モジュールが停止しているのか?と思えても機能中であることがあります。jst.shなどを実行して戻り値があれば生きています。

元に戻す場合

 

 

 


測位したデータを見てみます(測位用のPythonプログラムは2で書かれていますが、Busterには2用のserialライブラリをうまく入れることができませんでした、なのでシェルスクリプトを使っています)

日付(date.sh)2020年8月5日の表記 [DDMMYY]

050820

 

時刻(utc.sh)8時13分57秒~ [HHMMSS.xxx]

081357.000
081358.000
081359.000

 

緯度・経度(tude.sh)Latitude[DDMM.MMMM]  Longitude[DDDMM.MMMM]

3444.3235,N 13530.0165,E
3444.3235,N 13530.0163,E
3444.3236,N 13530.0164,E

変換

60進

DDMM.MMMM ー> DD°MM′SS″

SS = .MMMM * 60

10進

DD + (MM * 60 + SS)/3600

 

高度(altitude.sh)[m]

113.6
113.7
113.7

 

捕捉衛星数(satellites.sh)

3

 

より詳しいことは「ラズパイマガジン」の2017年4月号参照(中古本なら1000円くらい)

 


提供されているPythonコードはversion2のものです。3で使う場合は以下のように修正。

例1:date.py

 

例2:tude.py

TOP


モバイルバッテリを使う場合

ラズパイ3 B/B+  で運用する場合は5V/2.4A以上の出力のバッテリが望ましいです。

ケーブルもその出力に対応したものが必要です(5V/2.4A対応は100均でも売ってます)。

そうでないと測位が不安定になったり、途中でモジュールが停止する場合がありました。

 


Next

測位したデータを使って、OpenStreetMapのタイルサーバーで現在地を表示


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*