This is certainly not a difficult project, but I am going to assume you can put a hat on a raspberry pi, get the OS installed and do some basic command line work. (hint: Don't forget that blank file named ssh in the root of the boot drive so you can remote in)
Scope
Time is essential to any communication method, but particularly so to low-power digital communications in ham radio. Modes like FT8 or JS8 utilize a single RF frequency and utilize the Audio bandwidth to handle multiple stations. To accomplish this, everyone has to be transmitting and decoding in fairly exacting time segments. In my attempt to be more effective in a grid-down scenario I started building local NTP servers that would provide a time standard, separate from the internet, for my radio shack, etc. I started with a simple USB GPS receiver on a Raspberry PI over wifi, and now this project is to build a hardwired server with a serial GPS receiver that has PPS (pulse per second) timing.
Resources
Julian: OH8STN Video on the original GPS PI
Mike Richards: The Original, as far as I am concerned, walkthrough of the GPS PI
Rob Robinette: Troubleshooting resource for this setup
UPUTRONICS Setup
Parts List
Raspberry Pi 4
Micro SD Card
Uputronics GPS/RTC Expansion Board
Uputronics Active GPS Antenna
ThePiHut Pi GPS HAT Case for Raspberry Pi 4
(Optional) 12 volt to USB charger
(Optional) PoE splitter
Some form of power supply for Raspberry Pi
Process
To be clear Version 1 of this project, as detailed by Mike and Julian in the resources is MORE than adequate for most people. Below is an estimated error comparison between just using the NMEA stream and then using the PPS versus standard internet NTP sources.
sudo raspi-config
sudo apt -y install python-smbus i2c-tools pps-tools
sudo i2cdetect -y 1
sudo nano /boot/config.txt
dtoverlay=i2c-rtc,rv3028 dtoverlay=pps-gpio enable_uart=1
sudo nano /boot/cmdline.txt
sudo apt-get -y remove fake-hwclock sudo update-rc.d -f fake-hwclock remove sudo systemctl disable fake-hwclock
sudo nano /lib/udev/hwclock-set
#if [ -e /run/systemd/system ] ; then # exit 0 #fi # /sbin/hwclock --rtc=$dev --systz --badyear
sudo nano /etc/rc.local
stty -F /dev/ttyS0 115200
sudo nano /etc/modules
pps-gpio
sudo reboot
sudo ppstest /dev/pps0
ls -lh /dev/serial[0,1]
sudo apt-get install minicom minicom -b 115200 -o -D /dev/ttyS0
sudo cat /dev/ttyS0
sudo apt -y install gpsd gpsd-clients python-gps chrony python-gi-cairo
sudo nano /etc/default/gpsd
START_DAEMON="true" USBAUTO="false" DEVICES="/dev/ttyS0 /dev/pps0" GPSD_OPTIONS="-n"
sudo nano /etc/chrony/chrony.conf
makestep .1 5 refclock PPS /dev/pps0 refid PPS prefer refclock SHM 0 refid NMEA allow 10.0.18.0/24
sudo reboot
Tools
gpsmon -n
chronyc sources -v
sudo timedatectl
sudo chronyc makestep
After you are sure it is working, mount it somewhere handy. I have it in the shack right now, but I do have a power over ethernet (PoE) injector and splitter so I can put it anywhere in the house and keep the cables down. I also recommend setting up RaspAP on it so that it can host its own hotspot if your network goes down and you still want to use it as your time reference.
No comments:
Post a Comment