FrSky X12S Horus spotted in the wild

Last weekend I had a brief opportunity to take a look at new radio from FrSky: X12S Horus. One thing is sure, this thing is quite impressive. For me it is slightly too big and too expensive. Plain old Taranis suits all my needs. Owner seems too be quite happy with his X12S Horus, and here are his main thought about it:

  • Big and heavy with a stiff frame. As long as you do not have to carry it attached to your neck for a longer period of time, it is completely fine
  • LCD screen is nicely visible in daylight
  • Nice Hall effect gimbals!
  • Rubber bumpers allows to put Horus on a car’s roof or hood without the risk of scratching it
  • Shipped with FrSky software, that is not as good as OpenTx
  • External antenna connector with a VSWR

FrSky X12S Horus

Read More

DIY wireless telemetry link for UAV

Telemetry link between UAV (drone, airplane, boat) and laptop/mobile/ground station device can be very useful. Not only to get current drone position, altitude or battery level, but also, when wireless link provides such a possibility, to update drone parameters in-flight. Some radio links, like OpenLRS provides such a possibility out of the box. They include transparent serial bridge and almost any kind of device can use it to communicate with flight controller. Unfortunately, most RC radio systems lacks this functionality and additional telemetry links have to be used. Like SiK Telemetry Radio or 3DR commercial version of it.

One can buy or one can build something by his own. Some time ago I’ve chosen the second way and decided to build my own wireless serial link to archive 2 way communication between drone and ground station software. My objectives were:

  • 433MHz since it is legal in my country
  • has to allow to use my phone with EZ-GUI, since I do not like to carry my notebook to an airfield
  • as cheap as possible

To satisfy those objectives I’ve decided as follows:

Continue reading “DIY wireless telemetry link for UAV” »

Read More

Generate PPM signal with Arduino

In the beginning of this year I’ve written a short tutorial how to read PWM signals from RC radio with Arduino. While it is can be useful when building own RC equipment, it does not help much when one has to deal with PPM (CPPM) signal. Let’s be honest, PPM is much more useful than PWM: all RC channels are sent over single wire. On one side, it simplifies electrical design. On the other, it makes software part more “complicated”, since there is a need to encode multiple PWM channels into single PPM line in transmitter, and then decode PPM signal into multiple PWMs in receiver. And there are very little “ready and working out of the box” solutions in Arduino world.

In this short article I will show how to generate PPM (CPPM) signal using solution prepared few years ago by David Hasko. Originally it was posted of Google Code. But Google Code is not closed and who knows for how long it still will be available. So, let’s not let the knowledge got lost.

Code is relatively simple, and almost all work is done inside ISR(TIMER1_COMPA_vect) that is executed in the background by timer . Everything user has to do, is to put desired values to ppm array inside loop function. This code can generate both positive and negative signal. It can be easily ported to almost any project, as long as TIME1 is free to use.

Slightly more advanced example is available on GitHub.

Read More

HC-12 433MHz RF serial module range test

As I mentioned in my first post about HC-12 433MHz radio modules, I’ve put my interest in them for telemetry purposes. While S.Port telemetry I’m using in FrSky Taranis radio might have higher range than HC-12, it is closed environment. Since $10 for a pair of HC-12 is not much, I’ve decided for more open DIY solution.

Setup on a quadcopter consist of one HC-12 configured for FU3 mode and baud rate 9600bps connected to SPRacingF3 UART3 port and “air cooled” (shortened with a coil) 433MHz whip antenna. Well, to be precise, it’s 450MHz since I changed working frequency. Antenna is not tuned or scientifically computed. Just 433MHz version shortened a little using proportions. Antenna is mounted on GPS mast. In next version I will probably replace whip antenna with Vee antenna.

HC-12 Rf 433MHz module in quadcopter

"Air cooled" antenna on quadcopter

Continue reading “HC-12 433MHz RF serial module range test” »

Read More

HC-12 433MHz wireless serial communication module configuration


HC-12 are cheap 433MHz wireless serial port communication modules with a range up to 1800m in open space. Each costs about $5 when bought from China, and 2 of them can create wireless UART link that can be used, for example, to transfer telemetry data from UAV. Or drive IoT device. Or connect sensors. Or whatever else one can think of.

HC-12 433MHz wireless serial communication module

It is based on SI4463 RF chip, has build in microcontroller, can be configured using AT commands and allows to use external antenna. Working frequency is divided into 100 channels starting from 433,4MHz up to 473,0MHz with 400kHz channel separation. Maximum output power is 100mW (20dBm) and receiver sensitivity differs from -117dBm to -100dBm, depending on transmission speed. It accepts 3,2V-5,5V power supply and can be used with 3.3V and 5V UART voltage devices (3.3V safe). Continue reading “HC-12 433MHz wireless serial communication module configuration” »

Read More

Improving cheap radio range

Radio range of my first drone, UDI 829A was pretty pathetic. OK, it was (still is, I only have to finally replace motors) pretty indestructible, quite stable and reasonably priced. But effective radio range as quite short. More less 50 meters. Above that limit strange things started to happen. The reason was pretty simple. Just take a look at this picture.

Antenna too short

Can you see the transmitter antenna? Yeap, that it this short cable. Not only it does not go into “antenna cover” of the receiver, it is also horizontally polarized and when receiver is held in a normal way, pointing into a drone, it emits almost no signal in this direction. This and an additional single whip antenna on the receiver makes it virtually impossible to have a good radio range.

So, I’ve decided to fix that and install external antenna that would work with vertical linear polarization and actually emits some power in drone’s direction.
This tutorial shows how to do it for UDI 829A, but will work almost all cheap drones. Their transmitters are very similar inside and as long as there is antenna pad or connector, it can be done. Continue reading “Improving cheap radio range” »

Read More

10 channels for FlySky FS-i6 radios

This news might be not super fresh, but somehow it missed my attention. There is a good news for all owners of FlySky FS-i6 radios: there is an unofficial firmware that turns this cheap 6 channel radio into 10 channel one. Of course, there is a small catch, or even a few of them:

  • All 10 channels are available as PWM only using FS-ia10 receiver
  • PPM on FS-ia6B is still only 6 channels wide. To have all 10, iBus connection to flight controller or iBus to PPM converter required
  • PPM output still only on FA-ia6B and FS-ia10 receivers. No support for FS-ia6 RX module

FlySky FS-i6 (Turnigy TGY-i6) 6 channel 2.4GHz radio system with FPV mount

New firmware, as well as few additional mods, is available on GitHub. I did not checked that, since I no longer own FS-i6 radio, but I’ve read good oppinions: it is stable and functional. So, who will give it a try?

Read More

VirtualWire support for Raspberry Pi

FS1000A and XY-MK-5V 433MHz RF modules are very often first choice for cheap and dirty Do It Yourself wireless communication. Pair of those , allowing one way radio communication, const less than 3 dollars or euros. So they are really cheap. Limited range and transmission speed limits their real life usage, but simple assembly and extremely easy programming are additional advantage over more complex solutions. Specially in Arduino world, with VirtualWire library. I will not write about it right now, there is enough on the internet already.

FS1000A and XY-MK-5V 433MHz RF modules for Raspberry Pi

Continue reading “VirtualWire support for Raspberry Pi” »

Read More

Is PPM Analog or Digital?

Since I am a huge fan of answering questions when they are asked, here is my answer to “Is PPM Analog or Digita?

The easiest way to determine if electrical signal (and PPM in case of RC usage is electrical) is analog or digital is to check how many voltage levels are used. If signal consists of 2 levels, like 5V and 0V, or 3.3V and 0V it is digital. Two states, HIGH and LOW, 1 and 0, digital.

Is PWM Digital or Analog signal

If, however, number of voltages/levels is bigger, it still does not mean that we are dealing with analog signal. Analog signal should be “smooth”. It’s hard to call signal with 3 levels a smooth one. Computers do not work with analog signals. They do not know how to do it. Signals thay can process are always quantified, represented by countable number of bits. Of course, with enough resultion they will appear analog. I’m pretty sure somewhere in The Internet someone is arguing abouth that the very moment you are reading this sentence. I will not participate. If you want to know more about analog and digital, read this article. Bottom line is: with 2 levels, signal is digital.

So, PPM is digital or analog? In case or RC, PPM is a digital signal (or to be more precise digital modulation) that carries/encodes multiple values (channels). Each value (channel) can vary between around 1000 to around 2000. Value of each channel is encoded as number of microseconds between rising and falling edge in specific timeframe associated with this channel number.

Photo: Wikimedia

Read More

PPM output on FrSky X4R and X4R-SB receivers

FrSky sells 2 small Taranis compatible receivers: X4R and X4RSB. By default, they offer only PWM signal. 4 channels on X4R and 3 channels plus S.Bus (16 channels over S.Bus) on X4RSB. And that is problematic. Many flight controllers does not support S.Bus very well (no inverters) or just does not offer enough UART ports. When speaking of small multirotors, PPM signal is often the best choice. That made X4R almost useless. For X4RSB additional S.Bus-PPM conversion cable had to be used.

Luckily, this has changed, since FrSky started offering custom X4R/X4RSB firmware that allows 8 channel PPM signal on receivers port 1. The only thing you have to do is to flash you receiver. And those are the steps to do it:

  1. Download CPPM¬†firmware from this site. Remember that you need proper EU/non-EU version. It all depends if your Taranis and it’s built in XJT module has EU or non-EU firmware. How to determine EU/non-EU Taranis? If you are living outside EU you probably have non-EU firmware. If you are living in EU but bought from non-EU country (China probably) you have non-EU. Also, if in menu you can select D8 or LR12 internal radio mode, you have non-EU firmware. EU firmware allows only D16 mode,
  2. Follow those steps to flash X4R/X4RSB using Taranis built in port,
  3. Put a jumper on signal pins 2 and 3,
  4. Bind receiver with Taranis,
  5. Remove jumper.

From now on, pin 1 outputs PPM channels 1-8, pin 2 outputs PWM CH9, pin 3 outputs PWM CH 10, and pin 4 outputs either PWM CH11 in X4R or S.Bus on X4RSB. If you want to go back to non-PPM mode, bind receiver again, without jumper on pins 2 and 3.

Read More