From d3b3a368a8270b7a5b41485048b49a5e60aa8d50 Mon Sep 17 00:00:00 2001 From: Christian OE3CJB Bauer Date: Wed, 29 Jul 2020 13:30:40 +0200 Subject: [PATCH 1/4] add RV symbol --- src/TTGO_T-Beam_LoRa_APRS.ino | 8 ++++---- src/TTGO_T-Beam_LoRa_APRS_config.h | 13 +++++++------ 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/TTGO_T-Beam_LoRa_APRS.ino b/src/TTGO_T-Beam_LoRa_APRS.ino index 1c5a6fc..257e532 100644 --- a/src/TTGO_T-Beam_LoRa_APRS.ino +++ b/src/TTGO_T-Beam_LoRa_APRS.ino @@ -1079,9 +1079,9 @@ void setup_data(void) { char werte_call[37] = {' ','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','1','2','3','4','5','6','7','8','9','0'}; String werte_SSID[16] = {"0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"}; char werte_latlon[14] = {'0','1','2','3','4','5','6','7','8','9','N','S','E','W'}; - String werte_TxSymbol_text[5] = {"WX Station"," Car"," Person"," Bicycle","Motorcycle"}; - String werte_TxSymbol_symbol[5] = {"_",">","[","b","<"}; - String werte_weiter_symbol[5] = {"yes","no"}; + String werte_TxSymbol_text[6] = {"WX Station"," Car"," Person"," Bicycle","Motorcycle"," RV"}; + String werte_TxSymbol_symbol[6] = {"_",">","[","b","<","R"}; + String werte_weiter_symbol[2] = {"yes","no"}; int8_t pos_in_string; int8_t pos_ssid; bool key_pressed = false; @@ -1112,7 +1112,7 @@ void setup_data(void) { break; } ++pos_ssid; - if (pos_ssid>=5) {pos_ssid=0;} + if (pos_ssid>=6) {pos_ssid=0;} } // smartDelay(500); diff --git a/src/TTGO_T-Beam_LoRa_APRS_config.h b/src/TTGO_T-Beam_LoRa_APRS_config.h index 8a12b33..5a9beb4 100644 --- a/src/TTGO_T-Beam_LoRa_APRS_config.h +++ b/src/TTGO_T-Beam_LoRa_APRS_config.h @@ -24,8 +24,8 @@ // first released version // SET HW version -// #define T_BEAM_V1_0 // use this for newer Boards AKA Rev1 (second board release) -#define T_BEAM_V0_7 // use this for older Boards AKA Rev0.x (first board release) +#define T_BEAM_V1_0 // use this for newer Boards AKA Rev1 (second board release) +// #define T_BEAM_V0_7 // use this for older Boards AKA Rev0.x (first board release) // SET temperature sensor type // #define DS18B20 // use this if you use DS18B20, default ist DHT22 @@ -33,17 +33,18 @@ // USER DATA - USE THESE LINES TO MODIFY YOUR PREFERENCES // IF NOT CHANGED you have to go through the configuration routine at first boot up of the TTGO T-Beam -// #define DONT_USE_FLASH_MEMORY // uncomment if you don't want to use Flashmemory - instead data below must be corrected -#define CALLSIGN "OE1XYZ-0" // enter your callsign here - less then 6 letter callsigns please add "spaces" so total length is 6 (without SSID) -#define WX_CALLSIGN "OE1XYZ-0" // use same callsign but you can use different SSID +#define DONT_USE_FLASH_MEMORY // uncomment if you don't want to use Flashmemory - instead data below must be corrected +#define CALLSIGN "OE3CJB-14" // enter your callsign here - less then 6 letter callsigns please add "spaces" so total length is 6 (without SSID) +#define WX_CALLSIGN "OE3CJB-14" // use same callsign but you can use different SSID #define LONGITUDE_PRESET "01539.85E" // please in APRS notation DDDMM.mmE or DDDMM.mmW #define LATIDUDE_PRESET "4813.62N" // please in APRS notation DDMM.mmN or DDMM.mmS -#define APRS_SYMBOL ">" // other symbols are +#define APRS_SYMBOL "R" // other symbols are // "_" => Weather Station // ">" => CAR // "[" => RUNNER // "b" => BICYCLE // "<" => MOTORCYCLE + // "R" => Recreation Vehicle // TRANSMIT INTERVAL unsigned long max_time_to_nextTX = 180000L; // set here MAXIMUM time in ms(!) for smart beaconing - minimum time is always 1 min = 60 secs = 60000L !!! From 9054d21f4d251988f1c00a424e4f5a41785851b3 Mon Sep 17 00:00:00 2001 From: Christian OE3CJB Bauer Date: Thu, 27 Aug 2020 21:41:54 +0200 Subject: [PATCH 2/4] base91 compressed packets --- README.md | 2 + src/TTGO_T-Beam_LoRa_APRS.ino | 122 ++++++++++++++++++++--------- src/TTGO_T-Beam_LoRa_APRS_config.h | 15 +++- 3 files changed, 98 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 8f3df09..86e4fb1 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,8 @@ Now the DS18B20 is supported as well - uncomment line 31: // #define DS18B20 by uncommenting // #define SHOW_RX_PACKET the tracker shows received LoRa APRS packets in raw format for the time in milliseconds defined in SHOW_RX_TIME - both in ...config.h

new features:
+- compressed packets in tracker mode +- symbol RV added - show RX packets - DS18B20 support (setable in config.h) - GPS switched off in WX_FIXED mode (only available with boards with HW-Version >=V1.0) diff --git a/src/TTGO_T-Beam_LoRa_APRS.ino b/src/TTGO_T-Beam_LoRa_APRS.ino index 257e532..36c7ffb 100644 --- a/src/TTGO_T-Beam_LoRa_APRS.ino +++ b/src/TTGO_T-Beam_LoRa_APRS.ino @@ -11,9 +11,14 @@ // // licensed under CC BY-NC-SA // +// version: V1.3 +// last update: 27.08.2020 +// change history +// symbol RV added +// compressed packets in tracker mode (base91) +// // version: V1.2 // last update: 02.01.2020 -// // change history // added course change to smart Beaconing // code cleaned @@ -736,14 +741,29 @@ static void smartDelay(unsigned long ms) } while (millis() - start < ms); } +char *ax25_base91enc(char *s, uint8_t n, uint32_t v) +{ + /* Creates a Base-91 representation of the value in v in the string */ + /* pointed to by s, n-characters long. String length should be n+1. */ + + for(s += n, *s = '\0'; n; n--) + { + *(--s) = v % 91 + 33; + v /= 91; + } + + return(s); +} ///////////////////////////////////////////////////////////////////////////////////////// //@APA Recalc GPS Position == generate APRS string void recalcGPS(){ String Ns, Ew, helper; + char helper_base91[] = {"0000\0"}; float Tlat=48.2012, Tlon=15.6361; int i, Talt, lenalt; + uint32_t aprs_lat, aprs_lon; float Lat=0.0; float Lon=0.0; float Tspeed=0, Tcourse=0; @@ -931,48 +951,76 @@ case WX_MOVE: break; case TRACKER: default: - for (i=0; i" // other symbols are // "_" => Weather Station // ">" => CAR // "[" => RUNNER From 891204402e7b7b1f4c1e14fb0d215b21960aad41 Mon Sep 17 00:00:00 2001 From: Christian OE3CJB Bauer Date: Sun, 30 Aug 2020 12:42:15 +0200 Subject: [PATCH 3/4] added base91 coding in other modes, comments selectable --- src/TTGO_T-Beam_LoRa_APRS.ino | 216 +++++++++++++++++++++-------- src/TTGO_T-Beam_LoRa_APRS_config.h | 4 +- 2 files changed, 160 insertions(+), 60 deletions(-) diff --git a/src/TTGO_T-Beam_LoRa_APRS.ino b/src/TTGO_T-Beam_LoRa_APRS.ino index 36c7ffb..33bb104 100644 --- a/src/TTGO_T-Beam_LoRa_APRS.ino +++ b/src/TTGO_T-Beam_LoRa_APRS.ino @@ -219,6 +219,8 @@ float avg_c_y, avg_c_x; float millis_angle[ANGLE_AVGS]; #endif +#define TX_BASE91 // if BASE91 is set, packets will be sent compressed (in TRACKER-mode only) + static const adc_atten_t atten = ADC_ATTEN_DB_6; static const adc_unit_t unit = ADC_UNIT_1; @@ -791,6 +793,10 @@ void recalcGPS(){ if(Tlon < 0) { Tlon= -Tlon; } unsigned int Deg_Lon = Tlon; Lon = 100*(Deg_Lon) + (Tlon - Deg_Lon)*60; + aprs_lat = 900000000 - Tlat * 10000000; + aprs_lat = aprs_lat / 26 - aprs_lat / 2710 + aprs_lat / 15384615; + aprs_lon = 900000000 + Tlon * 10000000 / 2; + aprs_lon = aprs_lon / 26 - aprs_lon / 2710 + aprs_lon / 15384615; } outString = ""; @@ -816,6 +822,10 @@ switch(tracker_mode) { outString += wxTable; outString += LongFixed; outString += wxSymbol; + + + + outString += ".../...g...t"; if (tempf < 0) { // negative Werte erstellen outString += "-"; @@ -834,6 +844,7 @@ switch(tracker_mode) { helper.trim(); outString += helper; outString += "b......DHT22"; + outString += MY_COMMENT; break; case WX_TRACKER: if (wx) { @@ -845,22 +856,46 @@ switch(tracker_mode) { hum = dht.getHumidity(); tempf = dht.getTemperature()*9/5+32; #endif - for (i=0; i BICYCLE // "<" => MOTORCYCLE // "R" => Recreation Vehicle +// #define HW_COMMENT // send Alt und Battery Voltage, UNcomment if don't want to send it +#define MY_COMMENT "" // add your coment here - if empty then no comment is sent +// #define MY_COMMENT "TTGO by OE3CJB" // add your coment here - if empty then no comment is sent // TRANSMIT INTERVAL unsigned long max_time_to_nextTX = 180000L; // set here MAXIMUM time in ms(!) for smart beaconing - minimum time is always 1 min = 60 secs = 60000L !!! From 67532910e164c204c0510d63ab522fb0fcd27a0a Mon Sep 17 00:00:00 2001 From: Christian OE3CJB Bauer Date: Sun, 13 Dec 2020 09:49:16 +0100 Subject: [PATCH 4/4] OE1XYZ was real callsign - changed to mine --- src/TTGO_T-Beam_LoRa_APRS_config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/TTGO_T-Beam_LoRa_APRS_config.h b/src/TTGO_T-Beam_LoRa_APRS_config.h index 942d00d..587429d 100644 --- a/src/TTGO_T-Beam_LoRa_APRS_config.h +++ b/src/TTGO_T-Beam_LoRa_APRS_config.h @@ -40,8 +40,8 @@ // IF NOT CHANGED you have to go through the configuration routine at first boot up of the TTGO T-Beam // #define DONT_USE_FLASH_MEMORY // uncomment if you don't want to use Flashmemory - instead data below must be corrected -#define CALLSIGN "OE1XYZ-11" // enter your callsign here - less then 6 letter callsigns please add "spaces" so total length is 6 (without SSID) -#define WX_CALLSIGN "OE1XYZ-11" // use same callsign but you can use different SSID +#define CALLSIGN "OE3CJB-11" // enter your callsign here - less then 6 letter callsigns please add "spaces" so total length is 6 (without SSID) +#define WX_CALLSIGN "OE3CJB-11" // use same callsign but you can use different SSID #define LONGITUDE_PRESET "01539.85E" // please in APRS notation DDDMM.mmE or DDDMM.mmW #define LATIDUDE_PRESET "4813.62N" // please in APRS notation DDMM.mmN or DDMM.mmS #define APRS_SYMBOL ">" // other symbols are