• Hands on: LoRa32u4 II 868MHz LoRa development board

    Idea for Crossbow, DIY LRS system did not appearned in my mind out of nowhere. All my previous LoRa attempts were aimed at telemetry purposes only. E45-TTL-100 are cool, but bulky. If I would want to use them, I would either have to attach Arduino to it or hack it open and reprogram onboard CPU (like Qczek LRS does). Somehow it was not something what suited me very much.

    But then I came across Adafruit Feather LoRa32u4 RFM95. Awesome idea. ATmega32u4 and HopeRF RFM95 LoRa module on one PCB, Arduino compatible, reasonably small and light. As a bonus, can be LiPo battery operated and has own 1S LiPo chanrger. The only thing I did not liked (OK, not the only one, but that was the biggest one) was price tag: $34.95 is somehow slightly more than I'm willing to pay for ATmega32u4. Even with radio module. So, after some digging on eBay I've found something that looked like a clone of Adafruit Feather LoRa32u4 RFM95: BSFrance LoRa32u4 II.

    LoRa32u4 II 868MHz LoRa development board

    BSFrance LoRa32u4 II 868MHz LoRa development board

    Read more...

  • 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.

    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...
  • Crossbow LRS: first range test

    This will be fairly short post. Today I tested range of a prototype of my SX1276 LoRa based LRS Crossbow. Unfortunately, I was not very impressed. Or rather: quite disappointed...

    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:

    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:

    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...
  • Wind your own motors? Will they burn or work?

    Half a year after first tries (failed) to wind a DIY motor from Banggood (it's not in offer any more BTW) I gave it another try. This time, with new tricks in my sleeve and new ESC. It ended up, well, watch the video...

    Read more...
Paweł Spychalski

I'm Paweł Spychalski and I do things. Mainly software development, FPV drones and amateur cinematography. Here are my YouTube channels: