2025.06.10
GPS情報を表示できるGPSロガーを作ってみた
#電子工作 #GPS #GPSロガー #Python #Raspberry Pi Zero
トップ > 技術ナレッジのアーカイブ > GPS情報を表示できるGPSロガーを作ってみた
2025.06.10
#電子工作 #GPS #GPSロガー #Python #Raspberry Pi Zero
GPSロガーは市販のモノでも多く販売されていますが、私自身でも趣味の延長でGPSロガーを作成したことがあります。当時作成したものでも十分機能は良かったのですがさらなる改良を施したいと思い今回作成しました。
2013年にテクノプロ・デザイン社に中途入社。
POSレジシステムの開発・保守を約4年、Wi-FiとBluetooth制御ICチップを検査する専用ソフトウェアの開発・保守を2年経験。
その後、約4カ月のDST研修と2カ月OJT期間を経て現在のデータサイエンス業務に配属。
主にPoC実装・分析業務を担当。
趣味はRaspberry Pi、パン作り。
2021年1月ごろにGPSロガーを作ったことがありました。
当時はWi-Fi機能がないRaspberry Pi Zeroを何とか生かしたくて考えた結果、GPSモジュールを購入することを決めました。扱い方もよくわからず、ネットで調べてライブラリだよりで取得したいGPS情報を取得してCSVを出力するガジェットを何とか作成した覚えがあります。
いざ、動かしてみると精度も悪くなく、いろんなところに行くときには必ず持ち込んでデータを出力してはPythonで可視化して遊んだりしていました。
時には実家に送る荷物の中にGPSロガーを仕込んで経路を確認したこともありました。
昨年に遠出する機会があり、久しぶりに持ち込んだんですがデータが出力されておらず可視化することができませんでした。ちょっとショックでしたが不便なこともあったので今回はそれを改善しようと思います。
今回、改良したい内容は以下の通りです。
Zeroに加えてバッテリー、そしてGPSモジュールにアンテナを加え、かつデータの取り出しやすさを考えてUSBメモリに書き込む形にしていましたがこれが結構場所をとるので、SDカードに変更しました。SDカードを選択した理由は他にもあります。USBメモリを扱うモジュールが無い事や、SDカードを扱うライブラリがあり扱いやすいというのもあります。
結局GPSモジュールはそのままにほかの機材を変更して軽量化を図ります。
これは使用して常に感じていたことですが画像の通りディスプレイがないのでGPS情報が取得できているかよくわかりません。一応、GPS取得が成功するとモジュールのLEDランプが点滅はしますがプログラムが正常に動作しているかまではわかりません。
このせいで私はデータ出力することに何度も失敗したことがありました。
なのでここは絶対に直したいところです。
これはついでですが、以前に失敗した荷物の配送経路取得のリベンジでGPS取得時間の延長を図るため、電力消費量が少ないデバイスを選びたいと思います。
先ほど挙げた三つの内容を満たすため、以下の機材を選びました。
・RP2040-Zero
・有機ELディスプレイ 0.95インチ 96×64ドット RGB(SSD1331)
・マイクロSDカードリーダー
・GPSモジュール(2021年に購入したものを流用)
前回の記事(「ARブロック崩しを別の方法で作ってみた」)で使用したRaspberry pi Picoの使用も考えましたがコンパクト化と5V電源を使う必要があったため、RP2040-Zeroを選びました。Picoよりも小さいですがこれもPythonが使える優れものです。
小型ディスプレイについては余ったもの使うことにしました。今回はGPSが取得して書き込めているかを見たいのでこのサイズで十分です。
SDカードリーダーについては当たり前のことですがRP2040-Zero内の記憶領域が限られているかつ、データの取り出しに不便なためマイクロSDカードにデータを書き込む狙いがあります。
これらを組み合わせて一つのデバイスを作り上げるため、今回はブレッドボードではなく本格的なユニバーサル基盤で作りました。(たぶん、今回で一番苦労したかもしれない)
ここからはんだ付けを行い、マイクロSDカード、小型ディスプレイ、GPSモジュールの順に動作確認を行っていきます。裏側をこんな感じで取り付けて、無事マイクロSDカードの書き込みを確認できました。
次に小型ディスプレイのはんだ付けとテストプログラムを実行します。最初はよかったんですが後から画面が写らなかったりして大変でしたが何とか画面表示まで行けました。
画面が写らなかったのは、送信と受信のピンを誤ってはんだ付けしていたのが原因だったようです。
SPI通信のRXとTXがあり、それに合わせてモジュールと本体を線でつなげてはんだ付けしないといけなかったんですが、それが逆になってしまったので写らなかったと思います。つまり、データが受信すべきところに送信データが来たり、受信データが来るところに送信データが来たという状況になっていたと思われます。
SPI通信のRXとTXがあり、それに合わせてモジュールと本体を線でつなげてはんだ付けしないといけなかったんですが、それが逆になってしまったので写らなかったと思います。つまり、データが受信すべきところに送信データが来たり、受信データが来るところに送信データが来たという状況になっていたと思われます。
気を取り直して、最後のGPSモジュールの接続を行います。ピンが挿せそうなところが少なくなってきたので右往左往して、はんだを付けたり取ったりして余計に手間がかかりました。
あと、経験ある方は分かるかもしれませんが、パーツが増えるたびにそれぞれが干渉してこてが当てにくくはんだがつけにくくなることもありました。
最終的にはこの形になりました。
GPSは室内では取得できないのでベランダにアンテナを放置する形になるため、窓を開けての作業になっています。
これでGPSロガーが完成しました。少しでも持ち運びやすくするため、適当な空き箱を加工して入れておきます。(本当はよくないと思います)
左がGPSを取得に成功した場合で右がGPSを取得できていない状態です。
見た目に明らかな差があるのでこれならロガーに書き込めていない場合は気づけると思います。GPSモジュールとアンテナ線が外れて取得できなかったことが以前はよくありました。
GPS取得に成功するとStatusに赤文字でGet!と表示され、Satsで取得できた衛星の数を表示してそのあとに緯度と経度を出す形にしています。
では早速、外で試してみたいと思いますが私の個人情報が漏れるのは嫌なので遠いところに行ってきました。以下は外出中のGPSロガーの様子です。
実際に持ち込んで感じましたがディスプレイがあるのはいいですね。
電源を付けていたにもかかわらずGPS取得ができていないことに気づいてデバイスを確認したらアンテナが外れていたことに気づいて再接続したら画面で確認を行うことができました。
以下の画像は今回の動作確認のために行ったところです。ロガーの情報をもとに位置情報を可視化しています。
どこに行ったか分かりましたか?
途中から徒歩でしたがGPSだと取得位置の間隔で速度の違いが丸分かりで面白かったです。
答え合わせは次回の投稿でお話ししますね。