Testing 868MHz LoRa range, part 3: round trip

After determining that range of 868MHz LoRa wireless modules E45-TTL-100 have, at least, quite impressive range (5,7km and I was out of line-of-sight to test further) I’ve decided to test something else.

In the beginning I was planning to use those radio modules for telemetry only, but then another thought crossed my mind: why not to build DIY TBS Crossfire for the poor? After all, TBS Crossfire also uses 868MHz LoRa (SX1272 vs SX1276), so it should be possible to build DIY radio link for medium range (up to 5km) for RC planes, right?

First of all, I will need to know how fast data can be transferred and how much delay can I expect in real life. So I’ve modified Arduino code and E45-TTL-100 configuration:

  • UART speed bumped from 9600bps to 57600bps
  • air speed bumped from 2400bps to 19200bps
  • output power lowered from 100mW to 50mW (17dBm)
  • transmitter sends 5 bytes of data (current microseconds and prefix)
  • relay receives packet and resends it to transmitter
  • current received number is deducted from current microseconds and round trip time is showed on OLED display

LoRa E45-TTL-100 round trip test

Results:

  • Round trip time is 82ms on average and it does not changes with distance
  • at lower output power (50mW vs 100mW) reception at 2.8km is worse. 100% of packets are received only then antenna alignment is not worse than 45 degrees
  • with slightly bigger payload size (up to 7 bytes) it should be possible to archive at least 20Hz update rate

Read More

Quick note on SEMTECH SX1276 100mW output mode

Few facts about SEMTECH SX1276 LoRa modem and 20dBm (100mW) mode:

  1. +20dBm (100mW) is possible only on PA_BOOST pin
  2. Pins RFO_LF and RFO_HF allows only up to +17dBm (50mW)
  3. Maximum allowed duty cycle while using +20dBm mode is 1%
  4. Maximum allowed VSWR while using +20dBm mode is 3:1

The biggest problem with +20dBm on PA_BOOST is allowed 1% duty cycle. On the other hand, +17dBm mode (50mW) does not have such a limitation and maximum range should be only 1.42 times shorter than in 100mW mode.

Read More

Hands on: Tiny Frsky 8CH Receiver from Banggood

I have a nasty habit of buying things and then forgetting about them. Something like that happened to Tiny Frsky 8CH Receiver (Wolfbox F802 software compatible) from Banggood I’ve purchased last year. For some time I used it in JJPro P175 quadcopter, but then it landed in a box and I forgot about until last week.

Tiny FrSky 8CH DIY Receiver Pinout

So, let’s do overdue “hands on” on Tiny Frsky 8CH Receiver from Banggood… Continue reading “Hands on: Tiny Frsky 8CH Receiver from Banggood” »

Read More

Testing 868MHz LoRa range, part 2: open space

It was a good weekend. At least for me and CDEbyte E45-TTL-100 868MHz LoRa serial wireless modules based on SX1276. Why? Since weather was nice and looks like those modules are way better than datasheet specifies. Specs states: 3km in open space. And I’ve proven almost twice that much range! Last Friday I’ve placed one E45-TTL-100 with stock antenna on my balcony, took second with me and went for a car ride.

E45-TTL-100 LoRa 868MHz range test results

Area around my home is full of small hills and copses, so most of the time something was blocking the line between transmitter and receiver. But every time I was high enough, I was getting clear signal without any packets lost. At the furthest point of my trip I was 5.7km from the transmitter, inside a car and a copse was between me and TX module. That means no line-of-sight and as a result I’m pretty, pretty sure E45-TTL-100 should be able to work on much higher range that that. I only have to find a good place to test it.

Read More

Testing 868MHz LoRa range, part 1: urban area

With a (more less) free evening I decided to finally start testing range of 868MHz LoRa E45-TTL-100 radio modules I described only yesterday. Instead of building new testing rig, I only upgraded testing setup I used to test range of FS1000A and XY-MK-5V 433MHz radio modules. Few hours later I came up with this:

LoRa range testing equipment

  • E45-TTL-100 at 9600bps, transparent serial mode
  • Stock (crappy) antannas
  • Logic driven by Arduino Pro Mini
  • Transmitter send 1 byte counter
  • Receiver counts packets and check if all subsequent packets arrived and then displays results on OLED screen
  • Powered from 2S LiPo batteries

I’ve left transmitter on a desk and went for a walk. Even before leaving the building radio signal had to cross around 1 meter of bricks. Then travel through another building and only then go into the direction when I walked.

LoRa range in urban area with E45-TTL-100

I must say: I was impressed. I still am. At 511 meters transmission was clear only when I was not blocking it with my body. Or standing near to metal fence. So I can safely assume: 500m is maximum range in densly populated urban area. On stock antennas and 100mW output power. Next week I will try stronger, dipole antennas.

Read More

Hands on: E45-TTL-100 868MHz LoRa wireless modules

My quest for ultimate (?) DIY telemetry system for UAVs continues. Last year I was playing with HC-12 433MHz wireless modules with pretty decent results. After all, more than 1km of range for a few bucks is more than acceptable. Still, HC-12 has at least few problems:

  • 433MHz band is very often polluted and used by other Rc systems/subsystems (LRS)
  • 433MHz requires pretty big antennas
  • No frequency hopping
  • No easy way to build network of more than two HC-12
  • 1-1.5km of range is nice, but one might want more

Chengdu Ebyte E45-TTL-100 868MHz LoRa serial wireless module

Continue reading “Hands on: E45-TTL-100 868MHz LoRa wireless modules” »

Read More

FS1000A and XY-MK-5V second range test

Two months ago, when I published first FS1000A and XY-MK-5V range test, I was little surprised that I was able to reach 315 meters of stable connection. And I was almost sure, that they can do more.

Having some free time during my summer vacation, I’ve left transmitter on a towel and took a walk with a receiver. In a surroundings just like that:

FS1000A XY-MK-5V test on a beach

Results? 332 meters with a FS1000A powered with 7.4V and 1000bps over-the-air data speed.

FS1000A XY-MK-5V range test on a beach

For the second time, I’m sure I can pull more from this setup. This time, there were two problems:

  1. Transmitter was low on the ground
  2. Other people on the beach blocked line of sight much faster than I expected

So, expect third attempt…

Read More

How to connect APM Airspeed Sensor (Pitot Tube) to INAV

Recently released INAV 1.7.2 introduced new hardware support: analog airspeed sensors. I’ve written new but it is new only to INAV. Analog airpseed sensors aka APM Pitot Tubes aka Ardupilot Airspeed Meter and one the market for years. And they are cheap. By cheap, I mean below $30. And until recently they were usable only in APM world.

Pitot Tube for INAV Continue reading “How to connect APM Airspeed Sensor (Pitot Tube) to INAV” »

Read More

How to read PPM signal with Arduino?

More than a year a published a post called Generate PPM signal with Arduino. Today it's time for part two: How to read PPM signal with Arduino?. Strange thing: internet does not gives very useful information on this topic. Strange, right? Some links to pages that does it either very very wrong or in not simple way.

There is a one almost good solution. It's an example code by Hasi123. Short, efficient and actaully works almost out of the box. But it has 2 problems:

  1. It is not a library. You have to copy paste code
  2. It alters Timer1 and that means, that many other things stops to work: PMW output, Servo library or anything else that uses Timer1. Crap…

So, I've invested some of my time and, based on that code, I've created Arduino library called PPMReader. Advantages?

  1. It is a library (!)
  2. It does not alters any timers (!)

Example code, that reads PPM signal connected to Pin 2 of Arduino Uno or Pro Mini (and other using ATmega328) and prints decoded channels over serial port would look like this:

#include "PPMReader.h"

// PPMReader(pin, interrupt)
PPMReader ppmReader(2, 0);

void setup()
{
  Serial.begin(115200);
}

void loop()
{
  static int count;
  while (ppmReader.get(count) != 0) { //print out the servo values
      Serial.print(ppmReader.get(count));
      Serial.print("  ");
      count++;
  }
  count = 0;
  delay(500);
}

The only required configuration is a decission of a pin and interrupt. Not all pins have hardware interrupts, so on many boards this is limited to:

  • Arduino Uno, Pro Mini and other based on ATmega328: pin 2 / interrupt 0 or pin 3 / interrupt 1
  • Arduino Pro Micro and other based on ATmega32u4: pin 3 / interrupt 0, pin 2 / interrupt 1, pin 0 / interrupt 1, pin 1 / interrupt 3, pin 7 / interrupt 4

PPMReader Arduino library can be downloaded from GitHub.

Read More

GPS Racer: worklog #8 – sonar test platform

I honestly admit, that my 6″ quad (codename GPS Racer) was never very pretty. It was just ugly with that GPS tower on the front. Today it got even uglier: I’ve equipped it with HC-SR04 sonar connected via I2C bus (ATtiny85 to the rescue).

Why, you might ask, have I done something so useless? Answer is simple: to make it less useless. There are at least few problems with sonar and modern flight controllers. First of all, most new boards does not have connections for it. Second of all, it does not work reliably.

HC-SR04 test platform for INAV

It just don’t. It was no unreliable that INAV, for example, disabled it for some time completely. Right now it is back, but used only during landing on multirotors. No terrain following or anything like that. Continue reading “GPS Racer: worklog #8 – sonar test platform” »

Read More