2018/05/28

自作したGPS受信機との通信

随分前に秋月電子通商でGPS受信機モジュールを買いました。モジュールには「GPS-52D(A)-014J LTS 0550」というラベルが貼ってあります。旧い製品なので秋月電子通商のWebでは情報が出てきませんが、「電気電子工作の部屋」というサイトに情報が残っています(GPSレシーバモジュールキット [K-02294])。

このGPSモジュールを使って、AVRでコントロールする「GPSデータ・ロガー」を作ろうと思っているのですが、なかなか進展していません。それでも途中段階としてGPS測定情報をシリアルポートから受け取るための準備だけはしました。準備と言っても大層な事はしていなくて、GPSモジュールの出力を「USB-シリアル変換モジュール」で受けて、PCに繋ぐだけです。そうすればWindowsであればTeratermのシリアルポート接続などを使えば情報が見えるようになります。

USB変換も秋月電子通商の(旧い)製品を利用しました。「24ピンDIP-ICサイズ FT232RL USB-シリアル変換モジュール[K-01977])というものです。この製品は3.3V出力ができるので、それをGPSモジュールに直結させれば済むかとおもったのですが、うまくいきませんでした。そこで5V出力(14ピンで「USB」と記されています。説明書には「USBバスよりの5V出力」と書かれています。)に3端子レギュレータをいれて3.3VにしてからGPSモジュールに繋いでいます。

まずWindows10で試してみました。USBケーブルを挿すと、標準ドライバで利用可能になりました。Teratermをシリアルポート接続すると、GPSモジュールからの情報が次々に表示されていきます。

次にNetBSD/i386でも試してみました。まずUSBケーブルを挿すと/var/log/messagesに以下のような情報が記録されます。
May 28 15:14:35 dbss /netbsd: ehci0: handing over full speed device on port 1 to uhci0
May 28 15:14:37 dbss /netbsd: uftdi0 at uhub0 port 1
May 28 15:14:37 dbss /netbsd: uftdi0: FTDI (0x403) FT232R USB UART (0x6001), rev 2.00/6.00, addr 2
May 28 15:14:37 dbss /netbsd: ucom0 at uftdi0 portno 1
ところがucom0というデバイスが出来ません。同じような問題を解決した情報がありました(玄箱NetBSDその4:USBシリアルからのログイン)ので、同じように対処してみました。これでデバイスが作られました。
# mknod -l ucom
ucom character major 66
# mknod /dev/ucom0 c 66 0
# ls -l /dev/ucom0
crw-rw-r--  1 root  wheel  66, 0 May 28 13:16 /dev/ucom0
そして/etc/remoteにエントリを追加しておきます。
# FT232R USB UART
ucom0:dv=/dev/ucom0:br#9600:pa=none:dc:
ここでtipを使ってシリアルポートに接続すると、GPS受信機からの情報が流れてくるようになりました。
# tip ucom0
connected
$GSU-50 : Position Co.,Ltd.2003
$Firmware Checksum: 4d50
$TOW: 0      
$WK:  1652
$POS: 6378137  0        0      
$CLK: 96000  
$CHNL:12
$Baud rate: 9600  System clock: 12.277MHz
$HW Type: S2AM
$Asic Version: 0x23
$Clock Source: GPSCLK
$Internal Beacon: None
$PSRF150,1,*12

0 件のコメント:

コメントを投稿