-
Hello everyone, I am currently working in a project where sensores and motors were connected trough a RS485 communication. The slaves were far from the Master, and the aplicattion were agriculture related, so , LoRa tecnology was a card on the table. The module used is the RFM995 with a ESP32. The first step was to check the maximum range of the tecnlogy. So, once the connection was set, a distance of 300m with the default settings wich is good good but nothing comperate with some other test were people could achieve 5km. In my situation it was a non obstacle scenario, what makes me think that I should achieve more distance. Trying with the following settings 450m were achieve but with a poor RSSI indicator. //-----MODULATION PARAMETERS-----> Does anyone know what i could do to reach at least 1 km with an RSSI of -70? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
It depends on so many variables. But here are a few indications:
I wrote an app that writes setup code for this library. Here's the end product, after some tweaking: // BW = 6: 62.5 kHz, CR = 1: 4/5, HM = 0
uint8_t reg1 = 0x62;
// SF = 12: 12, CRC = 0
uint8_t reg2 = 0xC0;
// LDRO = 1, AGCAutoOn = 1
uint8_t reg3 = 0x0C;
// PaSelect = 1, MaxPower = 7: 15 dBm, OutputPower = 15: 17 dBm
uint8_t regpaconfig = 0xFF;
#define REG_OCP 0x0B
#define REG_PA_CONFIG 0x09
#define REG_LNA 0x0c
#define REG_OP_MODE 0x01
#define REG_MODEM_CONFIG_1 0x1d
#define REG_MODEM_CONFIG_2 0x1e
#define REG_MODEM_CONFIG_3 0x26
#define REG_PA_DAC 0x4D
#define PA_DAC_HIGH 0x87
#define MODE_LONG_RANGE_MODE 0x80
#define MODE_SLEEP 0x00
#define MODE_STDBY 0x01
#define MODE_TX 0x03
#define MODE_RX_CONTINUOUS 0x05
#define MODE_RX_SINGLE 0x06
LoRa.writeRegister(REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_SLEEP);
delay(10);
LoRa.writeRegister(REG_PA_CONFIG, regpaconfig);
LoRa.writeRegister(REG_MODEM_CONFIG_1, reg1);
LoRa.writeRegister(REG_MODEM_CONFIG_2, reg2);
LoRa.writeRegister(REG_MODEM_CONFIG_3, reg3);
delay(10);
LoRa.writeRegister(REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_STDBY); However it requires a small modification of the library. The two lines there should be moved out of uint8_t readRegister(uint8_t address);
void writeRegister(uint8_t address, uint8_t value); Move them to line94 or so, and this will work.
|
Beta Was this translation helpful? Give feedback.
It depends on so many variables. But here are a few indications:
I wrote an app that writes setup code for this library. Here's the end product, after some tweaking: