mcommit's message

大阪でソフトウェア開発の仕事をしている simotinといいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

U-blox NEO-6M GPSモジュールで遊んでみた

前からGPSのデータを使って何か作ってみたいなと思っていたのですが、最近いろいろ調べてみるとGPSモジュールが安く買えるようになっていたのでU-blox NEO-6M GPS(NEO-6M-0-001)というGPSモジュールを買って遊んでみました。

f:id:simotin13:20160907221743j:plain

購入

私の勝手な思い込みですが、

GPSモジュール=高い

というイメージがありした。

というのも、昔秋月電子7000円くらいのGPSモジュールを買ったことがありました。

電子工作をやり始めたばかりの頃で、知らずに表面実装タイプのGPSモジュールを買ってしまい、見事にはんだ付けに失敗して、7000円かけて買ったモジュールを一度も動かすことなくおしゃかにしてしまった辛い過去があります(涙)

最近では、GPSモジュールは携帯やドローンなど利用されることが増えてきたため、価格も手頃になっているそうです。

今回私が買ったGPSモジュールは1845円でした。

私が7000円で買った当時から比べると、
「価格破壊」「奥さん、安いよ安いよ!」
状態な値段です。実際、このGPSモジュールの他にも2000円~3000円程度で手に入るGPSはたくさんあるようなのでGPSは気軽に遊ぶことができますね。

注意しないといけないのは、GPSモジュールは値段によって精度の良し悪しが変わったりするようですので、あらかじめその点は理解しておくべきかと思います。※私も各商品の具体的な違いまでは把握できておりません。

今回の私の目的はあくまで趣味・遊びのレベルですのでとりあえず普通に動いてくれれば何の問題もありません。

ピンアサイン

GPSとの通信IFなど気にせずポチったのですが、このGPSモジュール(NEO-6M-0-001)はとても親切でプレッドボード用のピッチ変換基板がついており、

  • VSS
  • TX
  • RX
  • GND

の4ピンだけで使うことができます。しかもVSSは3V~5V対応という親切設計です。

はんだづけ

大変親切な商品ですが、残念ながらピンヘッダは付属していません。ヘッダは自分で購入し、はんだ付けする必要があります。今回は前から買いだめしていたヘッダが手元にあったのでそれを使ってはんだ付けしました。
※私のはんだづけのスキルは素人に毛がはえていない程度のレベルですが、DIPのピッチであればまぁ普通につけることはできます。(はんだ付けにはむらがでてしまい、あまり綺麗にはんだをのせることはできませんが。)


f:id:simotin13:20160907221825j:plain


ピンヘッダのような一般の人が買わないような商品でもアマゾンで売ってたりします。
翌日とか当日届くとなると、電気街に繰り出す手間が省けていいですね。
※たまに日本橋に行っていろいろと物色するのは楽しい時間ではなるのですが。

動かしてみる

はんだづけが終わったところで、早速動かしてみたいところですが、上記のピンアサインの通りこの商品(NEO-6M-0-001)は4ピンだけで動かすことができます。通信IFはTX/RXのシリアル通信になります。

私は、USB-シリアル変換ケーブルを使ってパソコンでGPSのデータを受信してみました。
akizukidenshi.com

上記のUSBシリアル変換ケーブルはTX,RXの他に5V電源のラインもあるので、こういうシリアルIFのデバイスで遊ぶときは、別途電源(VCC)を用意する必要がなく、とても便利なのでおすすめの1品です(ちなみにTLLが5Vの商品もあるようです)

このGPSモジュールはGPS本体の基板と通信IFの基板(ピンヘッダをはんだづけする基板)の2つの基板から構成されており、通信IFの基板にアンテナを指してあげる必要があります。(ボタンのようになっているので「カチッ」っと差し込むことができました)

アンテナの接続ができたら、各ピンに対して結線し、あとは端末(TeraTerm等)を立ち上げてCOMポートに接続するだけで、無事動かすことができました。

通信設定の初期値は、

  • bps:9600bps,
  • Databit:8bit
  • Parity:none
  • Stopbit:1bit
  • Flow Control:none

になっているようです。

TeraTermで接続すると早速NMEAの各種出力がパラパラと表示されました。
起動直後は衛星と通信できていないためか、各パラメータに何も値が入っていない状態が少しの間続いていましたが、しばらくすると各値が入った状態でNMEAのセンテンスが出力されるようになりました。

f:id:simotin13:20160907230807j:plain

NMEAセンテンスについて

一般的なGPSモジュールはNMEAフォーマットで各種データが出力されます。
今回購入したこのGPSモジュールも同様です。
NMEAというとあまり日常生活でなじみがないフォーマットですね。

私自身は、以前仕事でNMEAを扱う仕事をしたことがあったのですが仕様についてはすっかり忘れていました。
なので勉強の為、今回は、こちらのサイトを参考にさせて頂きました。

GPSのNMEAフォーマット
5.出力データ【GM-38:マーキュリー取扱説明書】

上記サイトの管理者の皆様、参考にさせて頂きましてありがとうございます。_(m_m)_

NMEAの書式自体はカンマ区切りで各パラメータが出力されるので、CSVに似ていると言えば似ているかもしれません。
NEO-6M-0-001で出力されるセンテンスと概要についてまとめてみました。

センテンス 概要・コメント
$GPVTG 移動に関する情報。方位・速度など
$GPGGA 時刻、緯度経度など
$GPGSA 精度に関する情報など
$GPGSV 衛星に関する情報など。3行出力される
$GPGLL 位置、測位時刻など
$GPRMC 緯度・経度、時刻など

センテンス同士で重複する内容もあります。
たしかセンテンスの優先順位みたいなのもあったのですが、忘れてしまいました・・・

マニュアル類について

データシート等は u-bloxのサイトから入手できました。
GPS本体からはいろいろIFがでているみたいですね。まぁ、UARTが手っ取り早くて一番ですが。

[https://www.u-blox.com/ja/product-resources?f[0]=property_file_product_filter%3A2719:title]

感想

商品開封からTeraTarmでの動作確認まで30分もかからなかったです。
IFがシリアル通信で、しかも変換基板があるモジュールは扱いやすくて親切ですね。(I2Cだとかなかなかこうはいきません)

GPSに関しては「あったらいいな」と思っている商品があって、GPSが内蔵された金庫とかあると喜ばれるんじゃないかなと考えています。
金庫に関わらず貴重品の類であればGPS内蔵にしておけば盗難にあった時に役に立つような気がします。

人から聞いた話ですが、銀行などの企業のお金の集金に回る警備会社の車は、特定のルートから外れるとエンジンが止まるようになっているそうです。

同じように、特定の緯度経度から外れたらブザーが鳴りだす金庫みたいなのがあっても面白いんじゃないかなと思っています。

の3点があれば簡単に作れそうですので試しに作ってみたいと思います。