esp32_loraprs/README.md

46 wiersze
3.8 KiB
Markdown
Czysty Zwykły widok Historia

2019-04-26 11:19:24 +00:00
# Experimental LoRa APRS ESP32 APRSDroid bluetooth modem and LoRa APRS-IS iGate
2019-05-09 16:14:54 +00:00
Tiny experimental amateur radio ESP32 based LoRa APRSDroid KISS Bluetooth modem and LoRa APRS-IS iGate server.
2019-04-25 06:46:12 +00:00
2019-04-26 13:18:34 +00:00
![alt text](https://www.smart-prototyping.com/image/data/5_community/WIFI/101770%20Ra-01/2.png)
2019-04-25 06:46:12 +00:00
Can be used in two modes:
2019-04-26 13:32:58 +00:00
- **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
2019-04-26 13:05:34 +00:00
- **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
2019-04-25 06:46:12 +00:00
2019-04-30 18:15:57 +00:00
# Software Dependencies (install via libraries)
- Arduino ESP32 library: https://github.com/espressif/arduino-esp32
- LoRa arduino library: https://github.com/sandeepmistry/arduino-LoRa
- Arduino Timer library: https://github.com/contrem/arduino-timer
2019-04-25 06:46:12 +00:00
# Software Setup
2019-05-09 16:13:08 +00:00
- when setting up APRSDroid, use **"TNC (KISS)"** connection protocol in Connection Preferences -> Connection Protocol
2019-04-25 06:46:12 +00:00
- go to esp32_loraprs.ino and make next changes based on your requirements
2019-04-26 13:07:25 +00:00
- comment out / remove **LORAPRS_CLIENT** define if you are planning to run server mode for APRS-IS iGate
- for server mode fill **LORAPRS_WIFI_SSID** and **LORAPRS_WIFI_KEY** with your WiFI AP data
2019-04-26 13:08:03 +00:00
- for server mode fill **LORAPRS_LOGIN** and **LORAPRS_PASS** with APRS-IS login callsign and pass
2019-05-09 16:15:34 +00:00
- change **LORAPRS_FREQ** if you are planning to use different frequency or if planning to calibrate clients, currently it is set to **432.500MHz**, which is 70cm band APRS frequency in IARU-1 region, see http://info.aprs.net/index.php?title=Frequencies
2019-04-26 11:21:44 +00:00
- if you are planning to use different esp32 pinouts then modify loraprs.h
2019-04-26 13:07:25 +00:00
- lora module SS, **CfgPinSs**, pin 5
- lora module RST, **CfgPinRst**, pin 26
- lora module DIO0, **CfgPinDio0**, pin 14
2019-05-13 16:14:07 +00:00
- 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 **5 seconds** to decode with as lower level as possible, use https://github.com/tanupoo/lorawan_toa to make calculations
2019-04-26 13:07:25 +00:00
- lora bandwidth **CfgBw**, 20 kHz (to fit into standard 25 kHz channel)
- lora spread factor **CfgSpread**, 11 (should decode down to -17.5dB)
- lora coding rate **CfgCodingRate**, 7
- lora output power **CfgPower**, 20 (max 20 dBm ~ 100mW, change to lower value if needed)
2019-04-26 11:20:07 +00:00
- use 80 MHz ESP32 frequency in Arduino, it will prolong battery life when operating portable, higher CPU speed is not required, there are no CPU intensive operations
2019-11-08 12:53:59 +00:00
- uses LoRa **built-in checksum** calculation to drop broken packets
- note, that there a is **significant frequency drift** on temperature changes for different modules, you need to use **external TXCO** 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 **LORAPRS_FREQ**, which is OK for experiments
2019-04-26 10:59:39 +00:00
# Test Results
2019-04-26 11:26:12 +00:00
- Antennas
2019-05-05 10:57:04 +00:00
- Client - rubber duck antenna or mobile antenna on a car roof
2019-05-01 18:42:57 +00:00
- Server - UHF yagi indoors
2019-05-10 08:07:05 +00:00
- Range (20 KHz channel width and 11 spreading factor)
2019-05-05 11:11:46 +00:00
- **About 4 km** when server is 30m above the ground and client is 2m above the ground with rubber duck antenna
- **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
- **About 17km** maximum (non-reliable) between base and mobile station with antenna on the car roof
2019-05-01 18:42:57 +00:00
- Signal levels
2019-05-05 10:55:50 +00:00
- Successful decodes down to **-17.5dB** below the noise floor when using compressed APRS coordinates
2019-04-26 10:59:39 +00:00