工作

GPSを使って目的地の方向と直線距離を表示する

はじめに

「車載用電子コンパスを作る」の記事の中でも「GPSと組み合わせて、指定した位置の方向をひたすら指さし続けるガジェットを作ろうと思い立ちました」と書いたのですが、イメージとしては、東急ハンズの手のようなものが目的地の方向を逐一指すようなものを作りたいと考えていました。しかし、部分試作をしてみてステッパーモーターがかなり熱を持ってしまうこと、回転位置リセットが少々面倒であることがわかり、今回は目的地の方向計算と表示ができればいいや、ということにしました。

Dec 19, 2021追記

目的地方向を指さすガジェットを作ることができました。こちらの記事もご覧ください。

May 28, 2022

目的地をad hocに追加できるようにしました

材料

接続図

GPSモジュールはシリアル通信(ソフトウエアシリアル)、方向と距離を表示させるための4桁7セグメントディスプレイは、I2C接続です。ボタンはLOW -> HIGHを拾うようにしています。Metro Miniからの電力供給(5V)だけで間に合っています。

コード

コード(Arduino)は一つだけです。myGPS-proto-7seg.inoという名前でGitHubにあげておきました。

やりたいことをするための部分コードを探してきては切り貼り、テスト、改変を繰り返したので、ごちゃごちゃして見通しが悪いのですが、無事動いています。

目的地のcoordinates (latitude, longitude)はgoogle mapから得ることができます。map上で右クリックするとその場所のcoordinatesが表示されますので、表示された数字をクリックするとクリップボードに値が保存されます。得られた値は、dest_lats, dest_lonsに格納して使います。

進行方向に対する目的地の方向(角度)は、bearingとangle(進行方向)から計算しています。初期バージョンでは目的地の方向によって-198度とか、330度などという値が出ることがあってわかりにくかったので、-180から180度までの値になるように変更してあります。0度は進行方向そのもの、90度は右、左は-90度、後ろが180度という具合です。

インターフェースの説明

  • 10個までの目的地(緯度、経度)をあらかじめ登録しておくことができます。(プログラムにhard codingしておきます)
  • 目的地切り替えボタンで番号(0から9)を選びます。
  • 移動速度が不十分(のろのろ運転)な場合、進行方向がうまくとれないことがあるので、移動速度が1ノット(約1.85km/h)以下の場合には赤のLEDが点灯します。(それ以上の速度での移動時には緑のLEDが点灯します)
  • 進行方向をゼロとしたときの目的地方向を角度で表示します。(-180から180度までになるようにしてあります)
  • 目的地までの直線距離は、10km以上はkm単位で、それ以下はm単位で表示します。(4桁しかないので)

参考にしたページ

使ってみて

いつも自画自賛ですが、(だって、趣味ですから。自賛できないことはしませんし)面白いです。道は曲がっていても、目的地にまっすぐ狙いを定めて運転している感じになれます。地面を走って移動するんですが、まっすぐ飛んでいく感覚が少し持てます。学校まではあと3キロ、-6度の方向、とか、会社まで10.5キロ、165度、右に振り返ったぐらいの方向、さていくか、って思えるわけです。

ちなみにGPSモジュールからは補足衛星の数も出ているので、それも表示しようかな、と思ったのですが、あまり意味がないので止めました。

さて、位置情報がとれているので、何に使おうかというところですが、例えば誰かを迎えにいくときに、もうじきつきますよ情報を自動で飛ばせると面白いと思います。運転中は携帯電話さわれませんし。いま出発しました、あと5キロ、あと1キロ、100メートル以内にいます、ぐらいの3段階で3GモジュールからSMSやSlack, Whatsapp, LINEでもSignalでも何でもいいんですが、送信できると便利なような気がすることもあります。帰宅時には、パパ接近情報としてバス情報表示板で使ったLED掲示板に、台風情報のように表示すれば、みそ汁の温め開始の目安ぐらいにはなるかもしれない。まあそこまでして帰るぜ帰るぜって、帰宅しなくていいんですが、普通に帰ってくれば。

それにしても、GPS衛星からの情報を無料で使えるってすごいことですね。また何か面白いことができないか、考えてみます。

ABOUT ME
misson
ものづくりが趣味。頭の中でモヤモヤと渦巻くガスを形として沈殿させるのが趣味。座右の銘は:こたえは常に自分の中にある


follow us in feedly

COMMENT

メールアドレスが公開されることはありません。