Raspberry Pi RP4040 based HF/VHF GPS tracker Concept:
- this board is intended for educational, STEM and research purpose
- RP2040 based, same pin assignment as Raspberry Pi Pico
- support both WSPR (HF) and APRS (VHF) on Si5351
- user can modify / extend the functionalities in Python (MicroPython)
- only using components that are available (and in stock) in JLCPCB parts library (most of them are "Basic Parts")
- use JLCPCB's "Economic PCB Assembly Service" for assembly (no need to deal with tiny SMD components)
- once we will confirm that this tracker is working during actual flights, we will publish EVERYTHING (EasyEDA project file including schematic and PCB layout, gerber and BOM files for JLCPCB order, all the firmware source code) under GPL (firmware) and Creative Commons BY-SA-NC (hardware) license
Vital Details:
- RP2040, 12MHz XO, 16Mbit QSPI NOR
- GPS, Temperature & Pressure sensor
- Si5351 based VFO with 26MHz TCXO
- 2 LPFs for 2 different bands (all L and C for LPF are 0805 size SMD for hand soldering)
- 3.3V LDO (not the buck-boost one used in RaspPi Pico)
- LED
- FET switch for GPS power
- FET switch for Si5351
- Solar Cell voltage monitoring
- GPS 1PPS signal width measurement
- Si5351 clock frequency measurement
- all the unused pins are available at header pins (9 GPIOs and 3 ADCs)
- UART0 for logging and CLI
- SWD for debugging
- USB for power, serial for CLI and flashing firmware
- USB connector portion of PCB can be detached for launch
- weight is 3.00g (not including any components for LPF) and size is 48mm x 29mm (after detached the USB connector portion of PCB)
Detailed Details:
The RP2040 is a dual ARM Cortex-M0+ running at 133MHz but can slow down to save power. The two cores are partitioned so one core is devoted to operating the tracker while the other is free for other purposes, like student experiments.
The tracker core firmware is written in C and assembler. It will send GPS position report and other data over VHF/APRS and HF/WSPR. The other core runs MicroPython. An API will provide the MicroPython environment with balloon information: GPS status, location, etc. Only a small set of the RP2040 user GPIO is needed for the tracker and the remainder is available for MicroPython programs. That allows for communications with a wide variety of sensors and actuators.
The tracker is small and lightweight, and is aimed at pico/high altitude ballooning. They would well for other platforms like the San Diego Mount Carmel High School Amateur Radio Club's (MCHSARC) amateur radio amateur radio marine buoy marine buoy.
The tracker generates a signal by modulating the Si5351 rapidly. It can produce VHF APRS AFSK 1200 BPS RF directly as well as HF WSPR < 0.5 BPS RF. Other modes have been demonstrated with this technique, like SSTV, but the tracker will only support APRS and WSPR for initial release. Other modes like FT8, more, RTTY and voice are of interest for reporting data. Other modes are being explored for sending more detailed telemetry.