From 6b567a5db1f6b25e9b70870adbf37b2f618e9e9e Mon Sep 17 00:00:00 2001 From: LegoManACM <41910060+LegoManACM@users.noreply.github.com> Date: Tue, 12 May 2026 10:01:59 -0700 Subject: [PATCH] Setup GPS funcitonality --- variants/pico_dragino_sx1276/platformio.ini | 9 +++- variants/pico_dragino_sx1276/target.cpp | 49 ++++++++++++++------- variants/pico_dragino_sx1276/target.h | 5 ++- 3 files changed, 44 insertions(+), 19 deletions(-) diff --git a/variants/pico_dragino_sx1276/platformio.ini b/variants/pico_dragino_sx1276/platformio.ini index e9f8d861a..ac55d75ea 100644 --- a/variants/pico_dragino_sx1276/platformio.ini +++ b/variants/pico_dragino_sx1276/platformio.ini @@ -17,12 +17,17 @@ build_flags = -D P_LORA_MISO=16 -D P_LORA_MOSI=19 -D P_LORA_NSS=17 - -D PIN_GPS_RX=9 - -D PIN_GPS_TX=8 -D ENV_INCLUDE_GPS=1 + -D PIN_GPS_RX=13 + -D PIN_GPS_TX=12 + -D setPins=setPinout + -D ENV_SKIP_GPS_DETECT=1 + -D PERSISTANT_GPS=1 build_src_filter = ${rp2040_base.build_src_filter} +<../variants/pico_dragino_sx1276> +<../variants/waveshare_rp2040_lora/WaveshareBoard.cpp> + + + + lib_deps = ${rp2040_base.lib_deps} stevemarple/MicroNMEA @ ^2.0.6 diff --git a/variants/pico_dragino_sx1276/target.cpp b/variants/pico_dragino_sx1276/target.cpp index 39e636e63..b2b65182f 100644 --- a/variants/pico_dragino_sx1276/target.cpp +++ b/variants/pico_dragino_sx1276/target.cpp @@ -1,7 +1,8 @@ #include "target.h" - #include #include +#include +#include WaveshareBoard board; @@ -10,28 +11,46 @@ WRAPPER_CLASS radio_driver(radio, board); VolatileRTCClock fallback_clock; AutoDiscoverRTCClock rtc_clock(fallback_clock); -SensorManager sensors; + +MicroNMEALocationProvider nmea(Serial1, &rtc_clock); +EnvironmentSensorManager sensors(nmea); bool radio_init() { - Serial.begin(115200); - delay(3000); - Serial.println("Starting up..."); + pinMode(25, OUTPUT); + + // step 1 + digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); + Serial1.setRX(PIN_GPS_RX); + + // step 2 + digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); + Serial1.setTX(PIN_GPS_TX); - rtc_clock.begin(Wire); - Serial.println("RTC done"); + // step 3 + digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); + Serial1.begin(9600); - pinMode(P_LORA_RST, OUTPUT); - digitalWrite(P_LORA_RST, LOW); - delay(10); - digitalWrite(P_LORA_RST, HIGH); - delay(10); - Serial.println("Reset done"); + // step 4 + digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); + rtc_clock.begin(Wire); + // step 5 + digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); SPI.begin(); - Serial.println("SPI done"); + // step 6 + digitalWrite(25,HIGH); delay(300); digitalWrite(25,LOW); delay(300); bool result = radio.std_init(NULL); - Serial.println(result ? "Radio OK" : "Radio FAILED"); + + if (result) { + for (int i = 0; i < 10; i++) { + digitalWrite(25,HIGH); delay(100); digitalWrite(25,LOW); delay(100); + } + } else { + for (int i = 0; i < 3; i++) { + digitalWrite(25,HIGH); delay(500); digitalWrite(25,LOW); delay(500); + } + } return result; } diff --git a/variants/pico_dragino_sx1276/target.h b/variants/pico_dragino_sx1276/target.h index 18702442e..045175969 100644 --- a/variants/pico_dragino_sx1276/target.h +++ b/variants/pico_dragino_sx1276/target.h @@ -5,13 +5,14 @@ #include #include #include -#include +#include +#include #include extern WaveshareBoard board; extern WRAPPER_CLASS radio_driver; extern AutoDiscoverRTCClock rtc_clock; -extern SensorManager sensors; +extern EnvironmentSensorManager sensors; bool radio_init(); uint32_t radio_get_rng_seed();