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-05-09 16:18:43 +00:00
- uses LoRa built-in checksum calculation to drop broken packets
2019-11-08 12:52:01 +00:00
- 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