Introduction: GOING BEYOND THE HORIZON WITH LoRa RF1276

I’ve found RF1276 Transceiver to deliver

the most outstanding performance in terms of signal range and quality. Upon my first flight I was able to reach 56km distance at -70dB signal level with small quarter wavelength antennas.

Step 1: BOM (Bill of Materials)

1.

ARDUINO PRO Mini

2. Ublox NEO-6M GPS module

3. BMP-085 barometric pressure sensor

4. SD Card adapter

5. 3Watt LED

6. 2x 18650 2600mAh batteries

7. DC-DC buck voltage converter

8. 2x RF1276 Tranceivers from appconwireless.com

Step 2: HARDWARE CONNECTIVITY

- BMP085 sensor is connected to A4 (SDA) and A5 (SCL)

- SD Card is connected to 10(SS), 11(MISO), 12(MOSI), 13(SCK)

- GPS is connected to 6(TX), 7(RX) – software serial

- RF1276 is connected to TX->RX, RX->TX – hardware serial

- Battery voltage monitor is connected to A0 via voltage divider

- LED ON/OFF control is done through N-FET (IRLZ44N), which is connected to pin 9 via pull-down resistor.

- Pin 8 is connected to RST (for a remote microcontroller reset)

- Battery is connected to DC/DC buck converted, which is regulated for 5V output

Step 3: ANTENNAS

I’ve found that dipole antenna on the

Transmitting end and wire whip antenna on the receiving end gives the best results

Step 4: RADIO Configuration

To go for the maximum range, one has to

understand the basic physics behind the radio communication.

- Increasing the bandwidth reduces the sensitivity (and vice-versa)

- Increasing antenna gain reduces the transmit power required

- Line-of-sight is a must

Based on above rules, I’ve chosen the following parameters for RF tool:

- SF: 2048

- BW: 125kHz

- TX Power: 7 (max.)

- UART speed: 9600bps

Above settings will only give 293bps, but will enable -135dB receive sensitivity. That means that you can transmit small packets (i.e. latitude or longitude) approx. every 2 seconds. If you also want to remotely control your electronics, you must leave i.e. 1 second for listening to the ground commands. So the data can be transmitted every 3 seconds.

Step 5: MODULE CONFIGURATION

The firmware requires both the GPS module

and RF1276 to be configured for 9600bps UART. GPS configuration can be made with u-blox U-Center software.

View->Messages->UBX->CFG->PRT->Baudrate->9600. Then,

Receiver->Action->Save configuration.

RF1276 configuration can be made with RF1276 Tool.

Step 6: FIRMWARE

Firmware will:

- Monitor atmospheric pressure and temperature

- Monitor battery voltage

- Capture variety of GPS values

- Log all data to SD card

- Transmit all data

Firmware enables the following remote control options:

- reset the module

- turn the led ON/OFF

- update internal counter after receiving ping packet from ground

Both SD card reader and BMP pressure sensor is programmed for fault-tolerant operation. Failure of one of those will not crash the module.

Step 7: FLIGHT SETUP

I’ve hooked up the payload to the balloon.

The payload weight is slightly above 300g. The balloon is heavier – approx. 1kg. I’ve filled it with 2 cubic meters of helium thus giving 700g of free-lift. I’ve inflated it to burst at 1.5km (85% of volume).

Step 8: RESULTS

The balloon has reached 4.6km altitude and

distance of 56km. It was traveling at 40kmph over a huge city and has landed somewhere in a swamp. It has only burst at 4.6 km, so its tensile strength was 3 times better than I’ve initially estimated.

I did not recover the payload since I couldn’t drive and focus on monitoring the real-time telemetry alone.

I’ve captured the last packets when the balloon was at approx. 1km altitude. This is when it went beyond the horizon.

Step 9: FLIGHT DATA

I’ve collected many more parameters, but

those extra-ones are GPS mainly. Reconstructed flight path is provided in the image above, and here’s the internal sensor data.

Step 10: CONCLUSIONS

RF1276 is definitely an outstanding

transceiver. I haven’t tested any better than this-one. Flying above huge city (high interference condition) in heavy winds with unstable antenna position it was able to deliver -70dB signal level at 56km distance being 1km above ground, thus leaving -65dB link budget! (its configured sensitivity limit was -135dB). If only it didn’t went behind the horizon (or if I was higher – i.e. on some hill or telco tower) I could have captured it’s landing location. Or, alternatively, if balloon didn’t burst, I could have reached twice or trice the distance!

Step 11:

Step 12:

Comments

author
rsabedra made it! (author)2016-07-04

Could you please share the Arduino code?

author
David_Dragino made it! (author)2016-06-19

Hi all,there is a good board for the LoRa project,you can view http://wiki.dragino.com/index.php?title=Lora/GPS_HAT to get more info.

author
emieldg made it! (author)2016-02-03

Hello, I am working with 2 LoRa1278's and 2 arduino uno's. I would like to make them communicate with eachother but I still didn't managed to do it. Does somebody has experience with this type of transceiver? Thanks in advance!

author
footswitch made it! (author)2015-10-27

Hi there! Congratulations on your experiment and thanks for sharing.

One question, though, if you may: How is the Arduino Pro Mini powered? The UART on the RF1276 is 3.3V, so you'd either need a DC-DC buck for the 3.3V Arduino, or a level shifter for the 5V Arduino.

If you could clarify, this would be much appreciated.

Thanks

author
Helfy made it! (author)2015-09-02

Hello,
I received your code from Appcon Wireless and I have ran into a issue running the code.

Here is the error message:

In file included from C:\Users\WSLLC\Documents\Arduino\libraries\SdFat/utility/bufstream.h:27:0,
from C:\Users\WSLLC\Documents\Arduino\libraries\SdFat/utility/ArduinoStream.h:29,
from C:\Users\WSLLC\Documents\Arduino\libraries\SdFat/utility/FatLib.h:23,
from C:\Users\WSLLC\Documents\Arduino\libraries\SdFat/SdFat.h:27,
from sky_module_firmware.ino:11:
C:\Users\WSLLC\Documents\Arduino\libraries\SdFat/utility/iostream.h: In function 'ostream& endl(ostream&)':
C:\Users\WSLLC\Documents\Arduino\libraries\SdFat/utility/iostream.h:40:33: error: 'ostream& endl(ostream&)' redeclared as different kind of symbol
inline ostream& endl(ostream& os) {
^
In file included from sky_module_firmware.ino:8:0:
C:\Users\WSLLC\Documents\Arduino\libraries\Streaming/Streaming.h:100:21: error: previous declaration of '_EndLineCode endl'
enum _EndLineCode { endl };
^
In file included from sky_module_firmware.ino:15:0:
DEVICES.h: In function 'void debug(char, char, uint8_t)':
DEVICES.h:62: error: 'endnl' was not declared in this scope
CONS_UART << strb << endnl;
^
DEVICES.h: In function 'void info(char*, int, int)':
DEVICES.h:78: error: 'endnl' was not declared in this scope
CONS_UART << strb << endnl;
^
DEVICES.h: In function 'void BMP_Init()':
DEVICES.h:158: error: 'class BMP085' has no member named 'begin'
BMP.begin();
^
DEVICES.h: In function 'void BMP_Read()':
DEVICES.h:169: error: 'class BMP085' has no member named 'readTemperature'
SYS.BAR_t = BMP.readTemperature();
^
DEVICES.h:170: error: 'class BMP085' has no member named 'readPressure'
SYS.BAR_p = BMP.readPressure();
^
DEVICES.h:171: error: 'class BMP085' has no member named 'readAltitude'
SYS.BAR_m = BMP.readAltitude(SYS.BAR_p);
^
In file included from sky_module_firmware.ino:17:0:
OUT.h: In function 'void txData()':
OUT.h:79: error: 'endnl' was not declared in this scope
CONS_UART << dataBuff_b << endnl;
^
'endnl' was not declared in this scope

I'm not sure what I'm dong wrong and was hoping you might be able to help.

Thanks
Neil

author
Jasonw3 made it! (author)2015-07-29

868MHz is available in Russia.

author
Jasonw3 made it! (author)2015-07-29

Where are you from? In Europe, 868MHz band is free of license. In USA, 915MHz is a good choose. There is available free-license frequency existed in your country in the sub-G hz band.

author
Jasonw3 made it! (author)2015-07-29

Yes, It is legal. We use for collect the data of air. It is HAB.

author
tytower made it! (author)2015-07-29

Its very well established in radio that the antennas should be in the same orientation for optimum results so a dipole on both ends or a vertical on both ends but not a mix . You were not testing properly if you think otherwise.

author
manuka made it! (author)2015-07-27

Bravo, although perhaps mention radio horizon from altitude
will of course be still the limiting range factor. LoRa™ performance
however is indeed near magical, & my diverse trials with Dorji &
HopeRF 433 MHz modules confirm ranges an order of magnitude (x10) greaterthan similar UHF gear under the same conditions. My own instructable may assist folks after LoRa™ insights - see => https://www.instructables.com/id/Introducing-LoRa-/