microReticulumTbeam/exercises/11_Set_RTC2GPS/README.md

33 lines
1.2 KiB
Markdown
Raw Permalink Normal View History

## Exercise 11: Set RTC to GPS (1PPS Discipline)
This exercise extends Exercise 9 behavior (GPS + SD + OLED) and disciplines the onboard RTC from GPS UTC using the GPS `1PPS` (pulse-per-second) timing signal.
Implemented behavior:
1. Boots PMU, OLED, SD watcher, and GPS UART using the same T-Beam Supreme pin mapping from prior exercises.
2. Parses NMEA (`RMC`, `GGA`, `GSV`) to track UTC validity and satellite counts.
3. Every 1 minute, attempts to set RTC from GPS:
- Uses latest valid GPS UTC.
- Waits for next `1PPS` rising edge.
- Sets RTC to GPS time aligned to that edge (UTC + 1 second).
4. Appends event records to SD file:
- Path: `/gps/discipline_rtc.log`
- Append-only writes (`FILE_APPEND`)
- Format:
- `YYYYMMDD_HH24MISS_z\t set RTC to GPS using 1PPS pulse-per-second discipline\trtc-gps drift=+/-Ns`
5. OLED success message shows RTC disciplined confirmation and timestamp.
6. If GPS time cannot be determined (or 1PPS edge is not seen in timeout), OLED shows failure status and the loop delays 30 seconds before retry.
## Build
```bash
source /home/jlpoole/rnsenv/bin/activate
pio run -e node_a
```
## Upload
```bash
source /home/jlpoole/rnsenv/bin/activate
pio run -e node_a -t upload --upload-port /dev/ttyACM0
```