Я на Raspberry PI Zero W (Raspbian NOOBS v2.9.0)
GPS-модуль является GPS-модулем Neo 6M.
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
- Я включил аппаратный последовательный порт и отключил последовательную консоль с помощью raspi-config
Я отредактировал файл / etc / default / gpsd следующим образом:
START_DAEMON="true"
GPSD_OPTIONS="/dev/ttyS0"
DEVICES=""
USBAUTO="false"
GPSD_SOCKET="/var/run/gpsd.sock"
Я добавил следующие строки в /etc/rc.local (ДО «выхода 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 и запусту его вручную, он будет работать.