Resources and Details
Building NTP Server with Raspberry Pi
Updated guidance: Using Uputronics GPS with Raspberry Pi
Using Uputronics GPS with Raspberry Pi (original)
Uputronics Raspberry Pi GPS expansion Board
Uputronics GPS expansion board pinout
Adding a PWM controlled fan
Adding OLED display
Pins, which Pins?
Some amount of effort is needed to decide which pins are going to be used for the PWM fan control. The GPS expansion board has the ability to pass all pins through (using extra tall headers). But the tall headers only extend long enough to support the OLED display. The two 5V pins are captured by the display, so additional header pins were grafted onto the display header, and bent to provide low profile access to 5V and ground needed for the fan control subsystem.
Thermal issues were raised by some after the initial release of the RPi4. Part of that related to firmware for the USB controller, even when unused; a firmware update largely mitigated that issue. The other can readily be solved by installing passive heatsinks on two key chips. My approach was to augment the passives with a PWM controlled fan. A daemon process monitors the CPU temperature and adjusts the speed of the fan to maintain a desired range. If no active cooling is needed, the fan is off.
I dug around for some fonts for the OLED display that made it more readable from a distance and for my less-than-young eyeballs. I set the display update process to show the current time of day, and alternate between CPU temperature and GPS satellite status (number of birds used versus current known catalog, and the average signal quality among the birds used).
Follow On Activities
I plan to implement a POE capability, to eliminate the wall-wart Pi4 power supply. I also have an externally mounted GPS antenna that will replace the little puck antenna shown in the pictures. These two steps will enable me to install this project as a replacement for my commercial NTP server.