我正在使用Raspberry PI Zero W(Raspbian NOOBS v2.9.0)
GPS模块是Neo 6M GPS模块 https://www.amazon.it/ILS-navigazione-satellitare-posizionamento-Arduino/dp/B07911Z266/ref=sr_1_46?ie=UTF8&qid=1542095676&sr=8-46&keywords=gps+raspberry+pi
我已经使用以下命令安装了GPSD
sudo apt-get install gpsd gpsd-clients python-gps
我对文件/ etc / default / gpsd进行了如下编辑:
START_DAEMON="true"
GPSD_OPTIONS="/dev/ttyS0"
DEVICES=""
USBAUTO="false"
GPSD_SOCKET="/var/run/gpsd.sock"
我在/etc/rc.local中添加了以下几行(在“ exit 0”之前)
sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock
sudo python /home/pi/code.py
在code.py中,我正在运行以下代码:
import os
import sys
from gps import *
import threading
from threading import Thread
class GpsPoller(threading.Thread):
# object needed to obtain GPS data
gpsd = None
def __init__(self):
print "Initializing GPS poller..."
global gpsd
threading.Thread.__init__(self)
gpsd = gps(mode=WATCH_ENABLE)
self.current_value = None
self.running = True
def run(self):
print "Starting GPS loop..."
global gpsd
while self.running:
# get the next set of data
gpsd.next()
# clear screen
os.system("clear")
print
print 'GPS'
print
print '----------------------------------------'
print 'latitude ' , gpsd.fix.latitude
print 'longitude ' , gpsd.fix.longitude
print 'time (utc) ' , gpsd.utc,' + ', gpsd.fix.time
print 'altitude (m)' , gpsd.fix.altitude
print 'eps ' , gpsd.fix.eps
print 'epx ' , gpsd.fix.epx
print 'epv ' , gpsd.fix.epv
print 'ept ' , gpsd.fix.ept
print 'speed (m/s)' , gpsd.fix.speed
print 'mode ' , gpsd.fix.mode
print '----------------------------------------'
print
gpsp = GpsPoller()
gpsp.run()
我已使用以下命令在启动时禁用了GPSD服务(以防止系统启动它并使该任务由rc.local完成):
sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket
结果是,当我打开Rpi的电源时,代码和gpsd守护程序可以正常启动,但无法获取数据,如果我随后杀死python代码并手动启动它,则可以正常工作。
答案 0 :(得分:0)
我的RPi-Zw遇到了同样的问题,不知道是什么问题。我已经尝试了互联网上描述的所有技巧,但没有结果,gpsd只能手动启动。 最后,我从一个干净的映像开始,安装了gpsd,并按照 https://wiki.dragino.com/index.php?title=Getting_GPS_to_work_on_Raspberry_Pi_3_Model_B 并在 /etc/rc.local 中添加了 service gpsd start ,它可以正常工作。立即使用 cgps -s 进行检查。