- 樹莓派Raspberry Pi 3 (以下簡稱為RasPi3)
- GPS Receiver - LS20031 5Hz (66 Channel),
https://www.sparkfun.com/products/8975 - 預先焊接針腳, 使用4條雙母杜邦線與樹莓派連接
可參閱SparkFun網頁上的Connection Tutorial - 留意GPS模組使用電壓3.3V
- GPS模組的TX連接到RasPi3的GPIO Pin10(RXD)、
RX連接到RasPi3的GPIO Pin8(TXD)。
詳細的RasPi3 GPIO針腳定義請參閱: https://pinout.xyz/#
樹莓派的作業系統, 我是以AiGO 2017 v1為架構, 再新增軟體套件
$ sudo apt-get update && sudo apt-get upgrade -y
$ sudo apt-get install build-essential gpsd gpsd-clients python-gps joe
$ sudo reboot
其中joe是我個人在linux系統下慣用的文字編輯器, 作業系統內建有nano 或 vi可以使用。
針對GPS使用RasPi3的UART連線, 作業系統要新增設定/boot/config.txt,
$ sudo joe /boot/config.txt
在文件的最後一行加入
enable_uart=1
存檔後, 重新開機
$ sudo reboot
在RaspPi3的系統中, 是以/dev/ttyAMA0與 UART0連線的, 所以啟動gpsd時, 要指向這個裝置
$ sudo gpsd /dev/ttyAMA0 -n -F /var/run/gpsd.sock
$ cgps -s
參考網頁都是像上面寫的指令一樣, 但是我一直無法在cgps中看到gps傳資料進來, 因此我執行cgps時, 不加-s參數, 可以監視GPS模組的訊息是否傳入。
後來發來gpsd有一支程式gpscat, 也可以直接讀取gps模組傳入的訊息, 使用方式如下:
$ gpscat -s 57600 /dev/ttyAMA0
其中 -s 57600是傳輸速率(baud rate), 我試過57600 bps是這款gps模組的上限。
令我疑惑的是, 若我沒有執行 "gpscat -s 57600 /dev/ttyAMA0" 則 cgps 無法正常讀取GPS模組的訊息, 因此我推論是沒有設定 /dev/ttyAMA0 的傳輸速率所致。
最後在gpsd的faq網頁中, 查到可以使用 "stty speed 57600 < /dev/ttyAMA0" 來設定傳輸速率。其餘的執行程序如下:
sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
sudo killall gpsd
stty speed 57600 < /dev/ttyAMA0
sudo gpsd -n /dev/ttyAMA0 -F /var/run/gpsd.sock
cgps
終於可以從 cgps 讀到GPS模組的定位資訊。
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqklqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Time: 2017-06-12T15:52:14.000Z xxPRN: Elev: Azim: SNR: Used: x
x Latitude: 24.XXXXXX N xx 193 66 048 26 Y x
x Longitude: 120.XXXXXX E xx 15 63 277 00 N x
x Altitude: 167.7 ft xx 13 62 019 33 Y x
x Speed: 0.5 mph xx 129 54 138 26 N x
x Heading: 192.6 deg (true) xx 20 50 343 23 N x
x Climb: 0.0 ft/min xx 5 40 056 39 Y x
x Status: 3D FIX (266 secs) xx 2 39 141 24 Y x
x Longitude Err: +/- 46 ft xx 29 36 254 19 Y x
x Latitude Err: +/- 67 ft xx 24 27 182 00 N x
x Altitude Err: +/- 73 ft xx 21 17 320 15 N x
x Course Err: n/a xx 30 10 044 00 N x
x Speed Err: +/- 92 mph xx 18 03 290 00 N x
x Time offset: -872.718 xx x
x Grid Square: PL04gc xx x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
參考資料
- https://medium.com/@phutidus/%E7%94%A8-raspberry-pi-gps-%E6%A8%A1%E7%B5%84%E5%BB%BA%E7%AB%8B-stratum-1-%E7%9A%84-ntp-server-cb1b501a5f91
- http://www.catb.org/gpsd/faq.html
- http://spellfoundry.com/2016/05/29/configuring-gpio-serial-port-raspbian-jessie-including-pi-3
- https://learn.adafruit.com/adafruit-ultimate-gps-on-the-raspberry-pi/using-uart-instead-of-usb