Browse Source

Setup GPS funcitonality

pull/2736/head
LegoManACM 1 month ago
parent
commit
6b567a5db1
  1. 9
      variants/pico_dragino_sx1276/platformio.ini
  2. 49
      variants/pico_dragino_sx1276/target.cpp
  3. 5
      variants/pico_dragino_sx1276/target.h

9
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>
+<helpers/sensors/EnvironmentSensorManager.cpp>
+<helpers/sensors/MicroNMEALocationProvider.cpp>
lib_deps =
${rp2040_base.lib_deps}
stevemarple/MicroNMEA @ ^2.0.6

49
variants/pico_dragino_sx1276/target.cpp

@ -1,7 +1,8 @@
#include "target.h"
#include <Arduino.h>
#include <helpers/ArduinoHelpers.h>
#include <helpers/sensors/MicroNMEALocationProvider.h>
#include <helpers/sensors/EnvironmentSensorManager.h>
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;
}

5
variants/pico_dragino_sx1276/target.h

@ -5,13 +5,14 @@
#include <helpers/radiolib/RadioLibWrappers.h>
#include <helpers/radiolib/CustomSX1276Wrapper.h>
#include <helpers/AutoDiscoverRTCClock.h>
#include <helpers/SensorManager.h>
#include <helpers/sensors/EnvironmentSensorManager.h>
#include <helpers/sensors/MicroNMEALocationProvider.h>
#include <WaveshareBoard.h>
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();

Loading…
Cancel
Save