GithubHelp home page GithubHelp logo

sq9mdd / ttgo-t-beam-lora-aprs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from oe3cjb/ttgo-t-beam-lora-aprs

63.0 22.0 23.0 6.34 MB

Use TTGO T-Beam as LoRa APRS Tracker

C++ 63.90% C 4.80% HTML 8.06% JavaScript 1.93% CSS 20.52% Python 0.79%

ttgo-t-beam-lora-aprs's Introduction

LoRa tracker with KISS TNC capability

Tracker can be used on its own. You can also connect it via blueetooth with APRSdroid. After connection with APRX based DIGI it can be used as KISS-TNC

diagram

Contributors

  • Initial work: OE1ACM, OE3CJB
  • Redesigned: SQ9MDD
  • KISS TNC Over Serial or Bluetooth: SQ5RWU
  • Lora32 board support: DJ1AN
  • Self-telemetry improvement: KB1GIM
  • T-beam v1.2 board support: SP6NYA
  • New XPowersLib Library: SP6NYA

Supported boards

  • TTGO T-beam v.0.7
  • LILYGO/TTGO T-beam v.1.0 - v.1.1
  • LILYGO/TTGO T-Beam v.1.2
  • Lora32 board

User key functions:

short press (OLED Enabled):

  • if OLED is OFF a short press will wake it up and show current data (as "Display Timeout" seconds)
  • if OLED is ON with GPS-FIX immediate sending of a frame with the position from the GPS
  • if OLED is ON without GPS-FIX, immediate sending of the frame with the position saved in the configuration

short press (OLED Disabled):

  • with a valid GPS-FIX immediate sending of a frame with the position from the GPS
  • without valid GPS-FIX, immediate sending of the frame with the position saved in the configuration

long press while booting

  • reset to factory default

long press: toggle on or off GPS power supply

  • if the "FIXED_BEACON_EN" option is enabled in the configuration, a beacon will be sent every set time interval

Oled screens information

  • ((TX)) - position frame sent automatically
  • ((RX)) - informs about the received frame
  • ((GPSOFF)) - GPS power-off information
  • ((GPS ON)) - GPS power-on information
  • ((MAN TX)) - information about sending a manually initialized GPS position frame
  • ((FIX TX)) - information about the forced manual sending of a frame with the position saved in the configuration when GPS is off or no fix
  • ((AUT TX)) - information about sending automatic positioning frame when GPS is turned off
  • ((KISSTX)) - information about sending the frame sent by KISS
  • ((WEB TX)) - sending frame as requested via HTTP
  • ((TEL TX)) - information about sending telemetry

LED'S information

  • (Blue) Slow blinking - battery voltage 3.5V-3.3V
  • (Blue) Fast blinking - battery voltage > 3.3V

How to binary first flash readme... (thanx SP6VWX)

  • Download the appropriate binary file for your board from: https://github.com/SQ9MDD/TTGO-T-Beam-LoRa-APRS/releases
  • Download current version of the esphome-flasher tool: https://github.com/esphome/esphome-flasher/releases
  • Connect your board to your USB port and open ESPHome Flasher.
  • If your board is not showing under Serial Port then you likely need to install the drivers for the CP210X serial chip. In Windows you can check by searching “Device Manager” and ensuring the device is shown under “Ports”.
  • In ESPHome Flasher, refresh the serial ports and select your board's serial port.
  • Browse to the downloaded firmware and select the correct firmware based on the board type.
  • Select/Press Flash ESP.
  • Once complete, “Done! Flashing is complete!” will be shown.
  • any subsequent updates can be done via WWW

Installing from source (only for advanced users)

  • Clone Git repo to any folder of your PC
  • Download and install "Visual Studio Code"
  • Open "Visual Studio Code" and add "PlatformIO" plugin
  • Open "PlatformIO" and click on "Import Arduino Project"
  • In the top part of the window choose youy board then browse to cloned repo and click "import"
  • In the left column click on the ANT-shaped icon, choose your board and click on "Upload". COM port should be detected automatically Wait for procedure to finish and keep reading

Configuring parameters

Wait for the board to reboot, connect to "N0CALL AP" WiFi network, password is: xxxxxxxxxx (10 times "x") and point your browser to "http://192.168.4.1" (http, not https). Hover your mouse to textboxes to get useful hints.

WiFi Settings

you can scan for local SSID or manually type in name and password

  • Scan WiFi: scan for local WiFi networks
  • SSID: name of the AP to connect to
  • Password: password of WiFi AP
  • AUTO AP Password: if configured network is not reachable the AP mode will be enabled, SSID will be your callsign and this will be the password

APRS Settings

These are main APRS settings such as callsign, SSID and symbol (refer to: http://www.aprs.org/symbols.html). Please remember to turn ON GPS in order to use it as a tracker.

  • Frequency: frequency of receive and transmit
  • Speed: speed of the LoRa APRS packet (default: 300)
  • Callsign and SSID: Callsign of the tracker (e.g: N0CALL-10)
  • Relay PATH: destination path of APRS packet
  • Symbol table & Symbol: custom APRS icon
  • Show altitude: allow altitude to be reported
  • Show comment: includes comment in APRS packet
  • Comment: custom message to send
  • Show Battery: includes current battery voltage
  • Fixed beacon: enables static beacon transmission
  • Fixed beacon interval: beacon interval in seconds (please more than 30 minutes to avoid overflow on the network)
  • Latitude & Longitude: fixed beacon position to transmit (in APRS format)
  • Min interval: packet are transmitted not less than x second apart
  • Max interval: maximum interval between packages
  • Speed and course: variables to calculate smart beaconing
  • GPS enabled: enables power to GPS module

Device Settings

These are main device settings, hover the mouse on the checkboxes and explainations will appear.

  • OLED Display enabled: Enables OLED functionalities
  • Bluetooth enabled: Enables bluetooth functions (such as TNC via APRSDROID)
  • LED Signaling: not yet implemented
  • Auto Power OFF: activate auto power off when USB is unplugged (only for TBEAM 1.0 or later)
  • Auto Power OFF delay: timer to turn off board after USB is unplugged (only if enabled)
  • Display show RX Time: when a packet is received display the packet is shown for X seconds
  • Display Timeout: display will turn OFF after X seconds for better power save (0 to disable and keep OLED ON)

Received

Here is the list of recently received stations with some details

Actions

Some shortcuts to useful functions such as manually send beacon

Update

This box allows firmware to be uploaded via OTA

Default WiFi Password:

  • Default WiFi Password is: xxxxxxxxxx
  • that is, 10 times x

ttgo-t-beam-lora-aprs's People

Contributors

chron0 avatar ge0rg avatar gorzynsk avatar iu2frl avatar m0iga avatar mattbk avatar mi-gri avatar oe2wnl avatar oe3cjb avatar qyon avatar sp6nya avatar sp6vwx avatar sq5wpr avatar sq9mdd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ttgo-t-beam-lora-aprs's Issues

T3 v1.6

Proszę by dodać kolejny konfig dla T3 v1.6 i zdecydować się jaki pin ma robić za user button, sprawdzić czy diody są tam gdzie mają być.

(Wpisałem to co mówił Łukasz na temat modułu T3)

Feature request: BLE support

iOS does not support serial over Bluetooth and requires BLE support for enabling APRS applications such as official aprs.fi to work with the modem

smart beaconing: fix

Someone said, smart-beaconing implementation is not so smooth.
I looked in the code and found situations where the result is negative. The negative result is assigned to unsigned long, which gives us a very high variable -> the next beacon is either in a few weeks, or user drops speed, or drives a curve.
Concrete: sb_max_speed-sb_min_speed is negative i.e. in 100max-120current

Current code

   nextTX = (sb_max_interval-sb_min_interval)/(sb_max_speed-sb_min_speed)*(sb_max_speed-average_speed_final)+sb_min_interval;
   if (nextTX < sb_min_interval) {nextTX=sb_min_interval;}
   if (nextTX > sb_max_interval) {nextTX=sb_max_interval;}

Solution:
either work with signed long variable, do the checks, and afterwards assign the result to nextTX.
Or test it inline.

-> My suggestion:

nextTX = ((sb_max_speed > average_speed_final) ? ((sb_max_interval-sb_min_interval)/(sb_max_speed-sb_min_speed)*(sb_max_speed-average_speed_final)+sb_min_interval) : sb_min_interval);
//if (nextTX < sb_min_interval) {nextTX=sb_min_interval;}   // already assured (  (sb_max_speed <= average_speed_final) -> sb_min_interval)
if (nextTX > sb_max_interval) {nextTX=sb_max_interval;}

Also to consider:
If user configures sb_max_speed equal to sb_min_speed, the division
(sb_max_interval-sb_min_interval)/(sb_max_speed-sb_min_speed)
may lead to division by zero.
boot code and / webinterface should check that sb_max_speed-sb_min_speed is >= 0, and sb_max_interval-sb_max_interval is > sb_max_speed-sb_min_speed.

LoRA-iGate position beacon not going to APRS-IS

Using the TTGO-T-Beam with @dl9sau fork firmware, for some reason the location beacon of the TTGO-T-Beam LoRa iGate itself does not go to APRS-IS

I can verify that connection to APRS-IS is functioning as packets do reach IS by observing e.g. https://aprs.fi/?c=raw&call=OH2LAK-15
and the igate is relaying from LoRa to APRS-IS successfully.

The specific settings which should make the own beacon go to APRS-IS is enabled. Here's a list of variety of parameters I think have something to do with this topic;

{
"tx_aprsis_bc":true,
"tx_aprsis_sm":true,
"aprs_callsign":"OH2LAK-15",
"aprs_relay_path":"WIDE1-1",
"aprs_s_table":"&",
"aprs_symbol":"L",
"aprs_objnam":"",
"aprs_comment":"Lora Digi/iGate 433.775",
"aprs_lat_p":"60-11.4299N",
"aprs_lon_p":"024-45.7920E",
"pos_amb":0,
"aprs_blist":"",
"aprs_fb_interv":300,
"aprs_fixed_beac":true,
"aprsis_en":true,
"aprsis_srv_h":"igates.aprs.fi",
"aprsis_srv_p":14580,
"aprsis_fltr":"",
"aprsis_call":"",
"aprsis_pw":"20397",
"aprsis_2rf":1,
}

Feature request: DEST-Call notation for hops

In LoRa every byte lesser is goot, because it spares airtime.

APRS-Spec allows the notation in DST-Call ->
Instead
DL9SAU->APRS,WIDE1-1:..
we could write
DL9SAU->APRS-1:..

Implementation:

@@ -286,11 +304,19 @@ void prepareAPRSFrame(){
   outString = "";
   outString += Tcall;
 
-  if (relay_path.isEmpty()){
-    outString += ">APLO01:!";
-  }else{
-    outString += ">APLO01," + relay_path + ":!";
+  //if (relay_path.isEmpty()){
+  outString += ">APLO02";
+  if (relay_path.length() < 3) {
+    int ssid = relay_path.toInt();
+    if (ssid > 0 && ssid <= /* 15 // no, max hop 3 */ 3) {
+      char buf[4];
+      sprintf(buf, "-%d", ssid);
+      outString += buf;
+    }
+  } else {
+    outString = outString + "," + relay_path;
   }
+  outString += ":!";
 
   if(gps_state && gps.location.isValid()){
     outString += aprsSymbolTable;

-> In Webinterface, just configure "1" instead of "WIDE1-1" ;)

Can't compile the sources

I have tried to build your great software. But when I compile I receive a lot of errorrs compiling "Adafruit_SPIDevice.cpp":

[{
	"resource": "/d:/Ingmar/Desktop/LORA APRS/TTGO-T-Beam-LoRa-APRS/.pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp",
	"owner": "cpp",
	"severity": 8,
	"message": "invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]",
	"startLineNumber": 310,
	"startColumn": 61,
	"endLineNumber": 310,
	"endColumn": 61
},{
	"resource": "/d:/Ingmar/Desktop/LORA APRS/TTGO-T-Beam-LoRa-APRS/.pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp",
	"owner": "cpp",
	"severity": 8,
	"message": "invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]",
	"startLineNumber": 313,
	"startColumn": 47,
	"endLineNumber": 313,
	"endColumn": 47
},{
	"resource": "/d:/Ingmar/Desktop/LORA APRS/TTGO-T-Beam-LoRa-APRS/.pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp",
	"owner": "cpp",
	"severity": 8,
	"message": "invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]",
	"startLineNumber": 418,
	"startColumn": 59,
	"endLineNumber": 418,
	"endColumn": 59
}] 

The reason is that the project is not compatible with current Adafruit_BusIO 1.11.3. You can solve the problem by inserting the following in your "platformio.ini" under your board :

lib_deps = adafruit/Adafruit [email protected]

Or you can:

  • search on the PIO home under "Libraries" for "Adafruit BusIO"
  • than leftclick on "Adafruit BusIO "
  • select version 1.11.2
  • and final click on "Add to Project"

See the image below:

Change_Sparkfun_VErsion_LI

vy 73, DC1KW (Ingmar)

LoRa APRS in Packet mode

Good evening.

  1. I want to thank you for your work in the development of this tracker
  2. At the moment I am the only one in Ukraine who started using and developing the APRS network based on LoRa and I have a question for you.
  3. I connected my LoRa module to BPQ32 software, DIGI / IGATE mode works fine, but I would also like to enable packet mode so that others can connect to WinLink network via LoRa and my Node.So when I send a command to connect from another device (WoAD + LoRa module and your firmware), my node does not respond, can this be somehow implemented in this firmware? If I understand correctly, then the SABM command does not pass. Maybe i am doing something wrong?
  4. I also noticed that any program for working with TNC(Agwpe Packet engine) sends commands TxDelay, Textail, Persistence and all this goes on the air, although it should not.
    LoRa

Sorry for my English and Thanks. Best regards US1GHQ - Alexsandr 73!

Smart Beaconing - high packet rate when walking

I believe there is an issue with the Smart Beaconing logic.

When travelling in a straight line it seems fine, but when walking slowly, and often stopping or doubling back (when the dog hides :-) ) aprs.fi reports a lot of [Rate limited (< 5 sec)] warnings, the packets are ~2 seconds apart.

My config has a minimal interval of 30 seconds, so I was not expecting this, but my understanding of smart beaconing may be incorrect.

Looking at the code if the course bearing changes more than the threshold then the next beacon interval is set to 1 second (nextTX = 1), should this be nextTX = sb_min_interval to prevent frequent packets?

Make compiler happy

Compiler warns about incompatible type in sprintf, for Tcall and LoRa speed

@@ -551,7 +588,7 @@ String prepareCallsign(const String& callsign){
         uint8_t ac_c = (axp.getVbusCurrent()) / 10;
         // Pad telemetry message address to 9 characters
         char Tcall_message_char[9];
-        sprintf_P(Tcall_message_char, "%-9s", Tcall);
+        sprintf_P(Tcall_message_char, "%-9s", Tcall.c_str());
         String Tcall_message = String(Tcall_message_char);
         // Flash the light when telemetry is being sent
         #ifdef ENABLE_LED_SIGNALING
@@ -958,7 +995,7 @@ void setup(){
     rf95.setModemConfig(BG_RF95::Bw125Cr45Sf4096);
   }
 
-  Serial.printf("LoRa Speed:\t%d\n", lora_speed);
+  Serial.printf("LoRa Speed:\t%lu\n", lora_speed);
   
   rf95.setFrequency(lora_freq);
   Serial.printf("LoRa FREQ:\t%f\n", lora_freq);

Discussion:
I had problems with sb_min_speed. Web-Interface said it was 3. My debug printf said it was 0. I re-entered -> no effect.
I tried to change float sb_min_speed = 3; -> it worked.
I tried to change to 0.0, it kept fixed. I returned to 0 -> still worked. Hmmm.

Anyway, perhaps it's a good idea to cast float to int and int to float while setting / reading preferences. This does not fixed above described problem, but I think it makes things cleaner.

@@ -782,15 +819,15 @@ void setup(){
 
     if (!preferences.getBool(PREF_APRS_SB_MIN_SPEED_PRESET_INIT)){
       preferences.putBool(PREF_APRS_SB_MIN_SPEED_PRESET_INIT, true);
-      preferences.putInt(PREF_APRS_SB_MIN_SPEED_PRESET, sb_min_speed);
+      preferences.putInt(PREF_APRS_SB_MIN_SPEED_PRESET, (int ) sb_min_speed);
     }
-    sb_min_speed = preferences.getInt(PREF_APRS_SB_MIN_SPEED_PRESET);
+    sb_min_speed = (float) preferences.getInt(PREF_APRS_SB_MIN_SPEED_PRESET);
 
     if (!preferences.getBool(PREF_APRS_SB_MAX_SPEED_PRESET_INIT)){
       preferences.putBool(PREF_APRS_SB_MAX_SPEED_PRESET_INIT, true);
-      preferences.putInt(PREF_APRS_SB_MAX_SPEED_PRESET, sb_max_speed);
+      preferences.putInt(PREF_APRS_SB_MAX_SPEED_PRESET, (int ) sb_max_speed);
     }
-    sb_max_speed = preferences.getInt(PREF_APRS_SB_MAX_SPEED_PRESET);
+    sb_max_speed = (float) preferences.getInt(PREF_APRS_SB_MAX_SPEED_PRESET);
 
     if (!preferences.getBool(PREF_APRS_SB_ANGLE_PRESET_INIT)){
       preferences.putBool(PREF_APRS_SB_ANGLE_PRESET_INIT, true);

Add OLED timeout when display is ON and no packets are received

To better save power it would be useful to enable OLED just when necessary (such as when receiving packets or pressing a button). For example with OLED in power save mode one short press of user button can wake up the display and with OLED ON a short press can send manual position

Unable to find wifi network

Hi
I have big problem to find the related wifi network xxxxAP, there is somethings to do???
it worked only firs time I uploaded the firmware.
thank you
73 de IW9GRL

Disable Beaconing

Hi!

I want use the T-Beam as a RX-Only KISS TNC in combination with APRX. How can i complete disable beaconing?

Is it enough to disable GPS and don't define a fixed beacon?

73 Mario
DG1FI/OK8FI

position frame rate limiting

I saw a relative high rate of frames sent in between 5s. This is too high for LoRa.
20s is imho a minimum. May be lesser on higher data rates (smaller SF than 12).

In TTGO_T-Beam_LoRa_APRS.ino I added:

After

  average_speed_final = (average_speed[0]+average_speed[1]+average_speed[2]+average_speed[3]+average_speed[4])/5;
   average_course[point_avg_course] = gps.course.deg();   // calculate smart beaconing course
   ++point_avg_course;

..this check:

 // not transmitted due to rate limit in previous round? Try again without recomputing nextTX
if (nextTX && nextTX <= 20000L)
  goto behind_recomputation_of_nextTX;

And:

Instead of

  if ((millis()<sb_max_interval)&&(lastTX == 0)) {
     nextTX = 0;
   }
  if ( (lastTX+nextTX) <= millis()  ) {

this code:

if ((millis()<sb_max_interval)&&(lastTX == 0)) {
    nextTX = 0;
  }

behind_recomputation_of_nextTX:

 // rate limit to 20s¶
 if ((lastTX+nextTX) < millis()) && ((millis()-lastTX) >= 20000L)) { 

Btw, last line, I think "if ( (lastTX+nextTX) < millis() )" instead of "if ( (lastTX+nextTX) <= millis() )" is correct,
because lastTX is equal to millis(), and nextTX is 0, we just have transmitted.

Feature request: message text only in every tenth's transmission

Another airtime saving feature:
send message text only in every tenth's frame.
To be discussed: could also be added for battery voltage information.

In TTGO_T-Beam_LoRa_APRS.ino:

@@ -326,15 +352,21 @@ void prepareAPRSFrame(){
   }
 
   if(show_cmt){
-    outString += aprsComment;
+    static uint8_t n;
+    static uint32_t last_sent = 0L;
+    if (!rate_limit_message_text || (n++ % 10) == 0 || (last_sent + sb_max_interval) < millis())
+      outString += aprsComment;
+    last_sent = millis();
   }
 
   if(showBattery){

Problem during build

Describe the bug

After installed Visual Studio Code, loaded the package and selected the correct board ttgo-t-beam-v1.0
RUN --> build in platform IO

I received these messages :

.pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp: In member function 'bool Adafruit_SPIDevice::write(const uint8_t*, size_t, const uint8_t*, size_t)':
.pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp:335:61: error: invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
_spi->transferBytes(prefix_buffer, nullptr, prefix_len);
^
In file included from .pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.h:9:0,
from .pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp:1:
C:/Users/iw9gr/.platformio/packages/[email protected]/libraries/SPI/src/SPI.h:73:10: note: initializing argument 1 of 'void SPIClass::transferBytes(uint8_t*, uint8_t*, uint32_t)'
void transferBytes(uint8_t * data, uint8_t * out, uint32_t size);
^
.pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp:338:47: error: invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
_spi->transferBytes(buffer, nullptr, len);
^
In file included from .pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.h:9:0,
from .pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp:1:
C:/Users/iw9gr/.platformio/packages/[email protected]/libraries/SPI/src/SPI.h:73:10: note: initializing argument 1 of 'void SPIClass::transferBytes(uint8_t*, uint8_t*, uint32_t)'
void transferBytes(uint8_t * data, uint8_t * out, uint32_t size);
^
.pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp: In member function 'bool Adafruit_SPIDevice::write_then_read(const uint8_t*, size_t, uint8_t*, size_t, uint8_t)':
.pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp:429:59: error: invalid conversion from 'const uint8_t* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
_spi->transferBytes(write_buffer, nullptr, write_len);
^
In file included from .pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.h:9:0,
from .pio/libdeps/ttgo-t-beam-v1.0/Adafruit BusIO/Adafruit_SPIDevice.cpp:1:
C:/Users/iw9gr/.platformio/packages/[email protected]/libraries/SPI/src/SPI.h:73:10: note: initializing argument 1 of 'void SPIClass::transferBytes(uint8_t*, uint8_t*, uint32_t)'
void transferBytes(uint8_t * data, uint8_t * out, uint32_t size);
^
Compiling .pio\build\ttgo-t-beam-v1.0\lib35b\AXP202X_Library\axp20x.cpp.o
*** [.pio\build\ttgo-t-beam-v1.0\lib7f9\Adafruit BusIO\Adafruit_SPIDevice.cpp.o] Error 1
======================================================================================= [FAILED] Took 7.93 seconds =======================================================================================

Environment Status Duration

ttgo-t-beam-v1.0 FAILED 00:00:07.931
================================================================================== 1 failed, 0 succeeded in 00:00:07.931 ==================================================================

Screenshots

image

Desktop (please complete the following information):

OS: Win11
PlatformIO Version: last one @ Aug 4th 2022
Board name:

TTGO TBEAM 1.0
Thank you
73 de IW9GRL

image

Document interoperability

This should be an easy PR for the readme, I just don't have time right now. Add in a section about how this project can work with other projects.

See #29 (comment).

If altitude negative: wrong notation

If altitude is negative, /A= altitude is encoded wrong: /A=000-43 instead of /A=-00043

Fix:

TTGO_T-Beam_LoRa_APRS.ino:

@@ -274,7 +292,7 @@ void prepareAPRSFrame(){
   double Tspeed=0, Tcourse=0;
   uint32_t aprs_lat, aprs_lon;
   int i;
-  int Talt;
+  long Talt;
   Tlat=gps.location.lat();
   Tlon=gps.location.lng();
   Tcourse=gps.course.deg();
@ -310,13 +336,13 @@ void prepareAPRSFrame(){
     outString += "H";
 
     if (showAltitude){
-      Talt = gps.altitude.meters() * 3.28;
-      Altx = Talt;
+      Talt = gps.altitude.feet();
+      char buf[7];
       outString += "/A=";
-      for (i = 0; i < (6 - Altx.length()); ++i){
-        outString += "0";
-      }
-      outString += Talt;
+      if (Talt > 999999) Talt=999999;
+      else if (Talt < -99999) Talt=-99999;
+      sprintf(buf, "%06ld", Talt);
+      outString += buf;
     }
   }else{  //fixed position not compresed
     outString += aprsLatPreset;

Comments:

  1. Storage size of int may be not enough -> long Talt.
  2. TinyGPS++ alreadready comes with gps.altitude.feet(); -> no need to do it ourself (gps.altitude.meters() * 3.28;)
  3. /A=nnnnnn : n is exactly 6 bytes long. -> Assured Talt is in between -99999 and 999999

What is the web interface URL?

I can't seem to find this anywhere. From the readme, it seems like I should connect to the access point using the password (#40), and then navigate to a URL hosted by the device. What is the URL?

Separate path for telemetry.

It is necessary to be able to set a path for telemetry to prevent this data from being repeated by the DIGI to which the TNC is connected.
Look at the screen below in DIGI I have two interfaces SQ9MDD-4 on 2m and SQ9MDD-3 LoRa. The telemetry from the Lora interface goes with the path as source data and is repeated on the 2m interface

obraz

What is the default WIFI (N0CALL-0 AP) password?

Hi
I flashed my T-BEAM, but it doesn’t seem to boot properly.

Leaving...
Hard Resetting...
Done! Flashing is complete!

Showing logs:
[16:52:43][E][Preferences.cpp:437] getString(): nvs_get_str len fail: aprs_s_table NOT_FOUND
[16:52:43][E][Preferences.cpp:437] getString(): nvs_get_str len fail: aprs_symbol NOT_FOUND
[16:52:48][E][Preferences.cpp:437] getString(): nvs_get_str len fail: aprs_callsign NOT_FOUND
[16:52:49][E][Preferences.cpp:437] getString(): nvs_get_str len fail: wifi_password NOT_FOUND
[16:52:49][E][Preferences.cpp:437] getString(): nvs_get_str len fail: wifi_ssid NOT_FOUND

73
de BG0GE

Security Issue: Make default Wifi Password changeable

If you start the tracker and there is no WLAN configured or the configured WLAN is not in range, the default WLAN hotspot is started.
This uses the configured callsign and SSID as network SSID and is therefore very easy to find and identify.
Since there is a default password for the WLAN that cannot be changed via the web interface, someone who knows this (publicly discoverable) data can connect and change the tracker.

I therefore suggest that the WLAN password is made configurable via the web interface.

Possibility to set the frequency up to four digits behind a decimal point.

In the UK we have granted a different frequency for LoRa than the rest of Europe has. It's 439.9125 but the configuration allows 3 decimal digits only. In fact, we need 4 decimal digits configuration possibility.

I tried to edit the configurator HTML code but it doesn't work. Probably it needs a deeper source code edition.

APLSxx tocall is not assigned to LoRa

Hi,

your tracker code is using the hard-coded to-call of APLS01 which is officially assigned to sarimesh. I'd suggest using the APLT (lora tracker) prefix with a different version number, or get a new tocall prefix assigned by Bob Bruninga. That should be as easy as sending him an email :)

Georg DO1GL

Bug: Empty Relay-Path leads to invalid packages

When I delete the "WIDE1-1" from the relay-path field and want to send with an empty path, the packets are generated incorrectly:
DO3BOX-3>APLO01,:!L4hNsP/=S>!&H/A=000421Lora Tracker Batt=4.17V
It looks like the if-query in line 244 of the TTGO-T-Beam-LoRa-APRS is not working.

Feedback on battery duration

I'm trying to undestand the current battery consumption, the most battery aggressive feature is transmission followed by WiFi, my T-Beam lasted around 2h in tracking mode which is not so good. Any feedback?

2021-09-19 19:34:32 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](AQ5&W[!0H/A=000000https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=4.04V
2021-09-19 19:34:42 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](>Q5&N[g5H/A=000010https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=4.04V
2021-09-19 19:36:19 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](sQ5&[[R8H/A=000008https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=4.04V
2021-09-19 19:36:36 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](TQ5&Z[e3H/A=000004https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=4.04V
2021-09-19 19:37:46 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](.Q5&K[I:H/A=000-10https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=4.03V
2021-09-19 19:42:43 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](IQ5&l[I)H/A=000000https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=4.04V
2021-09-19 19:45:40 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7]&DQ5&4["AH/A=000007https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=4.03V
2021-09-19 19:50:25 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](>Q5%)[d<H/A=0000-4https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=4.04V
2021-09-19 19:58:11 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](DQ5&"[f&H/A=000000https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=4.03V
2021-09-19 20:15:26 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](FQ5%l[f1H/A=0000-1https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.98V
2021-09-19 20:15:52 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](_Q5&@[::H/A=000030https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.97V
2021-09-19 20:17:31 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](,Q5%Y[h0H/A=000000https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.97V
2021-09-19 20:18:11 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](/Q5%y[-3H/A=000027https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.95V
2021-09-19 20:18:20 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7]'+Q5#4[hJH/A=000017https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.97V
2021-09-19 20:20:30 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7]'YQ5$F[%2H/A=0000-1https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.97V
2021-09-19 20:20:58 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7]("Q5%R[;1H/A=000018https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.97V
2021-09-19 20:23:21 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](.Q5%p[X3H/A=000001https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.93V
2021-09-19 20:45:13 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](0Q5&![L5H/A=000000https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.88V
2021-09-19 20:45:45 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](.Q5&U[Z6H/A=000012https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.88V
2021-09-19 20:50:43 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](-Q5&K[Z+H/A=0000-9https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.85V
2021-09-19 20:55:45 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](/Q5&d[5*H/A=000008https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.84V
2021-09-19 20:56:17 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](<Q5'j[L<H/A=000022https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.83V
2021-09-19 20:57:20 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](/Q5)1[_;H/A=000038https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.83V
2021-09-19 21:02:39 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7]'gQ5&?[_+H/A=000001https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.78V
2021-09-19 21:07:37 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](<Q5&k[_)H/A=0000-1https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.72V
2021-09-19 21:12:41 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](BQ5&M[y)H/A=000004https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.63V
2021-09-19 21:12:52 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7]&VQ5&][$HH/A=000005https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.62V
2021-09-19 21:14:51 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7])IQ5&j[I:H/A=000001https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.55V
2021-09-19 21:19:48 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7](MQ5&E[I*H/A=0000-5https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.39V
2021-09-19 21:19:59 CEST: IU2FRL-12>APLO01,WIDE1-1,qAR,IU2FRL-10:!/7]#8Q5&Q[!RH/A=000040https://www.iu2frl.it/tracker-lora32-in-uhf/ Batt=3.36V

Download from bins not possible

Hello Rysiek Labus
I'm F4VSJ and interrested in your files for the lora aprs with the web interface
I tried to get the .boin files ,but there is no way to get them
The webpage is not the right link...
the one i would use is in the relase 2022-02-03T172531
The one for the ttgo-t-beam V1
clicking on the link become an unvalid link, error 404...
Kind regards and 73's from F4VSJ
Please keep me informed: [email protected]

Switch tx profile

How about switching via www interface tx profiles? Another for car (shortest time between tx) , bike, or walk (longest time between tx).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.