From 98838737fa339cfbd501cd73171dff564e2d5b90 Mon Sep 17 00:00:00 2001 From: Jesse Horner Date: Tue, 29 Sep 2026 13:50:30 -0400 Subject: [PATCH] feat: add l76k gps module support for xiao_nrf52840 kit variant. Remaps SDA & SCL to the NFC pins so gps can use D6 & D7. --- variants/xiao_nrf52/platformio.ini | 6 +++--- variants/xiao_nrf52/target.cpp | 7 ++++++- variants/xiao_nrf52/target.h | 4 ++++ variants/xiao_nrf52/variant.h | 7 +++++++ 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/variants/xiao_nrf52/platformio.ini b/variants/xiao_nrf52/platformio.ini index 1076bd8de7..7e581169b3 100644 --- a/variants/xiao_nrf52/platformio.ini +++ b/variants/xiao_nrf52/platformio.ini @@ -7,7 +7,7 @@ build_flags = ${nrf52_base.build_flags} -I lib/nrf52/s140_nrf52_7.3.0_API/include -I lib/nrf52/s140_nrf52_7.3.0_API/include/nrf52 -I variants/xiao_nrf52 - -UENV_INCLUDE_GPS + ; -UENV_INCLUDE_GPS -D NRF52_PLATFORM -D NRF52_POWER_MANAGEMENT -D XIAO_NRF52 @@ -26,8 +26,8 @@ build_flags = ${nrf52_base.build_flags} -D SX126X_DIO3_TCXO_VOLTAGE=1.8 -D SX126X_CURRENT_LIMIT=140 -D SX126X_RX_BOOSTED_GAIN=1 - -D PIN_WIRE_SCL=D6 - -D PIN_WIRE_SDA=D7 + -D PIN_WIRE_SCL=30 + -D PIN_WIRE_SDA=31 -D PIN_USER_BTN=PIN_BUTTON1 -D DISPLAY_CLASS=NullDisplayDriver build_src_filter = ${nrf52_base.build_src_filter} diff --git a/variants/xiao_nrf52/target.cpp b/variants/xiao_nrf52/target.cpp index def1dbbeaa..5b00f9705e 100644 --- a/variants/xiao_nrf52/target.cpp +++ b/variants/xiao_nrf52/target.cpp @@ -16,7 +16,12 @@ WRAPPER_CLASS radio_driver(radio, board); VolatileRTCClock fallback_clock; AutoDiscoverRTCClock rtc_clock(fallback_clock); -EnvironmentSensorManager sensors; +#ifdef ENV_INCLUDE_GPS + MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); + EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); +#else + EnvironmentSensorManager sensors; +#endif bool radio_init() { rtc_clock.begin(Wire); diff --git a/variants/xiao_nrf52/target.h b/variants/xiao_nrf52/target.h index 20093904aa..a48015d2d5 100644 --- a/variants/xiao_nrf52/target.h +++ b/variants/xiao_nrf52/target.h @@ -16,6 +16,10 @@ extern MomentaryButton user_btn; #endif +#ifdef ENV_INCLUDE_GPS + #include +#endif + extern XiaoNrf52Board board; extern WRAPPER_CLASS radio_driver; extern AutoDiscoverRTCClock rtc_clock; diff --git a/variants/xiao_nrf52/variant.h b/variants/xiao_nrf52/variant.h index 25619b9e59..26c073f6b3 100644 --- a/variants/xiao_nrf52/variant.h +++ b/variants/xiao_nrf52/variant.h @@ -142,6 +142,13 @@ static const uint8_t A5 = PIN_A5; #define PIN_PDM_CLK (20) #define PIN_PDM_DIN (21) +// GPS L76KB +#define GPS_BAUDRATE 9600 +#define PIN_GPS_TX PIN_SERIAL1_RX +#define PIN_GPS_RX PIN_SERIAL1_TX +#define PIN_GPS_STANDBY (0) +#define PIN_GPS_EN (PIN_GPS_STANDBY) + // QSPI Pins #define PIN_QSPI_SCK (24) #define PIN_QSPI_CS (25)