Flying R2-D2 or SpaceX Falcon 9? Both – RC coaxial dualcopter

The second generation of my 3D printed coaxial dualcopter is here! And this time it works almost as I wanted.

3d printed RC coaxial dualcopter

Just watch the video

On the more technical details:

  1. It runs INAV 2.0 with a custom mixer
  2. Thrust and yaw control is provided by 2 counter rotating propellers
  3. Upper motor is 2205 2300KV with 5×4.5×3 propeller rotation in CW direction
  4. Lower motor is 2205 2600KV with 4×4.5×3 propellers rotating CCW
  5. Control surfaces are rotated 45 degrees from the long axis to fit servos
    flight controller is also 45 degrees rotated
  6. Any 9g servos will do
  7. runs on the 4S battery that has to be on the top of the device
  8. All 3D printed parts can be downloaded from Thingiverse

Required parts:

  1. 2205 2300KV brushless motor
  2. 2205 2600KV brushless motor (2300 also will do but will have less yaw authority)
  3. 5×54.5×3 propeller
  4. 4×4.5×3 propeller
  5. 2 14mm carbon pipes (12mm internal diameter), each around 270mm long
  6. 2 2g servos
  7. 3M bolts to secure the motors
  8. good adhesive tape to make control surface hinges
  9. pushrods
  10. hot glue
  11. flight controller compatible with INAV
  12. radio receiver

3d printed RC coaxial dualcopter

3D Printed Tricopter, part 1

In the last two weeks, I had plenty of time to sit in front of Fusion 360 to design a few things, but no time to 3D print anything. As a result, I have a couple of almost ready projects. Yesterday I showed you 3D Printed Dualcopter Reloaded. Today I will show you 3D printed tricopter drone. Tomorrow? Who knows…

Last year I have designed and made a fully printable quadcopter frame called Isando. It was fun, but well… There are plenty quadcopter frames over there. Cheap and much stronger than anyone can print at home. But Tricopters? Good luck with that.

3D Printed Tricopter Drone

I've taken some of the parts of Isando Quadcopter frame, designed some more and here it is.

3D Printed Tricopter Drone

3D Printed Tricopter Drone

The most important part of any tricopter is, of course, the tail motor tilting mechanism. I had the following options:

  • no bearings, just bushings
  • single bearing and using the servo as a second support point
  • two bearing and the servo is used only as a torque source, not support point

Guess which option I've chosen? Right… The tail will be quite heavy, so to somehow help with that, the rear motor has enough space to use 5-inch or 6-inch propeller. And the rest? The rest is quite standard:

  • Standard FPV camera in the front
  • 30.5mm hole spacing flight controller in a middle
  • video transmitter and radio receiver just behind the flight controller
  • ESCs on arms
  • 5-inch props in front
  • 5 or 6-inch props in the back

3D Printed Tricopter Drone

Of course, I will share STL files but only after I will print and assemble this thing. So please wait a little longer.

3D Printed Dualcopter Reloaded #1

The first generation of my 3D Printed Dualcopter was not the best. It was flying. Somehow. Poorly. Crashed. But for a moment it was flying alright.

3d printed dualcopter

I'm slowly designing the second generation of Dualcopter. This time smaller in scale since instead of 10-inch propellers, it will be using 5-inch ones. And smaller 2205 motors. And some carbon fiber to support 3D printed elements and hopefully give it a little more structural strength.

3d printed dualcopter

The general idea is as follows:

  • "Structure" will be provided by two vertical carbon pipes
  • Motors and propellers will be in a duct. Not EDF, but almost. The idea is not to get more efficiency but to guide the air to the control surfaces. The goal is to have some control during descend too. Version without duct had none
  • Upper motor will be 2205 2300KV with 5×3 3 bladed propeller
  • Lower motor will be 2205 2600KV with 4×4 3 bladed propeller
  • Lower prop will be working in the already accelerated air so it needs more pitch speed. More RPM and higher pitch = higher pitch speed
  • 4S battery on top to move the center of gravity far from control surfaces to give them plenty of torque
  • 2 9g servos
  • flight controller running INAV

3d printed dualcopter

And that is more or less all… Will it work better than the previous one? I hope so 🙂

ESP32 and GPS with a help of TinyGPS++ library

One of the first projects I did with ESP32 development boards is a simple GPS tracker. OK, it's not really a tracker since it does not store the position anywhere, more like distance meter with a UBLOX Neo-8M Beitian BN-880 GPS unit and small SSD1306 OLED display.

This ESP32 GPS Thingy as I call it uses one button to store current position and then report straight line distance, speed and altitude compared to "Home Point". GPS communication is handled by TinyGPS++ library.

Oh, one the best things about ESP32 is that you can map ports to almost any pin you want. It's not like on ATmega328 where UART and I2C are always the same pins. Here you can choose them. How nice is that?

Code is available on GitHub.

3D printed racing drone, part 3

It is done. It is alive. My 3D printed FPV racing drone works. A few weeks ago I finally flight tested my design and it works! Even better than expected, since I survived the experience without a scratch. OK, I did not crash it yet, but give me some time for that too….

3d printed fpv racing drone

And I have a cool name for it: Isando which means hammer in Zulu. Kind of fits, right?

Ah, STL files are available on Thingiverse of course.

3D printed racing drone, part 2

My 3D printed racing drone is done. More or less. I was able to finish it a few weeks ago and even perform a maiden flight. It survived the experience, but I also discovered few problems I will have to solve before officially calling this project a success.

3D Printed Racing FPV Drone

3D Printed Racing FPV Drone

First of all, the decision about hard mounting a flight controller and not installing a capacitor on mains was a bad one. Not only motors are "twitching" from time to time, a video is very noisy. I hope big low ESR capacitor will solve that, since there is no way for soft mounting for this frame.

3D Printed Racing FPV Drone

Besides that, it worked just fine. I will try to prepare a video from the maiden flight in a few day, for now only a few pictures and final specification:

  • Frame: PLA 3D Printed, 220mm motor-to-motor diagonal
  • Motors: EMAX RS2205S 2300KV
  • ESC: Racestar RS30A BLHeli_S
  • Flight controller: FrSky XSRF3O running Betaflight 3.2
  • VTX: TS5823 200mW
  • Camera: RunCam Swift
  • Total weight, no battery: 380g

Total build is, of course, heavy, but not that heavy as I feared. I was expecting something way above 400g. The frame is also quite stiff. I wonder how much beating it will be able to take….

3D Printed Racing FPV Drone

Crossbow LRS, I’m still doing this wrong…

Only two weeks ago I thought I solved all my major problems with DIY LoRa RC link. I was wrong. I was able to solve one problem (link unstable due to rouge packets messing up with protocol decoding), but an old problem came up again: PPM input from Taranis is no longer stable. At least I know why since this is a second time this is happening.

Current code read bytes from SX1276 buffer inside interrupt callback procedure (ISR). PPM decoding is also done in ISR. How many threads ATmega has? What happens when one ISR is triggered while second is still executed? Problems. The solution is to keep ISRs as simple and fast as possible. My code was not simple and fast enough.

On top of that, it turned out that Arduino LoRa library I’m using is not efficient. It performs 2 SPI transactions to read one byte from SX1276 FIFO buffer. So, 12 bytes of typical data packet equals 24 SPI transaction… Looks like I will have to do some low-level coding I wanted to avoid in the beginning… Oh well…

3D printed racing drone, part 1

I've been pretty busy last 2 weeks. Among other things, I've started to design 3D printed racing drone frame. I'm fully aware there are plenty designs available on Thingiverse, but almost all of them forgets that plastic filament is not carbon fiber laminate and what works well with carbon, will fail with filament. So, I came up with this:

3D Printed Racing Drone

3D Printed Racing Drone

  • suitable to 220x and 230x motors with 19x16mm hole spacing
  • fits PCB and 36x36mm flight controller (30.5mm hole spacing)
  • size: 220mm motor to motor (diagonal)
  • fits "standard size" FPV camera

It is heavy for sure. It has thick arms and a lot of M3 nuts and bolts connecting all the parts together. I hope it will be enough to survive at least some beating… First flight in a few weeks since I'm still waiting for motors.

Crossbow LRS, I was doing this wrong…

Last update on Crossbow LRS DIY RC link I'm currently building was 2 weeks ago. Back then, it did not went well: crashed an airplane beyond field repair. Last weekend I was able to do what I planned, but that did not went well as well. This time from completely different reason…

Link was catching failsafe every few minutes, even when RX was only few meters away from TX. To make things worse, link needed few seconds to recover. And twice it got stuck and required RX restart. It took me quite some time to discover what was the reason of that and a way to fix it.

To give you a full picture:

  • Link is build using LoRa32u4 II Arduino compatible boards that utilizes HPD13 868MHz LoRa radio module. HPD13 uses Semtech SX1276 radio chipset
  • SX1276 has 256 bytes of memory is divided equally for RX and TX FIFO queue
  • I was testing in LoRa rich environment
  • To reduce the probability of race conditions on SPI access and ISR locking, radio RX fifo was read in main loop. Radio interrupt was only setting a flag that data is present

The reason for hanging link was a combination of all points above: From time to time, when radio received a rouge long LoRa packet (by long I mean longer than 128 bytes), both RX and TX were stuck processing it and as a result buffer was never fully emptied and protocol state set to IDLE. In theory, there was a air protocol reset routine, but since SX1276 FIFO was overloaded, it was not working like I expected.

The solution (or at least I hope it will solve the problem) is as follows:

  • Radio interrupt checks if received packet size is a probable air protocol packet. Since its between 7 and 12 bytes, everything else is rejected
  • When probable packet is detected (size between 7 and 12 bytes), it is copied to temporary buffer, read and decoded in main loop
  • Radio buffers are flushed after each packet (put SX1276 in sleep and wake again)

Right now, link is up and running on a bench with other LoRa stations talking around for 2 hours. Not a single failsafe or any other problem so far. Look good. Unfortunately it is raining, so not further live testing this weekend I'm afraid.

By the way, there were good things during my last test too. At 500m distance link still had around 80dB of link budget left. That means I should be able to reach my goal: 5km range is within reach!