diff --git a/README.md b/README.md index 9b72844..ba70c31 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,14 @@ # LORA (1 Watt Module) APRS Tracker This LORA APRS Tracker will work with very cheep hardware (amazon, ebay or aliexpress): -- ESP32 ( ESP32 Dev Module) -- Ebyte E22 400M30S (1 Watt (30dB) Lora SPI Module) -- GY-GPSNEO6MV2 (NEO6M GPS Module) +- ESP32 ( ESP32 Dev Module) +- Ebyte E22 400M30S (1 Watt (30dB) Lora SPI Module) +- GY-GPSNEO6MV2 (NEO6M GPS Module) This project uses Enconded APRS GPS packet to extends range by saving bytes (increased battery life, higher chances of good packet reception (increased range), lower probability of packet collisions (more channel capacity) and 1 Watt LoRa Module (over the usual 0.1 Watt in commercial boards like the LILYGO T-Beam V.1). +_____________________________________________________________________________ + Achievements: - configurations saved on ESP32 memory (SPIFFS). @@ -15,7 +17,7 @@ Achievements: - force Tx with the "short" push of a button. - send enconded GPS data packet for shorter and realiable comunication. -To add (shortly) working on it +To add (shortly) aka "working on it" : - turn_slope for course angle smartbeacon - oled screen (allready bought ... and waiting.. ) - SendAltitude: encoded instead of just "Course+Speed" without adding lenght to the APRS packet. @@ -25,14 +27,14 @@ To add (shortly) working on it - Battery Monitoring (voltage, consumption, low_battery warning, charging?) - +_____________________________________________________________________________ This Repository is based on lots of other Lora APRS Tracker ideas like: - https://github.com/lora-aprs/LoRa_APRS_Tracker (the start with LILYGO T-BEAM v.1) - https://github.com/aprs434/lora.tracker (the great encoding position modification) - https://github.com/Mane76/lora.tracker (great ideas about changing callsign and other mods) - https://github.com/sh123/esp32_loraprs (inspiration for accesing the Lora Module with Radiolib library) - +_____________________________________________________________________________ diff --git a/data/tracker.json b/data/tracker.json index 207c369..7515f27 100644 --- a/data/tracker.json +++ b/data/tracker.json @@ -1,4 +1,5 @@ { + "debug": false, "beacons": [ { "callsign": "CD2RXU-7", @@ -52,11 +53,11 @@ ], "lora": { - "frequency_rx": 433775000, - "frequency_tx": 433775000, + "frequency_rx": 433775, + "frequency_tx": 433775, "power": 20, "spreading_factor": 12, - "signal_bandwidth": 125000, + "signal_bandwidth": 125.0, "coding_rate4": 5 } } \ No newline at end of file diff --git a/src/Lora_1W_APRS_Tracker.cpp b/src/Lora_1W_APRS_Tracker.cpp index 9fcb6ce..0d07cf2 100644 --- a/src/Lora_1W_APRS_Tracker.cpp +++ b/src/Lora_1W_APRS_Tracker.cpp @@ -15,12 +15,12 @@ https://github.com/sh123/esp32_loraprs #include #include #include "BeaconManager.h" -#include "pins.h" +#include "pins_conection.h" #include "lora_config.h" #include "beacon_config.h" #include "configuration.h" -#define VERSION "2023.01.28" // BETA still!!! +#define VERSION "2023.01.29" // BETA still!!! SX1268 radio = new Module(NSS, DIO1, NRST, BUSY); HardwareSerial neo6m_gps(1); @@ -32,20 +32,19 @@ BeaconManager BeaconMan; static bool send_update = true; void load_config() { - ConfigurationManagement confmg("/tracker.json"); - Config = confmg.readConfiguration(); - BeaconMan.loadConfig(Config.beacons); - if (BeaconMan.getCurrentBeaconConfig()->callsign == "NOCALL-10") { - Serial.println("You have to change your settings in 'data/tracker.json' and " - "upload it via \"Upload File System image\"!"); - while (true) { - } - } else { - Serial.println("##### (Configuration Loaded) #####"); - } + ConfigurationManagement confmg("/tracker.json"); + Config = confmg.readConfiguration(); + BeaconMan.loadConfig(Config.beacons); + if (BeaconMan.getCurrentBeaconConfig()->callsign == "NOCALL-10") { + Serial.println("You have to change your settings in 'data/tracker.json' and " + "upload it via \"Upload File System image\"!"); + while (true) { + } + } else { + Serial.println(" (Configuration Loaded)"); + } } - void setup_lora_module() { int state = radio.begin(LoraFreqTx, LoraBandWidth, LoraSpreadingFactor, LoraCodingRate, LoraSyncWord, LoraOutro, LoraPreampbleLenght); radio.setOutputPower(Lora_Power); @@ -77,9 +76,9 @@ void setup() { Serial.begin(115200); pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, LOW); + Serial.print("LoRa APRS tracker"); // __DATE__ " " __TIME__); load_config(); - Serial.print("LoRa tracker " __DATE__ " " __TIME__ " / Callsign ------> "); - Serial.println(BeaconMan.getCurrentBeaconConfig()->callsign); + Serial.println("________________________________________"); setup_lora_module(); setup_gps_module(); UserButton1.attachClick(ForcedBeaconTx); @@ -87,6 +86,8 @@ void setup() { WiFi.mode(WIFI_OFF); btStop(); Serial.print("(Version = "); Serial.print(VERSION); Serial.println(")"); + Serial.print(" / Callsign ---> "); + Serial.println(BeaconMan.getCurrentBeaconConfig()->callsign); Serial.println("Transmission Start ---->"); } diff --git a/src/configuration.cpp b/src/configuration.cpp index efd87b0..2d8d9ef 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -59,15 +59,17 @@ Configuration ConfigurationManagement::readConfiguration() { conf.beacons.push_back(beacon); } + /* conf.button.tx = data["button"]["tx"] | false; conf.button.alt_message = data["button"]["alt_message"] | false; - conf.lora.frequencyRx = data["lora"]["frequency_rx"] | 433775000; - conf.lora.frequencyTx = data["lora"]["frequency_tx"] | 433775000; + conf.lora.frequencyRx = data["lora"]["frequency_rx"] | 433775; + conf.lora.frequencyTx = data["lora"]["frequency_tx"] | 433775; conf.lora.power = data["lora"]["power"] | 20; conf.lora.spreadingFactor = data["lora"]["spreading_factor"] | 12; - conf.lora.signalBandwidth = data["lora"]["signal_bandwidth"] | 125000; + conf.lora.signalBandwidth = data["lora"]["signal_bandwidth"] | 125; conf.lora.codingRate4 = data["lora"]["coding_rate4"] | 5; + */ return conf; } @@ -102,8 +104,10 @@ void ConfigurationManagement::writeConfiguration(Configuration conf) { v["enhance_precision"] = beacon.enhance_precision; } + data["debug"] = conf.debug; + /* data["button"]["tx"] = conf.button.tx; data["button"]["alt_message"] = conf.button.alt_message; @@ -113,7 +117,8 @@ void ConfigurationManagement::writeConfiguration(Configuration conf) { data["lora"]["spreading_factor"] = conf.lora.spreadingFactor; data["lora"]["signal_bandwidth"] = conf.lora.signalBandwidth; data["lora"]["coding_rate4"] = conf.lora.codingRate4; - + */ + serializeJson(data, file); file.close(); } \ No newline at end of file diff --git a/src/configuration.h b/src/configuration.h index 6cad17c..641bcd1 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -38,9 +38,9 @@ public: bool enhance_precision; }; - class LoRa { + /*class LoRa { public: - LoRa() : frequencyRx(433775000), frequencyTx(433775000), power(20), spreadingFactor(12), signalBandwidth(125000), codingRate4(5) { + LoRa() : frequencyRx(433775), frequencyTx(433775), power(20), spreadingFactor(12), signalBandwidth(125), codingRate4(5) { } long frequencyRx; @@ -59,14 +59,16 @@ public: bool tx; int alt_message; }; - + */ + Configuration() : debug(false) { } bool debug; std::list beacons; - LoRa lora; - Button button; + //LoRa lora; + //Button button; + }; class ConfigurationManagement { diff --git a/src/pins.h b/src/pins_conection.h similarity index 100% rename from src/pins.h rename to src/pins_conection.h