lora-aprs / lora_aprs_tracker Goto Github PK
View Code? Open in Web Editor NEWA LoRa based APRS tracker for ESP32 boards.
License: MIT License
A LoRa based APRS tracker for ESP32 boards.
License: MIT License
Hi,
the beacon timeout handling doesn't work in all cases.
Example: Beacon Timeout = 10, Beacon is sent at minute 52
Next Beacon is calculated (52 + 10) % 60 = 2
Next loop run in minute 53. Beacon will be sent because 2 < 53. Even worste beacon will be flooded.
Basically that happens in all cases when the next beacon is calculated for the next hour.
I will commit a fix for this.
DL9SAU-12>APLT00-1,qAU,DJ2DS-10:=5331.03N/00734.14E[352/001/A=4294967271Thomas D23. TTGO-T-Beam LoRa 70cm; tx-only - Bat.: 0.00V - Cur.: 0mA
2^32-4294967271 = 26 feet below NN.
-> Type error.
This function (with unsigned int)
String padding(unsigned int number, unsigned int width)
was called by
String alt = padding((int)gps.altitude.feet(), 6);
-> negative altitude gets positive.
Also, the large number exceeds what aprs spec wants: fixed 6 bytes length.
I fixed it this way. No diff, because I also made other changes for the aprs message text generation. I'll send the diff seperately.
String alt = String("");
int alt_int = (int)gps.altitude.feet();
if (alt_int >= -99999 && alt_int <= 999999) {
if (alt_int < 0)
alt.concat("/A=-" + padding(alt_int * -1, 5));
else
alt.concat("/A=" + padding(alt_int, 6));
}
Hello,
after flashing the TTGO go in a boot loop.....
Terminal output:
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac
I src\LoRa_APRS_Tracker.cpp 79 : LoRa APRS Tracker by OE5BPA (Peter Buchegger)
I src\LoRa_APRS_Tracker.cpp 80 : Version: 22.19.0
E src\configuration.cpp 31 : Failed to read file, using default configuration.
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x40001277 PS : 0x00060130 A0 : 0x800da34e A1 : 0x3ffca1f0
A2 : 0x00000000 A3 : 0x3f401713 A4 : 0x3ffc1ccc A5 : 0x3ffc1ce0
A6 : 0x400ea600 A7 : 0x00000000 A8 : 0x00000000 A9 : 0x3ffca030
A10 : 0x3ffca890 A11 : 0x40087f20 A12 : 0x3f40196a A13 : 0x0000001f
A14 : 0x00000001 A15 : 0xff000000 SAR : 0x00000004 EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0x00000000
Backtrace: 0x40001277:0x3ffca1f0 0x400da34b:0x3ffca200 0x400d1f21:0x3ffca220 0x400d20f2:0x3ffca2c0 0x400dc4c7:0x3ffca330 0x400905f5:0x3ffca350
#0 0x40001277:0x3ffca1f0 in ?? ??:0
#1 0x400da34b:0x3ffca200 in String::equals(char const*) const at C:\Users\olaf.platformio\packages\framework-arduinoespressif32\cores\esp32/WString.cpp:857
#2 0x400d1f21:0x3ffca220 in String::operator==(char const*) const at C:\Users\olaf.platformio\packages\framework-arduinoespressif32\cores\esp32/WString.h:191
(inlined by) load_config() at src/LoRa_APRS_Tracker.cpp:354
#3 0x400d20f2:0x3ffca2c0 in setup() at src/LoRa_APRS_Tracker.cpp:84 (discriminator 8)
#4 0x400dc4c7:0x3ffca330 in loopTask(void*) at C:\Users\olaf.platformio\packages\framework-arduinoespressif32\cores\esp32/main.cpp:14
#5 0x400905f5:0x3ffca350 in vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c:355 (discriminator 1)
Rebooting...
ets Jul 29 2019 12:21:46
The idea would be to display the TTGO battery voltage and to have the possibility to send this value in the message APRS -> BEACON_MESSAGE.
It is better to have a voltage displayed rather than an icon which does not give an exact value -> more "professional" as for radiosonde.
It would help to use MIC-E format for the position-data as it would save air-time.
Es wäre schön, wenn das MIC-E Format verwendet würde um die Positionsdaten zu senden, da dies die Sendezeit für jedes Paket verkürzen würde. Den Message-Text könnte man auch nur bei jedem x-ten Paket mit übertragen statt jedes Mal.
Can't make this board work. No errors on compile. Gps led blinks. Pinouts seems to be the same you have in this sketch. The board start ok but keep saying "info, lora init done!". What i am missing here? Thanks.
debug:
[INFO] Set SPI pins!<\r><\n>[INFO] Set LoRa pins!<\r><\n>[INFO] frequency: 433775000<\r><\n>[INFO] LoRa init done!<\r><\n>[INFO] setup done...<\r><\n>[INFO] LoRa APRS Tracker by OE5BPA (Peter Buchegger)<\r><\n>[INFO] Smart Beaconing Active<\r><\n>[INFO] Set SPI pins!<\r><\n>[INFO] Set LoRa pins!<\r><\n>[INFO] frequency: 433775000<\r><\n>[INFO] LoRa init done!<\r><\n>[INFO] setup done...
It's easy to share the WLAN from a mobile phone to the LoRa_APRS_Tracker. It might be a nice feature if one could enable LoRa_APRS_iGate functionality as well in the tracking device should the APRS tracker happen to have a functioning Internet connection via the predefined WLAN settings.
Hi
after GPS fix, the time is set correctly ( UTC ) but the date remain to 31/12/1999 also after several hour .
could you please help me ?
thank you
73
I shot myself a bit in the foot and accidentally bought an OLED with a SH1106 chip instead of a SSD1306 based one.
At least the pin out allows to solder it directly to my T-Beam (any idea where I can get a SSD1306 based OLED with VCC,GND,SCA,SCL pin out?).
It works if I use the library from https://github.com/nhatuan84/esp32-sh1106-oled
I'm no embedded dev, but shouldn't a more universal OLED library be used in which the display could be configured?
It would be good to have an auto shut-down-timer in the tracker.
When using a tracker in the car you could send some packets when having parked and after a defined period of time without movement (less then 50 m) the tracker could switch itself off. It should start, when external power (USB) comes back.
TTGO starts with the message
[Info] LoRa init done!
[Info] Smart Beacon is on.
After that, nothing happens. No beacon is sent.
The GPS LED flashes when the device is operated outside.
What ist to do?
Using the T22_V1.1 board. Everything looks good on boot and after about 5 minutes updated date and time (so I assume GPS chip is working). However, after nearly 1 hour outside under a clear sky, the "Sats:" still show "0". Any thoughts?
73
David
W5CWT / former DL2JDC
Hi, is there a way to support ebyte E22400M30S Modules?
1W Output and rx preamp onboard.
Kevin (DL5OP)
Please have a look at my pull request. Battery voltage and (dis)charge current are are displayed.
Telemetry is still to-do.
Originally posted by @raufaser in #5 (comment)
I will test this this weekend
Since the tracker is supposed to be off-grid, I'm considering reusing the WiFi AP (or even BLE) for a small web service to send APRS messages over RF
It would be something similar to the below (and hopefully the iGate will be able to pick it up):
https://github.com/TheNico14/LoRaMessenger
Is anyone interested?
I have a TTGO T-Beam v0.7 with OLED attached. After compiling with VS Code and platformIO (env:ttgo-t-beam-v0_7) I get the following error after upload and monitor:
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13104
load:0x40080400,len:3036
entry 0x400805e4
[INFO][Main] LoRa APRS Tracker by OE5BPA (Peter Buchegger)
[INFO][Main] Version: 22.19.0
[INFO][LoRa] Set SPI pins!
[INFO][LoRa] Set LoRa pins!
[INFO][LoRa] frequency: 433775000
[INFO][LoRa] LoRa init done!
[INFO][Main] Smart Beacon is: On
[INFO][Main] setup done...
[INFO][Loop] GPS fix state went to VALID
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x400d7857 PS : 0x00060830 A0 : 0x800d7c53 A1 : 0x3ffcc420
A2 : 0x00000000 A3 : 0x00000000 A4 : 0x00000001 A5 : 0x3ffc5d30
A6 : 0x00060823 A7 : 0x00000001 A8 : 0x800863ae A9 : 0x3ffcc400
A10 : 0x00000001 A11 : 0x00000001 A12 : 0x3ffcc714 A13 : 0x00000000
A14 : 0x007bf608 A15 : 0x003fffff SAR : 0x0000000a EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000040 LBEG : 0x40085b9d LEND : 0x40085ba5 LCOUNT : 0x00000027
Backtrace: 0x400d7854:0x3ffcc420 0x400d7c50:0x3ffcc450 0x400d8c90:0x3ffcc470 0x400d8d7a:0x3ffcc490 0x400d728d:0x3ffcc4c0 0x400d3fed:0x3ffcc4e0 0x400e02a1:0x3ffcc680
#0 0x400d7854:0x3ffcc420 in TwoWire::beginTransmission(unsigned short) at C:/Users/kubon/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src/Wire.cpp:409
#1 0x400d7c50:0x3ffcc450 in TwoWire::beginTransmission(unsigned char) at C:/Users/kubon/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src/Wire.cpp:637
#2 0x400d8c90:0x3ffcc470 in AXP20X_Class::_readByte(unsigned char, unsigned char, unsigned char*) at .pio/libdeps/ttgo-t-beam-v0_7/AXP202X_Library/src/axp20x.cpp:2223
(inlined by) AXP20X_Class::_readByte(unsigned char, unsigned char, unsigned char*) at .pio/libdeps/ttgo-t-beam-v0_7/AXP202X_Library/src/axp20x.cpp:2215
#3 0x400d8d7a:0x3ffcc490 in AXP20X_Class::setChgLEDMode(axp_chgled_mode_t) at .pio/libdeps/ttgo-t-beam-v0_7/AXP202X_Library/src/axp20x.cpp:1288
#4 0x400d728d:0x3ffcc4c0 in PowerManagement::enableChgLed() at src/power_management.cpp:54
#5 0x400d3fed:0x3ffcc4e0 in loop() at src/LoRa_APRS_Tracker.cpp:192
#6 0x400e02a1:0x3ffcc680 in loopTask(void*) at C:/Users/kubon/.platformio/packages/framework-arduinoespressif32/cores/esp32/main.cpp:50
ELF file SHA256: 51f40076d49aec6e
Rebooting...
Seems there is a problem on these boards with activating the charge LED. If comment out line 192 and 194 in LoRa_APRS_Tracker.cpp the unit is working again.
if (powerManagement.isChargeing()) {
// powerManagement.enableChgLed();
} else {
// powerManagement.disableChgLed();
}
VS Code: 1.75.1
platformIO: 6.1.6/3.4.3
Sourcecode: e9842ea
Best regards,
Marco
Hello,
it seems that the file settings.h in not present anymore in src. Therefore I cannot enter my call and necessary message for the tracker.
Additionnally, I still get compilation errors (arduino pins definition)
Any help highly appreciated!
Thanks
if (BatteryIsConnected) { aprsmsg += " - _Bat.: " + batteryVoltage + "V - Cur.: " + batteryChargeCurrent + "mA"; }
(line 239 of LoRa_APRS_Tracker.cpp) should be inside of if (!(rate_limit_message_text++ % 10))
just above that section.
In the current version the battery status is sent with every single beacon (9 times) while 'aprsmsg + Config.beacon.message + Battery status' will be sent only every 10th time.
As a consequence, the user configured message is not visible on aprs.fi 9 out of 10 times.
Hello,
is there any way to use this \ as APRS symbol overlay? Platformio don't want it and I have no idea.
OK i solved it \\ is the magic for second layer ,....
APRS spec sais, course should be in between 1 to 360.
I suppose gps.course.deg() returns 0 for north -> it should be assured, that 0 is changed to 360.
Since the course and speed fields are optional, a special case could be interesting to be dealt with:
if speed is 0 and course is zero, we are not moving. -> We can omit "000/000" in the aprs comment.
I would go this way:
String course_and_speed = String("");
int speed_int = (int)gps.speed.knots();
if (speed_int > 0 && speed_int <= 999) {
String speed = padding(speed_int, 3);
int course_int = gps.course.deg();
/* course in between 1..360 due to aprs spec */
if (course_int == 0)
course_int = 360;
String course = padding(course_int, 3);
course_and_speed.concat(course + "/" + speed);
} /* else: if speed is 0, course does not make sense, and is changing, even if we stand still */
Btw, I assure for the correct length (exactly, not mor. than 3 characters).
Speeds above 999 knods should be considered as bug, I think. But I'm not sure ;)
An assurance like above I added to the altitude field: better no altitude than non-sense ;)
int speed_int = (int)gps.speed.knots();
if (speed_int > 0 && speed_int <= 999) {
String speed = padding(speed_int, 3);
It would save battery power if the display would turn off after a certain time (e.g. 20 seconds) until you press the on/off button.
Describe the bug
after validating the GPS fix and !send_update it validates that enough time has passed before validating the distance from lastTx (line 204)
why is "20" (Mts) used instead of MinTxDistance ("100" (Mts) from your tracker.json file) ???
should it be both validations with MinTxDistance the same?
I have defined three different beacons, mostly because I have three profiles for the smart beaconing (walking, bike and car). Now when you use the same SSID, you may loose the overview, which is the current profile. If you press the button, the next profile will be selected instantly.
With the additon of
show_display(BeaconMan.getCurrentBeaconConfig()->callsign, BeaconMan.getCurrentBeaconConfig()->message, 2000);
in the toggle_display function (LoRa_APRS_Tracker), this is solved, because, every time, when the display is switched on again, the current profile is shown for 2 sec.
Hello,
I have a problem with tracker. After upload code and upload filesystem. System starts and then stuck on "Smart Beacon is On" on OLED and "setup done..." in port monitor.
␛[0;32mI LoRa_APRS_Tracker.cpp 68 : AXP192 init done!
␛[0m␛[0;32mI LoRa_APRS_Tracker.cpp 79 : LoRa APRS Tracker by OE5BPA (Peter Buchegger)
␛[0m␛[0;32mI LoRa_APRS_Tracker.cpp 80 : Version: 22.19.0
␛[0m␛[0;32mI LoRa_APRS_Tracker.cpp 375 : Set SPI pins!
␛[0m␛[0;32mI LoRa_APRS_Tracker.cpp 377 : Set LoRa pins!
␛[0m␛[0;32mI LoRa_APRS_Tracker.cpp 381 : frequency: ␛[0m␛[0;32m433775000
␛[0m␛[0;32mI LoRa_APRS_Tracker.cpp 395 : LoRa init done!
␛[0m␛[0;32mI LoRa_APRS_Tracker.cpp 108 : Smart Beacon is On
␛[0m␛[0;32mI LoRa_APRS_Tracker.cpp 110 : setup done...
Hallo zusammen,
bei mir Compilliert der Tracker nicht siehe log. Das I-Gate compilliert ohne probleme.
Was habe ich falsch gemacht?
Vielen Dank für die Hilfe.
73 de DO2BBC
Executing task: C:\Users\dbw40.platformio\penv\Scripts\platformio.exe run --environment ttgo-t-beam-v1 <
Processing ttgo-t-beam-v1 (board: ttgo-t-beam; platform: espressif32 @ 3.0.0; framework: arduino)
--------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via -v, --verbose
option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/ttgo-t-beam.html
PLATFORM: Espressif 32 (3.0.0) > TTGO T-Beam
HARDWARE: ESP32 240MHz, 1.25MB RAM, 4MB Flash
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
Environment Status Duration
ttgo-t-beam-v1 FAILED 00:00:10.674
===================================================== 1 failed, 0 succeeded in 00:00:10.674 =====================================================
Der Terminalprozess "C:\Users\dbw40.platformio\penv\Scripts\platformio.exe 'run', '--environment', 'ttgo-t-beam-v1'" wurde mit folgendem Exitcode beendet: 1.
Das Terminal wird von Aufgaben wiederverwendet, drücken Sie zum Schließen eine beliebige Taste.
I'm really loving the project and trying to get this to work on the HTCC-AB02S since it has both GPS and Lora.
Trying to use the BG_RF95 library is pointless as its not compatible. Is there any documentation on the LORA packet format that needs to be sent out for this to be read by the IGATE ?
hi would you like to add frequency setting don setting.g ? beause many country have different regulation on amateur radio bandplan (my country is 432.200Mhz) and newbie don't know how to set frequency on other code. so i hope you can add custom config on setting.h and also SF,BW,CR seeting in setting.h
thanks
my ttgo v1 is stucked at INFO/Smart beacon is off screen. is it a known issue ?
Thanks !
"You have to change your settings in 'data/is-cfg.json'" => tracker.json
I have a few questions:
Hi,
I would love to have the ability to switch to an alternative message (and icon) when holding the middle button.
For example, I'm on a SOTA activation and when returning back I want another beacon message.
Or to switch between pedestrian and car, etc...
Since we have OneButton already included we could use attachLongPressStop to trigger between messages.
We could also have an array of messages (and icons) in the json config file and you would simply select the right message that currently suits your preference by holding the middle button.
Does this make any sense?
Waiting for your replies.
BTW I'm willing to help with the code.
Hi,
I have flashed the tracker program to a ttgo board (v1.1). The display only shows the message ¨smartbeacon ON¨and the rest of the display is like showing ¨noise¨. I have been waiting too much time so the tracker can get data from the sat GPS, but it doesn´t work. As expected, no beaconing.
Hope you can help me on this.
By the way, I just set up an iGate and seems to be working correctly (at least I see it at aprs.fi).
I run my device just with USB. -> No battery voltage, current and no charging.
LoRa_APRS_Tracker adds " - Bat.: 0.00V - Cur.: 0mA" to the comment field.
This info is just useless and costs aitime.
I suggest the following solution:
--- power_management.h.orig 2020-12-13 22:39:19.000000000 +0100
+++ power_management.h 2021-04-03 14:51:00.000000000 +0200
@@ -25,6 +25,8 @@
double getBatteryVoltage();
double getBatteryChargeDischargeCurrent();
+ bool isBatteryConnect();
+
private:
AXP20X_Class axp;
};
--- power_management.cpp.orig 2021-04-02 19:02:59.000000000 +0200
+++ power_management.cpp 2021-04-03 15:04:57.000000000 +0200
@@ -84,3 +84,9 @@
}
return -1.0 * axp.getBattDischargeCurrent();
}
+
+// cppcheck-suppress unusedFunction
+bool PowerManagement::isBatteryConnect()
+{
+ return axp.isBatteryConnect();
+}
And in LoRa_APRS_Tracker.cpp:
#ifdef TTGO_T_Beam_V1_0
if (powerManagement.isBatteryConnect()) {
String batteryVoltage(powerManagement.getBatteryVoltage(), 2);
String batteryChargeCurrent(powerManagement.getBatteryChargeDischargeCurrent(), 0);
Testet with just usb: works
Not testet: 1. with battery and no usb power. 2. with battery and with usb power.
Hallo,
ich habe hier LILYGO Board welches mir auf der Console immer
Chip with this firmware: https://github.com/lora-aprs/TTGO-T-Beam_GPS-reset
E src\LoRa_APRS_Tracker.cpp 355 : No GPS frames detected! Try to reset the GPS Chip with this firmware: https://github.com/lora-aprs/TTGO-T-Beam_GPS-reset
E src\LoRa_APRS_Tracker.cpp 355 : No GPS frames detected! Try to reset the GPS Chip with this firmware: https://github.com/lora-aprs/TTGO-T-Beam_GPS-reset
E src\LoRa_APRS_Tracker.cpp 355 : No GPS frames detected! Try to reset the GPS Chip with this firmware: https://github.com/lora-aprs/TTGO-T-Beam_GPS-reset
Meldet.
Die unter dem GPS Modul befindliche LED leuchtet regelmäßig auf. Es sollten also GPS Daten empfangen werden.
Ich habe die Software auf ein für mich baugleiches Modul geflash dieses Modul arbeitet einwandfrei!
Im Anhang habe die Module als Foto angehängt. Das Board mit dem Display Funktioniert!
Ist das Modul defekt? wie könnte ich es testen? Oder stimmt etwas mit der PIN Belegung zur Software nicht?
VY 73 Manfred de DH0KAI
Would it be possible to program the middle button of the TTGO T-Beam to manually send an APRS frame?
Hi,
The tracker is working fine and I currently don't have any major gripes with it. However, I have a suggestion about making the positioning a bit more precise.
By utilizing a compressed beacon or by adding !DAO!-data in the comment section you can add greater detail. A more precise position would be very beneficial to SAR operations where clear text APRS data really falls short in precision. Current GNSS modules using three constellations (GPS+Galileo+GLONASS) gives me a reliable sub 1m precision, whereas APRS in its nature is very unprecise.
Please see http://www.aprs.org/aprs12/datum.txt for specifications.
Would it be possible to check if the T-Beam-Board needs a GPS-Reset and integrate that software in the tracker?
If there's enough free space in flash memory left that would be very handy especially for new trackers.
Having the GPS position visible on the OLED screen would be useful for World Wide Fauna & Flora (WWFF) operations in Belgium (ONFF) which requires taking a picture of a GPS screen for log submission.
Hello Peter, please would it be possible to add PTT information to some Gpio pin?
I would like to switch on the bias for PA on tracker PA board.
Thanks a lot!
Jan OK2ZAW
Would it be possible to attach the battery voltage only if the tracker has no external power via USB?
That would be good if using in a car: when driving (external power via USB) no attachment will be send which results in smaller packet, and when the car is parked (no external power) the battery-voltage will be send. (Less problems with longer packets when tracker is not moving.)
Hello the gps coordinates are uploading E instead of W thus putting me in the china mountains
Hi, congrats for the nice project, I successfully used it with a raspberry pi as GW.
My problem: I need to increase update rate.. ideally 10s between transmissions
No matter how much I lower the numbers in track.json the period will not get lower than 1min.
What is your recommendation?
Thank you
Hi,
I have platform io installed on vscode and pointed to the folder .
The README.md states to change my configuration in data/is-cfg.json
There is however only a tracker.json in the data folder.
The German instruction points to the igate installation and not the LoRa_APRS_Tracker
The French instruction mentions a settings.h in the src folder but there is no settings.h
I am a bit stuck now.
Thanks for the help
the LoRa APRS Header is missing:
3 bytes at the beginning of the message: '<' 0xff 0x01
The time to the next beacon should have some random time jitter when "smart_beacon": {"active": false
in order to prevent repetitive collisions.
Currently, if the packets of two nearby trackers without smart beaconing happen to collide, these would always remain to collide because both trackers employ the same GPS time source.
For discussion:
I hope, LoRa_APRS_Tracker will implement aprs messaging in the future.
But for now, I suggest to send in the first byte of the APRS message (before the position) an '!' instead of '=', because '!' indicates that the sender is not messaging capable. This is a useful information for someone who intends to write you.
In our discussion about digipeating, we talked about Paths, WIDE2-1, or WIDE1-1, and so on.
One interesting solution is in the APRS spec. Because we have to keep our TX data (also the ASCII PATH) short (for lesser airtime) in LoRa, the approach to encode the intended hops with an Destination SSID is nice.
-> msg.setDestination("APLT00-1"); for one hop.
I like to send with msg.setDestination("APLT00-1"). If we don't like users to change the source code, I recommend a configuration optoon.
Btw: A digipeater should always look at both, Digipeaters and DST-encoding.
Due to the spec, if DST-based encoding is used, then there must be no digipeaters in the path. Digis honoring things like DO1DOS>APLT00-7,WIDE7-7 would be fatal for the net.
There's an interesting detail if a digipeater decreases the SSID one by one: if zero is reached AND if there have been digipeaters added, we may are inthe situation that DO1DOS>APLT00,WIDE7-7 is repeated (because the digipeater sees no ssid in the DEST-call).
What do other digipeater software do in that case? Omit digipeating packets like APLT00-7,WIDE7-7 ? Or remove the WIDE7-7 part? Or replace WIDE7-7 to WIDE7-0* ? If the feature is going to be implemented in LoRa digipeater, it's a good Idear to look how other APRS digipeater software deals with that issue.
An empty "path": ""
instead of "path": "WIDE1-1"
in tracker.json
works perfectly fine if you are only interested in putting your beacon on the map. This saves 7 LoRa Bytes, which increases the chances of an error-free reception of the full packet.
Local WIDE1-1
digipeating from LoRa is anyhow very rare and not allowed in most countries without a digipeater license.
The same gains hold true for an empty "message": ""
in tracker.json
. Currently we are wasting 12(!) Lora Bytes to "message": "LoRa Tracker"
. In the professional LoRa world, this is considered borderline criminal…
Actually, there should be no option at all for a "message"
in a LoRa tracker, and if still, then an occasional (e.g. 1 in 10) APRS Status Report (p.80) stands better chances of being received correctly. APRS-IS takes care of this information in a transparent manner.
Furthermore, sending altitude data should be made optional and false
by default. This saves a whopping 9 LoRa Bytes on air, since its format is /A=001234
. GPS reported altitude is anyhow prone to errors and for objects on the ground, the altitude can be inferred from a geographical map.
Finally, on the tracker firmware level, the Destination Address could be simplified to a mere AP
instead of APLT00
. That is another 4 LoRa Bytes saved, or 6 bytes if you let the iGate fill in this information. Limit the marketing of the firmware to the iGate.
"enhance_precision": true
adds another 5 Bytes, and because of the addition of a space actually 6 Bytes.
In total, there is an immediate potential to save 7 + 12 + 9 + 6 + 6 = 40 Bytes on air, of which 25 Bytes without any firmware change; only through more sane tracker.json
file defaults.
Mic-E APRS compression (pp. 42-56) could shave off still more Bytes…
LESS IS MORE with LoRa,
because LoRa employs forward error correction (FEC) coding on a physical hardware level.
I get this after doing GPS-reset:
No GPS frames detected! Try to reset the GPS Chip with this firmware: https://github.com/lora-aprs/TTGO-T-Beam_GPS-reset
Output from gps-reset:
$GPGSV,1,1,0079
$GPGLL,,,,,,V,N64
$GPRMC,,V,,,,,,,,,,N53
$GPVTG,,,,,,,,,N30
$GPGGA,,,,,,0,00,99.99,,,,,,48
$GPGSA,A,1,,,,,,,,,,,,,99.99,99.99,99.9930
The output from gps-reset ok? Failed init in the tracker?
Hi,
My Tbeam is not getting the position information from GPS, so no position is transmitted. The Tbeam's version is V1.1 with NEO-6M module. I had turned on the tracker all the night expecting to get position info without success.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.