From 09036f70e1c7c8d2233263b214e385ae66912e06 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 10:31:08 +0300 Subject: [PATCH 01/24] Update README.md --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f1c6709..3b23126 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ -# LoRa APRS ESP32 APRSDroid bluetooth modem, LoRa APRS-IS RX/TX iGate with digirepeater -Amateur radio ESP32 based LoRa APRSDroid KISS Bluetooth modem, LoRa APRS-IS RX/TX iGate server over WiFI plus digirepeater +# LoRa APRS ESP32 KISS APRSDroid bluetooth modem, LoRa APRS-IS RX/TX iGate with digirepeater +Amateur radio ESP32 based LoRa APRSDroid KISS Bluetooth modem + LoRa APRS-IS RX/TX iGate server over WiFI + digirepeater ![alt text](images/pinouts.png) Can be used in two modes: -- **as a LoRa APRS client**, you need to use APRSDroid application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages. -- **as a LoRa APRS iGate server**, which connects to your WiFI and forwards received LoRa APRS positions into the APRS-IS network, it also reports client signal level, by appending it into the APRS comment, so you can see your signal reports in different locations (could be enabled or disabled). It also supports: - - **APRS-IS to RF gating**, so it is possible to enable it together with the filter in the config +- **LoRa APRS KISS client over bluetooth**, you need to use APRSDroid application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages. Alternatively, it is possible to use other KISS APRS clients over serial, just use `rfcomm` on Linux to setup serial over Bluetooth and put up AX25 interface with `kissattach` +- **LoRa APRS iGate RX/TX server** + - **RF to APRS-IS gating**, it will connect to WiFI and will forward received APRS positions from RF LoRAa into the APRS-IS network, it also reports client signal level, by appending it into the APRS comment, so you can see your signal reports in different locations (could be enabled or disabled from config) + - **APRS-IS to RF gating**, it is possible to enable it together with the filter in the config, so APRS-IS data will be forwarded to RF - **RF digirepating** for basic `WIDEn-n` paths, `TRACE` and others are not supported yet - - Own station periodic beacon announcement to APRS-IS and RF + - **Self beaconing**, own station periodic beacon announcement to APRS-IS and RF # Compatible Boards All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 board is compatible then it should work, but there might be need to redefine pinouts to LoRa module if it differs (see further description in Software Setup section) From 473cfe288f994fb783e889d8189b4f257a11b339 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 10:31:46 +0300 Subject: [PATCH 02/24] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3b23126..03abb15 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# LoRa APRS ESP32 KISS APRSDroid bluetooth modem, LoRa APRS-IS RX/TX iGate with digirepeater -Amateur radio ESP32 based LoRa APRSDroid KISS Bluetooth modem + LoRa APRS-IS RX/TX iGate server over WiFI + digirepeater +# LoRa APRS ESP32 KISS APRSDroid bluetooth modem, LoRa APRS-IS RX/TX iGate with digipeater +Amateur radio ESP32 based LoRa APRSDroid KISS Bluetooth modem + LoRa APRS-IS RX/TX iGate server over WiFI + digipeater ![alt text](images/pinouts.png) Can be used in two modes: - **LoRa APRS KISS client over bluetooth**, you need to use APRSDroid application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages. Alternatively, it is possible to use other KISS APRS clients over serial, just use `rfcomm` on Linux to setup serial over Bluetooth and put up AX25 interface with `kissattach` -- **LoRa APRS iGate RX/TX server** +- **LoRa APRS iGate RX/TX server + digipeater** - **RF to APRS-IS gating**, it will connect to WiFI and will forward received APRS positions from RF LoRAa into the APRS-IS network, it also reports client signal level, by appending it into the APRS comment, so you can see your signal reports in different locations (could be enabled or disabled from config) - **APRS-IS to RF gating**, it is possible to enable it together with the filter in the config, so APRS-IS data will be forwarded to RF - **RF digirepating** for basic `WIDEn-n` paths, `TRACE` and others are not supported yet From 52f8d0a01ccb1401aa69bdd65d529bf203e279ce Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 10:35:57 +0300 Subject: [PATCH 03/24] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 03abb15..f5a9b45 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,9 @@ Amateur radio ESP32 based LoRa APRSDroid KISS Bluetooth modem + LoRa APRS-IS RX/ ![alt text](images/pinouts.png) Can be used in two modes: -- **LoRa APRS KISS client over bluetooth**, you need to use APRSDroid application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages. Alternatively, it is possible to use other KISS APRS clients over serial, just use `rfcomm` on Linux to setup serial over Bluetooth and put up AX25 interface with `kissattach` +- **LoRa APRS KISS client over bluetooth**, + - you need to use **APRSDroid** application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages. Alternatively + - it is also possible to use **other KISS APRS clients** over serial, just use `rfcomm` on Linux to setup serial over Bluetooth and put up AX25 interface with `kissattach`, then use any existing Linux APRS clients, such as `Xastir` or even run `TCPIP` over AX25. - **LoRa APRS iGate RX/TX server + digipeater** - **RF to APRS-IS gating**, it will connect to WiFI and will forward received APRS positions from RF LoRAa into the APRS-IS network, it also reports client signal level, by appending it into the APRS comment, so you can see your signal reports in different locations (could be enabled or disabled from config) - **APRS-IS to RF gating**, it is possible to enable it together with the filter in the config, so APRS-IS data will be forwarded to RF From 03a476958266f59dbd91b45f4090ab685197b89c Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 10:36:33 +0300 Subject: [PATCH 04/24] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f5a9b45..152a310 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ Amateur radio ESP32 based LoRa APRSDroid KISS Bluetooth modem + LoRa APRS-IS RX/ Can be used in two modes: - **LoRa APRS KISS client over bluetooth**, - - you need to use **APRSDroid** application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages. Alternatively - - it is also possible to use **other KISS APRS clients** over serial, just use `rfcomm` on Linux to setup serial over Bluetooth and put up AX25 interface with `kissattach`, then use any existing Linux APRS clients, such as `Xastir` or even run `TCPIP` over AX25. + - you need to use **APRSDroid** application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages + - it is also possible to use **other KISS APRS clients** over serial, just use `rfcomm` on Linux to setup serial over Bluetooth and put up AX25 interface with `kissattach`, then use any existing Linux APRS clients, such as `Xastir` or even run `TCPIP` over AX25 - **LoRa APRS iGate RX/TX server + digipeater** - **RF to APRS-IS gating**, it will connect to WiFI and will forward received APRS positions from RF LoRAa into the APRS-IS network, it also reports client signal level, by appending it into the APRS comment, so you can see your signal reports in different locations (could be enabled or disabled from config) - **APRS-IS to RF gating**, it is possible to enable it together with the filter in the config, so APRS-IS data will be forwarded to RF From d21fe751447551c87cfb830394fa706cfe2898e3 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 10:38:44 +0300 Subject: [PATCH 05/24] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 152a310..6c70172 100644 --- a/README.md +++ b/README.md @@ -57,8 +57,8 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa # Test Results ![alt text](images/setup.png) - Antennas - - Client: rubber duck antenna or mobile antenna on a car roof - - Server: 7 element UHF yagi indoors + - Client: rubber duck, halo, mobile antenna on a car roof + - Server: 7 element UHF yagi indoors, vertical on the roof - Range (20 KHz channel width and 9 spreading factor, also got similar results with 125 kHz and 12 SF) - **About 7 km** when server is 30m above the ground and client is 2m above the ground with rubber duck antenna or inside a car - **About 13 km** when server is 30m above the ground and client is at some higher point ~40m above the ground with rubber duck antenna From 109791bcbd2c7b1a22d97e1e8af812604d881237 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 10:40:29 +0300 Subject: [PATCH 06/24] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6c70172..ee12e30 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,8 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - lora module SS, **CfgPinSs**, pin 5 - lora module RST, **CfgPinRst**, pin 26 - lora module DIO0, **CfgPinDio0**, pin 14 -- if you are planning to experiment with different bandwidths/spread factors then modify loraprs.h, with current parameters APRS packet time on air is around **2 seconds** to decode with as lower level as possible, use https://github.com/tanupoo/lorawan_toa to make calculations - - lora bandwidth `cfg.LoraBw`, 125 kHz +- if you are planning to experiment with different bandwidths/spread factors then modify values in `initializeConfig()`, with current parameters APRS packet time on air is around **2 seconds** to decode with as lower level as possible, use https://github.com/tanupoo/lorawan_toa to make calculations + - lora bandwidth `cfg.LoraBw`, 125 kHz (also tested with 20.6 KHz and SF9 with frequency correction) - lora spread factor `cfg.LoraSf`, 12 (should decode down to -20dB, choosen with the goal for minimum signal decode) - lora coding rate `cfg.LoraCodingRate`, 7 - lora output power `cfg.LoraPower`, 20 (max 20 dBm ~ 100mW, change to lower value if needed) From 5cc76d9ed2c988bf8f5d457d2b9f2bb1e6224436 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 12:55:56 +0300 Subject: [PATCH 07/24] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ee12e30..8d66c7b 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ Amateur radio ESP32 based LoRa APRSDroid KISS Bluetooth modem + LoRa APRS-IS RX/ ![alt text](images/pinouts.png) Can be used in two modes: -- **LoRa APRS KISS client over bluetooth**, +- **LoRa APRS KISS client over bluetooth** - you need to use **APRSDroid** application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages - - it is also possible to use **other KISS APRS clients** over serial, just use `rfcomm` on Linux to setup serial over Bluetooth and put up AX25 interface with `kissattach`, then use any existing Linux APRS clients, such as `Xastir` or even run `TCPIP` over AX25 + - it is also possible to use **other KISS APRS clients** over Bluetooth serial, just use `rfcomm` on Linux to setup serial over Bluetooth and put up AX25 interface with `kissattach`, then use any existing Linux APRS clients, such as `Xastir` or even run `TCPIP` over AX25 - **LoRa APRS iGate RX/TX server + digipeater** - **RF to APRS-IS gating**, it will connect to WiFI and will forward received APRS positions from RF LoRAa into the APRS-IS network, it also reports client signal level, by appending it into the APRS comment, so you can see your signal reports in different locations (could be enabled or disabled from config) - **APRS-IS to RF gating**, it is possible to enable it together with the filter in the config, so APRS-IS data will be forwarded to RF From e98e2cad0746a03dd968c0dbafdfcb54e4b4b3fc Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 12:59:43 +0300 Subject: [PATCH 08/24] Update README.md --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8d66c7b..dd14462 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,11 @@ Can be used in two modes: - **LoRa APRS KISS client over bluetooth** - you need to use **APRSDroid** application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages - it is also possible to use **other KISS APRS clients** over Bluetooth serial, just use `rfcomm` on Linux to setup serial over Bluetooth and put up AX25 interface with `kissattach`, then use any existing Linux APRS clients, such as `Xastir` or even run `TCPIP` over AX25 -- **LoRa APRS iGate RX/TX server + digipeater** - - **RF to APRS-IS gating**, it will connect to WiFI and will forward received APRS positions from RF LoRAa into the APRS-IS network, it also reports client signal level, by appending it into the APRS comment, so you can see your signal reports in different locations (could be enabled or disabled from config) +- **LoRa APRS iGate RX/TX server + Digipeater** + - **RF to APRS-IS gating**, it will connect to WiFI and will forward received APRS positions from RF LoRa into the APRS-IS network, it also reports client signal level, by appending it into the APRS comment, so you can see your signal reports in different locations (could be enabled or disabled from config) - **APRS-IS to RF gating**, it is possible to enable it together with the filter in the config, so APRS-IS data will be forwarded to RF - **RF digirepating** for basic `WIDEn-n` paths, `TRACE` and others are not supported yet - - **Self beaconing**, own station periodic beacon announcement to APRS-IS and RF + - **beaconing**, own station periodic beacon announcement to APRS-IS and RF # Compatible Boards All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 board is compatible then it should work, but there might be need to redefine pinouts to LoRa module if it differs (see further description in Software Setup section) @@ -72,6 +72,8 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - https://github.com/sh123/aprsdroid/tree/aprsdroid_compressed_gradle - Polarization - Using **horizontal polarization** improves successful decoding probability and receiving range +- Interference + - Monitor your planned frequency, such as 433.775 MHz for ISM device activity, if there is strong interference from other users tune it to minimize interference - Weather - Rain and high humidity levels decrease signal level by about **~3-6 dB** From c1744f9899de7be52b813e3c5756903a66bcb6c8 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 13:00:51 +0300 Subject: [PATCH 09/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dd14462..26549e5 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - Polarization - Using **horizontal polarization** improves successful decoding probability and receiving range - Interference - - Monitor your planned frequency, such as 433.775 MHz for ISM device activity, if there is strong interference from other users tune it to minimize interference + - Monitor your planned frequency, such as 433.775 MHz for ISM device activity, if there is strong interference from other users tune up or down it to minimize interference - Weather - Rain and high humidity levels decrease signal level by about **~3-6 dB** From e68e6d9fe1740e752826e1e00dff46c0b4807b65 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 13:17:47 +0300 Subject: [PATCH 10/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 26549e5..28ea00b 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - set `cfg.IsClientMode` to `false` if you are planning to run server mode for APRS-IS iGate / Digipeater - for server mode fill `cfg.WifiSsid` and `cfg.WifiKey` with your WiFI AP data - for server mode fill `cfg.AprsLogin` and `cfg.AprsPass` with APRS-IS login callsign and pass - - for server mode fill `cfg.AprsFilter`, see http://www.aprs-is.net/javAPRSFilter.aspx for various formats + - for server mode fill `cfg.AprsFilter`, see http://www.aprs-is.net/javAPRSFilter.aspx for various formats, do not include `filter` directive, just space separated values - change `cfg.LoraFreq` if you are planning to use different frequency or if planning to calibrate clients, currently it is set to **433.775MHz** as per https://vienna.iaru-r1.org/wp-content/uploads/2019/01/VIE19-C5-015-OEVSV-LORA-APRS-433-MHz.pdf - if you are planning to use different esp32 pinouts then modify loraprs.h - lora module SS, **CfgPinSs**, pin 5 From bdbde1364146fecda4035b5ffec485e2cf7819a3 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 13:18:27 +0300 Subject: [PATCH 11/24] Update loraprs_config.h --- loraprs_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/loraprs_config.h b/loraprs_config.h index c55d1c8..ee52b57 100644 --- a/loraprs_config.h +++ b/loraprs_config.h @@ -20,7 +20,7 @@ struct Config String AprsHost; // aprs server hostname, rotate.aprs2.net String AprsLogin; // aprs callsign to use, e.g. MY0CAL-1 String AprsPass; // aprs login password - String AprsFilter; // aprs filter, see http://www.aprs-is.net/javAPRSFilter.aspx + String AprsFilter; // aprs filter, see http://www.aprs-is.net/javAPRSFilter.aspx, do not include filter directive, just space separated values String AprsRawBeacon; // aprs string for server beacon, e.g. NOCALL-1>APZMDM,WIDE1-1:!0000.00N/00000.00E#LoRA 433.775MHz/BW125/SF12/CR7/0xf3 int AprsRawBeaconPeriodMinutes; // aprs beacon period From 4cd99b9dfc0d236feaf53b10a0762a26019173b8 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 13:19:06 +0300 Subject: [PATCH 12/24] Update esp32_loraprs.ino --- esp32_loraprs.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esp32_loraprs.ino b/esp32_loraprs.ino index 2a5cad3..103aebb 100644 --- a/esp32_loraprs.ino +++ b/esp32_loraprs.ino @@ -28,7 +28,7 @@ void initializeConfig() { cfg.AprsPort = 14580; cfg.AprsLogin = "NOCALL-10"; cfg.AprsPass = "12345"; - cfg.AprsFilter = "r/35.60/139.80/25"; + cfg.AprsFilter = "r/35.60/139.80/25"; // multiple filters are space separated cfg.AprsRawBeacon = "NOCALL-10>APZMDM,WIDE1-1:!0000.00N/00000.00E#LoRA 433.775MHz/BW125/SF12/CR7/0xf3"; cfg.AprsRawBeaconPeriodMinutes = 20; From 5bd3dbc61eb13859f5c2680858cdc030894ad053 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 13:19:39 +0300 Subject: [PATCH 13/24] Update esp32_loraprs.ino --- esp32_loraprs.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esp32_loraprs.ino b/esp32_loraprs.ino index 103aebb..9e3dfe9 100644 --- a/esp32_loraprs.ino +++ b/esp32_loraprs.ino @@ -40,7 +40,7 @@ void initializeConfig() { cfg.WifiKey = ""; // configuration flags and features - cfg.EnableAutoFreqCorrection = true; // automatic tune to any incoming packet frequency + cfg.EnableAutoFreqCorrection = false; // automatic tune to any incoming packet frequency cfg.EnableSignalReport = true; // signal report will be added to the comment sent to aprsis cfg.EnablePersistentAprsConnection = true; // keep aprsis connection open, otherwise connect on new data only cfg.EnableRfToIs = true; // send data from rf to aprsis From 595ff538e740254795889b7fee8390d393656465 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 13:28:26 +0300 Subject: [PATCH 14/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 28ea00b..6699f37 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - lora coding rate `cfg.LoraCodingRate`, 7 - lora output power `cfg.LoraPower`, 20 (max 20 dBm ~ 100mW, change to lower value if needed) - sync word `cfg.LoraSync`, 0xf3 -- consider minimum decode level based on on BW + SF ![alt text](images/bandwidth_vs_sf.jpg) +- consider minimum decode level based on on BW + SF and required throughput ![alt text](images/bandwidth_vs_sf.jpg) - use 80 MHz ESP32 frequency in Arduino SDK, it will prolong battery life when operating portable, higher CPU speed is not required, there are no CPU intensive operations - uses LoRa **built-in checksum** calculation to drop broken packets - note, that there a is **significant frequency drift** on temperature changes for different modules From 6d1ec4066ba493a9d89489036a3472d026b9c614 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 15:40:23 +0300 Subject: [PATCH 15/24] Update README.md --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6699f37..b379e73 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,13 @@ Can be used in two modes: - **beaconing**, own station periodic beacon announcement to APRS-IS and RF # Compatible Boards -All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 board is compatible then it should work, but there might be need to redefine pinouts to LoRa module if it differs (see further description in Software Setup section) +All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 board is compatible then it should work, but there might be need to redefine pinouts to LoRa module if it differs (see further description in Software Setup section), currently pinouts are connected from LoRa to ESP32-WROOM as: +- SS: GPIO_5 +- RST: GPIO_26 +- DIO0: GPIO_14 +- MOSI: GPIO_23/VSPI_MOSI +- MISO: GPIO_19/VSPI_MISO +- SCK: GPIO_18/VSPI_SCK # Software Dependencies (install via libraries) - Arduino ESP32 library: https://github.com/espressif/arduino-esp32 From dd4a15eb90f6f7f01eb8cc3bb99a9235e4393f9d Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 15:44:11 +0300 Subject: [PATCH 16/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b379e73..a2a8623 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Can be used in two modes: - **beaconing**, own station periodic beacon announcement to APRS-IS and RF # Compatible Boards -All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 board is compatible then it should work, but there might be need to redefine pinouts to LoRa module if it differs (see further description in Software Setup section), currently pinouts are connected from LoRa to ESP32-WROOM as: +All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 board is compatible then it should work, but there might be need to redefine pinouts to LoRa module if it differs (see further description in Software Setup section), currently pinouts are connected from LoRa to ESP32-WROOM as (SS/RST/DIO0 could be redefined in loraprs_service.h): - SS: GPIO_5 - RST: GPIO_26 - DIO0: GPIO_14 From 9804b19d1301de25833c22f9b7388b07a1ba02fc Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 15:47:01 +0300 Subject: [PATCH 17/24] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a2a8623..91f6ba4 100644 --- a/README.md +++ b/README.md @@ -36,9 +36,9 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - for server mode fill `cfg.AprsFilter`, see http://www.aprs-is.net/javAPRSFilter.aspx for various formats, do not include `filter` directive, just space separated values - change `cfg.LoraFreq` if you are planning to use different frequency or if planning to calibrate clients, currently it is set to **433.775MHz** as per https://vienna.iaru-r1.org/wp-content/uploads/2019/01/VIE19-C5-015-OEVSV-LORA-APRS-433-MHz.pdf - if you are planning to use different esp32 pinouts then modify loraprs.h - - lora module SS, **CfgPinSs**, pin 5 - - lora module RST, **CfgPinRst**, pin 26 - - lora module DIO0, **CfgPinDio0**, pin 14 + - lora module SS, **CfgPinSs**, GPIO_5 + - lora module RST, **CfgPinRst**, GPIO_26 + - lora module DIO0, **CfgPinDio0**, GPIO_14 - if you are planning to experiment with different bandwidths/spread factors then modify values in `initializeConfig()`, with current parameters APRS packet time on air is around **2 seconds** to decode with as lower level as possible, use https://github.com/tanupoo/lorawan_toa to make calculations - lora bandwidth `cfg.LoraBw`, 125 kHz (also tested with 20.6 KHz and SF9 with frequency correction) - lora spread factor `cfg.LoraSf`, 12 (should decode down to -20dB, choosen with the goal for minimum signal decode) From 5e7909de9bdccab141a0f1909804be447dab486e Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 15:47:39 +0300 Subject: [PATCH 18/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 91f6ba4..c014fdf 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - for server mode fill `cfg.AprsLogin` and `cfg.AprsPass` with APRS-IS login callsign and pass - for server mode fill `cfg.AprsFilter`, see http://www.aprs-is.net/javAPRSFilter.aspx for various formats, do not include `filter` directive, just space separated values - change `cfg.LoraFreq` if you are planning to use different frequency or if planning to calibrate clients, currently it is set to **433.775MHz** as per https://vienna.iaru-r1.org/wp-content/uploads/2019/01/VIE19-C5-015-OEVSV-LORA-APRS-433-MHz.pdf -- if you are planning to use different esp32 pinouts then modify loraprs.h +- if you are planning to use different esp32 pinouts then modify loraprs_service.h - lora module SS, **CfgPinSs**, GPIO_5 - lora module RST, **CfgPinRst**, GPIO_26 - lora module DIO0, **CfgPinDio0**, GPIO_14 From 6a98f03f61cec9e88ab53ae5021846d5fa07bc12 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 19:37:43 +0300 Subject: [PATCH 19/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c014fdf..5ee024a 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - **About 17km** maximum (non-reliable) between base and mobile station with antenna on the car roof - **About 20km** over the sea between base and handheld - Signal levels - - Successful decodes down to **-19.75dB** below the noise floor when using compressed APRS coordinates (smaller packets, about 50 bytes, 32 bytes without PATH, speed, altitude), see APRSDroid discussions on compressed corrdinates support and custom branches + - Successful decodes down to **-19.75dB** below the noise floor when using compressed APRS coordinates (smaller packets, about 50 bytes, **32 bytes without PATH, speed, altitude**), see APRSDroid discussions on compressed corrdinates support and custom branches - https://github.com/ge0rg/aprsdroid/pull/159 - https://github.com/ge0rg/aprsdroid/issues/170 - https://github.com/sh123/aprsdroid/tree/aprsdroid_compressed From fdaaf14f408dcb43dca0ea323f20380a814c81b8 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 19:43:41 +0300 Subject: [PATCH 20/24] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5ee024a..c84c44d 100644 --- a/README.md +++ b/README.md @@ -65,6 +65,7 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - Antennas - Client: rubber duck, halo, mobile antenna on a car roof - Server: 7 element UHF yagi indoors, vertical on the roof + - With such low power it is very important to have antenna SWR close to 1, many rubber duck antennas are claimed to be 433MHz, but they do not resonante at that frequency at all or resonate only when attached to its native large handheld transceiver, which has enough metal inside to behave like a counterpoise, these antennas have SWR 2 or higher. Check your antenna on antenna analyzer before using, add counterpoise if needed or better to use dipole or halo antenna for that matter - Range (20 KHz channel width and 9 spreading factor, also got similar results with 125 kHz and 12 SF) - **About 7 km** when server is 30m above the ground and client is 2m above the ground with rubber duck antenna or inside a car - **About 13 km** when server is 30m above the ground and client is at some higher point ~40m above the ground with rubber duck antenna From 74af4dbb16eb56b6c2744e03611ed119d97dbc9d Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 19:45:55 +0300 Subject: [PATCH 21/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c84c44d..0faa28b 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - Antennas - Client: rubber duck, halo, mobile antenna on a car roof - Server: 7 element UHF yagi indoors, vertical on the roof - - With such low power it is very important to have antenna SWR close to 1, many rubber duck antennas are claimed to be 433MHz, but they do not resonante at that frequency at all or resonate only when attached to its native large handheld transceiver, which has enough metal inside to behave like a counterpoise, these antennas have SWR 2 or higher. Check your antenna on antenna analyzer before using, add counterpoise if needed or better to use dipole or halo antenna for that matter + - With such low power it is very important to have antenna SWR close to 1, many rubber duck antennas are claimed to be 433MHz, but they do not resonate at that frequency at all or resonate only when attached to its native large handheld transceiver, which has enough metal inside to behave like a counterpoise, these antennas have SWR 2 or higher. Check your antenna on antenna analyzer before using, add counterpoise if needed or better to use dipole or halo home made antenna for that matter - Range (20 KHz channel width and 9 spreading factor, also got similar results with 125 kHz and 12 SF) - **About 7 km** when server is 30m above the ground and client is 2m above the ground with rubber duck antenna or inside a car - **About 13 km** when server is 30m above the ground and client is at some higher point ~40m above the ground with rubber duck antenna From 01b113d0b3581fb28a653450def01c7f911d2934 Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 19:53:55 +0300 Subject: [PATCH 22/24] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0faa28b..77b0ac5 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,11 @@ Can be used in two modes: - **LoRa APRS KISS client over bluetooth** - you need to use **APRSDroid** application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages - it is also possible to use **other KISS APRS clients** over Bluetooth serial, just use `rfcomm` on Linux to setup serial over Bluetooth and put up AX25 interface with `kissattach`, then use any existing Linux APRS clients, such as `Xastir` or even run `TCPIP` over AX25 -- **LoRa APRS iGate RX/TX server + Digipeater** - - **RF to APRS-IS gating**, it will connect to WiFI and will forward received APRS positions from RF LoRa into the APRS-IS network, it also reports client signal level, by appending it into the APRS comment, so you can see your signal reports in different locations (could be enabled or disabled from config) +- **LoRa APRS iGate RX/TX server over WiFi + Digipeater** + - **RF to APRS-IS gating**, it will connect to your WiFI and will forward received APRS positions from RF LoRa into the APRS-IS network, it also reports client signal level, by appending it into the APRS comment, so you can see your signal reports in different locations (could be enabled or disabled from config). This way, it is also possible to setup portable iGate by connecting to your mobile phone's hotspot and provide power from the phone USB port by using OTA cable - **APRS-IS to RF gating**, it is possible to enable it together with the filter in the config, so APRS-IS data will be forwarded to RF - **RF digirepating** for basic `WIDEn-n` paths, `TRACE` and others are not supported yet - - **beaconing**, own station periodic beacon announcement to APRS-IS and RF + - **Beaconing**, own station periodic beacon announcement to APRS-IS and RF # Compatible Boards All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 board is compatible then it should work, but there might be need to redefine pinouts to LoRa module if it differs (see further description in Software Setup section), currently pinouts are connected from LoRa to ESP32-WROOM as (SS/RST/DIO0 could be redefined in loraprs_service.h): From 5909083c93def6360d3af4ded7baa2a775172e5e Mon Sep 17 00:00:00 2001 From: sh123 Date: Mon, 15 Jun 2020 23:06:56 +0300 Subject: [PATCH 23/24] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 77b0ac5..b46425a 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 boa - note, that there a is **significant frequency drift** on temperature changes for different modules - you need to use **external TCXO** if you are planning to use modules for narrow bandwidths less than 125 kHz - or calibrate clients based on server frequency drift report by changing `cfg.LoraFreq`, for example, let client and server run for an 30-60 minutes and if server reports err: -1500, then set client frequency to about 1000 kHz less, e.g. instead of 433.775 set it to 433.774, this will give couple of additional dB - - alternatively automatic calibration could be done on server or client side by enabling automatic frequency correction by setting `cfg.EnableAutoFreqCorrection` to `true`, might be suitable for experiments where only one client is operating or if server broadcast messages, so clients can correct their frequency + - alternatively automatic calibration could be done on server or client side by enabling automatic frequency correction by setting `cfg.EnableAutoFreqCorrection` to `true`, might be suitable for experiments where only one client is operating or if server broadcast messages, so clients can correct their frequency. Use it either on client side to tune all clients to server frequency if TX is enabled on iGate side or to tune server to single client for test purposes - other useful options are - `cfg.EnableSignalReport` set to `true` to enable signal report, it will be added as a comment to APRS-IS submitted location - `cfg.EnablePersistentAprsConnection` set to `false` to avoid keeping connection open to APRS-IS From ebd2546074006e0f34824cdb4a391980b14efdb1 Mon Sep 17 00:00:00 2001 From: sh123 Date: Tue, 16 Jun 2020 12:22:08 +0300 Subject: [PATCH 24/24] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index b46425a..0a87eef 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # LoRa APRS ESP32 KISS APRSDroid bluetooth modem, LoRa APRS-IS RX/TX iGate with digipeater Amateur radio ESP32 based LoRa APRSDroid KISS Bluetooth modem + LoRa APRS-IS RX/TX iGate server over WiFI + digipeater -![alt text](images/pinouts.png) - Can be used in two modes: - **LoRa APRS KISS client over bluetooth** - you need to use **APRSDroid** application (https://aprsdroid.org), connect to the modem using bluetooth, data will be re-transmitted through the LoRa radio, this is similar to APRSDroid micromodem - https://unsigned.io/micromodem/, received data will be sent back to the APRSDroid using bluetooth. By having two clients you can not only send your position, but also send and receive APRS messages @@ -15,6 +13,7 @@ Can be used in two modes: # Compatible Boards All work was done on ESP32-WROOM with custom made LoRa shield, if your ESP32 board is compatible then it should work, but there might be need to redefine pinouts to LoRa module if it differs (see further description in Software Setup section), currently pinouts are connected from LoRa to ESP32-WROOM as (SS/RST/DIO0 could be redefined in loraprs_service.h): +![alt text](images/pinouts.png) - SS: GPIO_5 - RST: GPIO_26 - DIO0: GPIO_14