Hands on: FrSky XSRF3O flight controller

Since I just started to add support for "old" FrSky XSRF3O flight controller to INAV (expect this in a release after 1.8) it might be a good idea to share few words about it.

FrSky XSRF3O flight controller in a box

First of all, it comes in a box. Why am I mentioning this? Because none of my flight controllers, and I own at least more than a dozen, came in box. C'mon, this is huge! I'm not joking, this is really a nice touch.

Continue reading “Hands on: FrSky XSRF3O flight controller” »

Read More

Crossbow LRS second range test

Looks like crappy range problem from previous post is fixed now. Today I managed to reach 2.8km range with better antennas. The ones I got from LoRa32u4 supplier were NOT 868MHz antennas for sure! 2.4GHz/5GHz probably, hard to tell. Traces on PCB are ~60mm long, so perhaps those are loaded 3/2 monopoles for 2.4GHz or 1.2GHz? No idea.

Anyhow, I soldered 78mm long copper wires to both TX and RX and did the same route as yesterday. At 500m link was solid. At 2.8km, link was solid when antenna polarizations were matched. With 40dB of link budget still to spare. Quite nice!

LoRa modulation was set to:

  • Bandwidth: 500kHz
  • Coding Rate: 2
  • Spreading Factor: 8
  • CRC: On
  • Receiver Sensitivity (computed): -131dBm
  • Transmit Power: 17dBm (50mW)
  • Total link budget: 148dB
  • Payload: 13 bytes per frame

Now it's time to optimize air protocol a little and shave a byte or two…

Read More

QuadMeUp Crossbow LRS: introduction

Few days ago I mentioned that I'm working on my own DIY long range radio system (LRS) that I named QuadMeUp Crossbow LRS. Today I will share some more details about it.

First of all, I'm not creating anything new or "amazing". There are plenty of "DIY" or OpenSource LRS systems. OpenLRS for example. Or QCZEK LRS that is made from almost nothing at all. And amazing commercial systems like TBS Crossfire.

Is there a place for something else? I think there is. For example, I was so pissed of by complexity of OpenLRS. So many options, so hard to understand. Or do you know how much micro RX for Crossfire costs? And that you do not need 2W of power to fly up to 5km? And most of pilots owning Crossfire never flied > 2km?

This is why, my idea for DIY LRS is:

Continue reading “QuadMeUp Crossbow LRS: introduction” »

Read More

Generate S.Bus with Arduino in a simple way

Did you noticed that lately I write about radios quite often? Well, I do and it's not a coincidence. Proper introduction for what I'm working on will happen in a next few days, but now I will only write that this will be a mid-range, cheap, DIY radio link for UAVs. By mid-range I mean up to 5km. So, it will be positioned somewhere between 2.4GHz systems and full sale LRSes like DragonLink or TBS Crossfire.

Back to business. I've discovered, that there is very little in The Internet how to generate S.Bus with Arduino. OK, there are few libraries for reading Futaba S.Bus protocol like mikeshub/FUTABA_SBUS or zendes/SBUS but the only library made simple I've found is bolderflight/SBUS. Too bad it works only with Teensy devices. So, after a few hours of hard work, reading code of OpenTX, MultiWii, INAV, reading RcGroups and final help of Konstantin Sharlaimov (Digital Entity of INAV), I give you:

Generate S.Bus packets with Arduino in a simple way

But first, few simple facts:

Continue reading “Generate S.Bus with Arduino in a simple way” »

Read More

E45-TTL-100 not transmitting when connected to Arduino

While working on one of my project involving Arduino and E45-TTL-100 LoRa 868MHz radio modules, I've discovered that it is not working exactly like expected. Documentation states:

(…) When the data inputted by user is up to 58 byte, the module will start wireless transmission (…)
(…) When the required transmission bytes is less than 58 byte, the module will wait 3-byte time and treat it as data termination (…)

If I understand this correctly, E45-TTL-100 should begin radio transmission when:

  • 58 bytes were sent via serial port
  • serial transmission stopped for 3 bytes. So, at 9600bps, 3ms pause whould trigger transmission
void loop() {
    Serial.print("Test");
    delay(100);
}

In theory, code from the able should send string "Test" every 100ms. Unfortunately, it was not happening. Second E45-TTL-100 was not receiving anything. Also SDR dongle was not catching any transmissions. Something was wrong. I even contacted CD Ebyte, but they were unable to help me and The Internet was equally useless. What was wrong? No idea… looks like some kind of E45-TTL-100 MCU bug…

The solution

The solution is, hmmm, surprisingly simple. You not only have to stop transmitting, but also end serial port (Serial.end()) and open it again (Serial.begin()) after short period of time. In my experiments I've determined that 20-30ms of closed port selves the problem. So, code from above should be replaced with following:

void loop() {
    Serial.print("Test");
    Serial.end();
    delay(30);
    Serial.begin(9600);
    delay(70); //The rest of requested delay. So 100 - 30 = 70
}

It might not be the prettiest solution ever, but it works.

Read More

Project Dualcopter – worklog #3

It's been exactly one year since my last update on Project Dualcopter. On 20th of October 2016 I've posted that there was a progress. Now, 12 months later, I once gain report, that there was a progress…. That was slow….

3d printed dualcopter aka flying bucket

servos for 3d printed dualcopter

  • I've finally installed control surfaces and servos
  • I've finally decided where LiPo will go: to the top of the whole stack. I want CoG as far from control surfaces as possible. They will not generate much force, so I need as much torque as possible. So, long lever FTW
  • My daughter called it Flying Bucket. Makes sense, right?
  • Plans for next week: battery mount

Read More

INAV 1.8 is just around the corner

Next release of INAV, navigation enabled flight controller software, is almost here. INAV 1.8 RC1 has been released just 2 days ago. List of changes is rather long, so here is shortened version with the most important things:

  • STM32F1 boards like Naze and CC3D are no longer supported. INAV 1.7.3 is the last version that can used on those boards. All F1 users are encouraged to migrate to F3 or F4 boards
  • INAV is now able to get current time from GPS. Time is saved in blackbox logs and can be displayed on OSD
  • SmartAudio (TBS Unify Pro video transmitters) and TrampHV video transmitter support. When connected over free UART (TX pin only) and properly configured, band, channel and output power can be changed using OSD and CMS subsystem. Changing this over MSP and SmartPort on a OpenTX radio (Taranis, Taranis Q X7) with Betaflight LUA script is not tested yet and probably does not work (yet)
  • Receiver type is no longer selected using feature command. There is receiver_type CLI variable instead. Configurator handles this in transparent way
  • Multiple OSD changed. And by multiple, I really mean multiple. Not only is has better update rate but also takes less memory and less CPU time. On top of that, new OSD elements has been added as well:
    • Combined "On time"/"Fly time"
    • System messaged indicator showing additional modes information, arm failure reasons, navigation stages
    • Average cell voltage
    • New throttle indicator showing also throttle requested by navigation subsystem, not only by user
    • Time indicator
    • Heading graph indicator
    • VTX band and channel, required SmartAudio or TrampHV
    • Distance alarm
    • Negative altitude alarm
  • AUX channels have been remapped to RC channels. AUX 1 is now CH 5, AUX 2 is CH 6 and so on. Be careful when restoring rc map from dump!
  • Navigation modes override MOTOR_STOP. This solves the problem of motors shutting down in rare cases when Navigation modes were enebled
  • Several other changes and bugfixes

Read More

E45-TTL-100 Configuration Tool for Linux

This will be fairly short entry. Do you know what E45-TTL-100 LoRa wireless serial modules were missing? They were missing configuration tool for other platforms than Windows. And even on Windows it had some minor problems. Luckily, this has changed only a few hours ago.

E45-TTL-100 configuration tool for Linux

Stronnag, the man behind mwptools mission planner and tools for iNav and multiwii-nav, has released E45-TTL-100 configuration tool for Linux. Kudos!

Read More