From b0385dcbdec4fbbaa851a3d40b11290674bbdb69 Mon Sep 17 00:00:00 2001 From: richonguzman Date: Thu, 1 Jun 2023 09:50:33 -0400 Subject: [PATCH] turn slope implementation --- README.md | 4 ++-- extra/turn_slope_calculations.xlsx | Bin 0 -> 14910 bytes src/LoRa_APRS_Tracker.cpp | 28 ++++++++++++++++------------ 3 files changed, 18 insertions(+), 14 deletions(-) create mode 100644 extra/turn_slope_calculations.xlsx diff --git a/README.md b/README.md index 32d3288..60035fa 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,8 @@ ____________________________________________________ - Listening to other Trackers arround. - Processor from 240Mhz to 80MHz to save almost 20% power consumption (from ~ 100mA to almost ~80mA) (Thanks Mane76). - All GPS beacons/packet are encoded for less time on RF/LoRa Tx. -- 4th line of the OLED SCREEN shows Number of New Messages Received. +- 4th line of the OLED SCREEN shows Altitude+Speed+Course or Number of New Messages Received. - 5th line of the OLED SCREEN shows Recent Heard Trackers/Station/iGates Tx. - ____________________________________________________ # INSTRUCTIONS: @@ -49,6 +48,7 @@ Timeline (Versions): - 2023.05.21 Adding Last-Heard LoRa Stations/Trackers - 2023.05.27 Adding Altitude + Speed or Course + Speed in the encoded GPS info. - 2023.05.29 New Config file for adding more new ideas to the Tracker. +- 2023.06.01 Adding Turn Slope calculations for Smart Beacon ____________________________________________________ This code was based on the work by OE5BPA LoRa Tracker, Serge Y. Stroobandt, ON4AA in the byte-saving part of the APRS 434 firmware and Manfred DC2MH (Mane76) with the mods for multiple Callsigns and processor speed. - https://github.com/aprs434/lora.tracker diff --git a/extra/turn_slope_calculations.xlsx b/extra/turn_slope_calculations.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..86fd55613a2addb1ef82313a44d3af1f0dc9fa6d GIT binary patch literal 14910 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 VU>|n+yHyJgApK$L>+HY3{T~a@lxY9} literal 0 HcmV?d00001 diff --git a/src/LoRa_APRS_Tracker.cpp b/src/LoRa_APRS_Tracker.cpp index d42aee6..b85d1fc 100644 --- a/src/LoRa_APRS_Tracker.cpp +++ b/src/LoRa_APRS_Tracker.cpp @@ -16,7 +16,7 @@ #include "pins.h" #include "power_management.h" -#define VERSION "2023.05.31" +#define VERSION "2023.06.01" logging::Logger logger; @@ -767,10 +767,11 @@ void loop() { static double lastTxLat = 0.0; static double lastTxLng = 0.0; - static double lastTxdistance = 0.0; + static double lastTxDistance = 0.0; static uint32_t txInterval = 60000L; static uint32_t lastTxTime = millis(); static bool sendStandingUpdate = false; + int currentSpeed = (int)gps.speed.kmph(); static bool BatteryIsConnected = false; static String batteryVoltage = ""; @@ -794,18 +795,24 @@ void loop() { if (!send_update && gps_loc_update && currentBeacon->smartBeaconState) { uint32_t lastTx = millis() - lastTxTime; currentHeading = gps.course.deg(); - lastTxdistance = TinyGPSPlus::distanceBetween(gps.location.lat(), gps.location.lng(), lastTxLat, lastTxLng); + lastTxDistance = TinyGPSPlus::distanceBetween(gps.location.lat(), gps.location.lng(), lastTxLat, lastTxLng); if (lastTx >= txInterval) { - if (lastTxdistance > currentBeacon->minTxDist) { + if (lastTxDistance > currentBeacon->minTxDist) { send_update = true; sendStandingUpdate = false; } } if (!send_update) { + int TurnMinAngle; double headingDelta = abs(previousHeading - currentHeading); if (lastTx > currentBeacon->minDeltaBeacon * 1000) { - if (headingDelta > currentBeacon->turnMinDeg && lastTxdistance > currentBeacon->minTxDist) { + if (currentSpeed == 0) { + TurnMinAngle = currentBeacon->turnMinDeg + (currentBeacon->turnSlope/(currentSpeed+1)); + } else { + TurnMinAngle = currentBeacon->turnMinDeg + (currentBeacon->turnSlope/currentSpeed); + } + if (headingDelta > TurnMinAngle && lastTxDistance > currentBeacon->minTxDist) { send_update = true; sendStandingUpdate = false; } @@ -817,7 +824,6 @@ void loop() { } } - // para cuando se tiene smartbeacon apagado if (!currentBeacon->smartBeaconState) { uint32_t lastTx = millis() - lastTxTime; if (lastTx >= Config.nonSmartBeaconRate*60*1000) { @@ -914,8 +920,7 @@ void loop() { lastTxLat = gps.location.lat(); lastTxLng = gps.location.lng(); previousHeading = currentHeading; - lastTxdistance = 0.0; - //lastTxTime = millis(); + lastTxDistance = 0.0; } lastTxTime = millis(); send_update = false; @@ -1019,13 +1024,12 @@ void loop() { if (currentBeacon->smartBeaconState) { - int curr_speed = (int)gps.speed.kmph(); - if (curr_speed < currentBeacon->slowSpeed) { + if (currentSpeed < currentBeacon->slowSpeed) { txInterval = currentBeacon->slowRate * 1000; - } else if (curr_speed > currentBeacon->fastSpeed) { + } else if (currentSpeed > currentBeacon->fastSpeed) { txInterval = currentBeacon->fastRate * 1000; } else { - txInterval = min(currentBeacon->slowRate, currentBeacon->fastSpeed * currentBeacon->fastRate / curr_speed) * 1000; + txInterval = min(currentBeacon->slowRate, currentBeacon->fastSpeed * currentBeacon->fastRate / currentSpeed) * 1000; } } }