This post is only a short update for SmartPort inverter for F4 flight controllers. Here is alternative SmartPort inverter circuit using bipolar BC547 instead of unipolar 2N7000. All other aspects of operations are the same like in MOSFET version.
It’s still middle of winter here in northern hemisphere, but I’m slowly preparing for next flying season. One of my goals is to push my DIY HC-12 Telelemetry System to a next level. In both range and quality. For quality I’m planning small hardware LTM decoder with LCD. For range, I want to reach at least 1.5km with 9600bps FU3 mode and 2.5km with 1200bps FU4 mode.
While STM32F4 family processors installed in newest flight controllers are superior to STM32F3 (and F1 of course) in terms of raw speed, they are inferior to F3 family in terms of IO handling capabilities. For example, F4 family is not equipped with UART port inverters. And that creates a series of problems when it comes to connecting various serial RX receivers and telemetry systems.
The most popular FrSky (Futaba) S.Bus serial RX protocol and FrSky SmartPort telemetry require inverted UART signal. If there is no hardware inverter on hardware UART port, they will not work. While S.Bus requires only one data line, external inverter is not a big issue. Some time ago I’ve published The Simplest Harware Inverter. One MOSFET transistor, one resistor and that’s all.
In case of SmartPort, it’s slightly more complicated. Not only signal is inverted, SmartPort also combines TX and RX UART line into single wire. That means the following:
- More complicated inverter is required
- Software has to support this case and fallback to unidirectional UART mode
3 weeks after my first post on Project Dualcopter, it's time for small update. The plan was to install servos and control surfaces. Instead, I've done:
- Basic electrical wiring for motors and ESCs. They have power now and are ready to be connected to flight controller
- To level shelf (above propellers) designed to hold flight controller and radio receiver
- Think for a moment about landing gear. Yeap, there will be some sort of shock absorbers
- Think for a moment where battery will be placed: as low as possible to keep center of gravity below center of thrust
- Decide which propeller should run clockwise and which should run counterclockwise: top should go clockwise, bottom should go counterclockwise
Flying season 2016 is slowly coming to an end on northern hemisphere. That means less time spent on an airfield and more time spent behind a desk. For this autumn I've found a very interesting, small project: Dualcopter.
Dualcopter is an UAV with two coaxial contra-rotating propellers and 2 control surfaces driven by servos. Lift and yaw are controlled by propellers, while pitch and roll by ailerons placed below motors. This video illustrates how it looks like:
My Dualcopter will be slightly different. Instead of foam and wood I will use 3D printed parts connected together CA glue and zip ties. Maybe it will not be super strong and probably will not survive any crash, but should be enough to make it fly for a minute or so. Almost all parts would be either 3D printed or taken from spare box. I'm not planning any new purchases.
- Motors: Turnigy MT2213 935KV
- Props: APC 1045 MR
- ESC: Afro 20A
- FC: Flip32 probably with INAV inside
- Battery: 1300mAh 3S
- Weight: around 800g with battery
So far, after 2 evenings I have this:
Two motors mounted on a frame.
Next step would be to build bottom section with ailerons and battery compartment.
For the last few week I’ve been little busy building my next fixed wing UAV: “Marabou Stork” Depron/Carbon/3D Printed airplane with pusher prop build for FPV. It’s improved version of “Red Cruiser” model from last year.
It’s equipped with KFm-2 wing, Turnigy D2826-6 2200KV motor, APC-E 7×4″ propeller, 2700mAh Lipo battery, FPV setup with MinimOSD and RunCam PZ0420H camera. And Flip32 running INAV for stabilization and navigation (no GPS yet).
As you can see on a video above, it flies. Even pretty well. It needs some tuning, but have big potential. Unfortunately elevator malfunction grounded it after few minutes in the air.
Beitian BN-880 (I’ve bought mine from Banggood) is an excellent, cheap and accurate Ublox NEO-M8N GPS module. I’m using it for last few months and I’m very happy with it. But is has one serious flaw: there are no cases/enclosures for it. So, in most applications it is naked. I’ve decided to fix that and designed 3D printed Beitian BN-880 case.
Case can be dowloaded from Thingverse
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:
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.
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.