Raspberry PiにGPS受信モジュールを接続してみた

Raspberry PiにはGPIOが用意されており、これにいろいろ接続して遊べるということでGPS受信モジュールを試してみました。
用意したGPS受信モジュールはSzParts.comのMTK3339 TTLレベルです。
このモジュールはGPS衛星の電波に加えて準天頂衛星みちびきの電波も拾えるということで選びました。

参考


両モジュールのピンアサインを確認すると、接続は下記のようにすればOKなはず

GPS Raspberry Pi
TTL出力 Pin2(TXD) Pin10(RXD)
TTL入力 Pin3(RXD) Pin8(TXD)
GND Pin9 Pin6
Power 3.3V Pin11 Pin1

MTK3339はPin4〜8、Pin12〜22がGNDに割り当てられているのでどれかをRaspberry Pi側のGNDに接続すれば大丈夫なようです。

接続の準備ができたらRaspberry Piの設定を変更します。
デフォルトではTXD、RXDはシリアルコンソールで使うための設定になっているため、その設定を解除しておく必要があるそうです。
参考

最初に変更するのは/boot/cmdline.txtです。
編集前

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

編集後

dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

続いて/etc/inittabを編集してシリアル通信でのログインを無効にします。
対象の行をコメントアウトすればOKのようです。

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100


編集が完了したら一応Raspberry Piの電源を落としてGPS受信モジュールと接続し、再度電源を投入します。
MTK3339は電源投入直後から勝手に電波を受信し始め、少し経つと安定して受信データを出力してくれました。
データを見るためには/dev/ttyAMA0をcatコマンドに渡すとNMEAというフォーマットのデータが標準出力に流れてきます。
受信テストでは

# cat /dev/ttyAMA0 > 20130203.nmea

と適当に受信したデータをテキストファイルに流し込みました。


出力されてくるデータをテキストエディタで開くと一部文字が化けている部分があり、接続の工作中にモジュールを痛めてしまったか、配線の途中でノイズが入っているか、その辺はまだわかりません。


晴れている日に緯度経度のわかっているポイントに設置してどれくらいの誤差が出てくるのか試してみたいですね。