Rctimer has just released a new flight controller (FC), the OZE32. This flight controller has all the hardware on a normal Naze32, plus the two components I add to all of my multi-rotors -- a current sensor and MinimOSD. Also included is a switch that changes the connection of the on board CP2102 UART/USB adapter between the flight controller and the OSD. This means you don't need to buy an external CP2102 USB/UART adapter.
A current sensor measures the exact amount of battery that has been used and the OSD displays this information as text overlaid on your video feed. Here's an example video I recorded with my Go FPV Goggles app for Android.
Useful stats shown on the OSD are RSSI, Voltage, mA in use and total mAh, flight mode and an artificial horizon.
Airbot now carries version 1.03 of the OZE32 which has an better MAX7456 which is less sensitive to voltage spikes, better power management with 3 LDOs and the IMU interrupt is now connected to the STM32 for gyro sync!
Also, Airbot has a F3 AIO flight controller available as well, the Flip32 F3 AIO Lite.
The BeeRotorF3 flight controller and it's companion PDB with a build-in current sensor are the latest AIO setup by Rctimer. With this package you get a minim OSD and an F3 processor in a tiny package. Though the F3 processor runs at the same speed as the F1, the F3 has a floating point coprocessor, meaning you can run the LuxFloat pid controller at 1khz, which is a huge advantage as Boris' BetaFlight firmware has an amazing default tune on LuxFloat.
If you are interested in a FPV racing new quad, but don't want to research and build from scratch, you should checkout the Victory230 from Rctimer, which will be running the BeeRotorF3. This thing is a hyper-performant beast with amazing value. Plus, it's ready to fly.
The first two versions of the OZE32 suffered from power management issues that could cause the OSD to cut out when plugging in a battery. Though possible, it is highly unlikely the OSD would cut out while in flight. This has been fixed in version 1.02.
If you already have an OZE32 and are wondering what version you have, you can identify it with the guide below.
Also, if you have an older version don't be afraid to run with in, all the suppliers know about the issues, so if the OSD does go outit's easy to drop in a replacement if you run into trouble with aon o
There are currently 3 iterations of the OZE32 / FLIP32 AIO in the wild.
|Version||How to Identify||Notes|
||1.0||There is a large vertically oriented Spektrum satellite receiver plug. The boot pins are only on the bottom and do not go through to the other side.||Some folks have reported issues with the OSD going out after plugging in a battery, possibly due to a problem with the on board voltage regulator powering the OSD's MAX chip.|
||1.01 (RTFQ 1.5)||Identifiable by the text `0ze32` on the bottom of the board.||Voltage regulator to OSD is replaced with a higher quality component, but the OSD issue persists.|
||1.02 (RTFQ 2.0)||The large Spektrum satellite receiver plug has been replaced with a smaller JST plug to match the rest of the board. The bootloader pins have been moved further from the edge and made into vias, which pass through the board onto the top.||
Proper USB / Battery voltage regulation is in place. The OSD issue has been solved.
This will review focus on 3 parts: construction and component quality, function and layout, and value. I'll briefly cover flight performance, since it should perform exactly like a Naze32, if it functions properly and flight performance is almost entirely a function of the firmware, which is open source and up to the user. If you're ready to flash the best firmware, skip to the firmware setup section.
Overall the construction looks good. The PCB is gold plated and the components are the same as on the Naze32 and MinimOSD. Because of their low profile and compact nature, I prefer the JST connectors over the more ubiquitous 2.54mm pin headers. It might be worth epoxying the JST connectors down if you tend to be rough on flight controllers. It would be nice if all the JST connectors on the board were the same number of pins and the same width, so there were only 1 type of JST plug to keep on hand and we could easily re-use connectors the connectors on different ports.
Here is everything that comes in the package: flight controller and 3 JST to 2.54mm cables. The wires are nice, they appear to be silicone. The PPM out JST connector doesn't have 2.54mm female pin headers, so we'll need to solder these to our ESC data lines.
The front of the board:
The back of the board:
bat+ pad and large
vcc pad labeling is a bit confusing, but the
bat+ pad should be wired to your XT-60or Deans connector from the battery and the
vcc should be connected to your power distribution board. The current sensor will measure everything wired into the
vcc pad. It would be nice if there were a ground pad on the opposite side of the board as the
bat+ pad so that we could minimize the size of any loops, eliminating EMI. As it is you'll have to use the ground pad on the opposite side of the
vcc pad when wiring the battery connector.
Here are the layout diagrams, top:
The MP1593 Voltage Regulator (aka. BEC) can take up to 28v, so you're safe running up to a 6s. The biggest battery I had sitting around was a 4s, but here it is plugged in. Don't get confused by the two battery connectors. The red JST connector will hook into my PDB.
Note, in board versions prior to 1.02, it was thought that plugging in a high cell count battery can cause a voltage spike that could kill the MinimOSD on the board. This turned out to not be true. The issue killing the OSD chip was entirely different. Don't worry about using an anti-spark plug to your setup, you don't need it.
The XT-60 or Deans battery connector
+positive (red) lead should be soldered here, to
+positive connection to your power distribution board (PDB) and ESCs will be soldered here, to
12v pins on the video headers, appear to be directly wired to the
vcc pad. This means you'll get the full battery voltage on these
12v pins, which is fine if you're running
3s, but on
4s you'll get almost 17 volts, which is not healthy for your camera. I suggest you avoid these pins and use only the video and ground pins when wiring in your camera and VTX.
Note that if you get a camera that can run off 5v, you could use a 5v line from one of the unused Serial Ports. This will give nice, clean power from the OZE32 to your camera and possibly avoid the need for an external LC filter.
You'll connect your transmitter to the video out pins, keeping in mind that the 12v pin could have more than 12v, up to whatever the max voltage of your battery is, 12.6v on 3S and 16.8 on 4S:
Plug your camera in here, again keeping in mind the 12v pin may actually more than 12v:
I decided to solder some 2.54mm headers left over from an Arduino onto the video pins, these aren't included. If you plan on flying 4S or with a non-12v camera or transmitter, I suggest you leave out the center pin.
Here's my board with the leads to the PDB and the video headers soldered on.
The 6 pin dip switch is used to change the USB connection between the flight controller and the OSD or connect the flight controller and OSD during flight. It appears that the documentation is wrong for "flight mode", I needed to switch the left 2 pins off and the right 4 pins on to get the OSD to display.
This is what the documentation says:
And this is how I had to set the dip switches to get the OSD to display in "flight mode":
Interestingly, you can leave the dip switches in this configuration and when you plug it into your computer, it will connect to CleanFlight. I think this only works if you do not power the board via the flight battery, as that would turn on the MinimOSD. This means you won't need to flip the dip switches around once the quad is assembled, to change CleanFlight configuration options. Whoohoo!
Here is where you would solder on a buzzer:
It would be great if the battery pads on the bottom of the board were broken out into 2.54mm headers or a JST connector. I tried to solder some 2.54 mm pin headers to the solder pads, but it was too flimsy so I took them off. I guess I'll have to solder on a beeper, but it's much nicer to be able to remove this when working on the quad.
This port is
UART1 in CleanFlight and is shared with the USB port and MinimOSD, depending on how the dip switches are set. Assuming you want to use the integrated MinimOSD (and if you don't want that, why did you buy this board?), I don't think you'll ever use this header:
This port has
SCL, which are the I2C communication lines for an external magnetometer,
UART2 TX and
UART2 RX. The idea behind this is that this port will be used for
GPS, so I'll call it the
You could of course ignore the I2C lines use just the UART2 pins for an external OpenLog blackbox data logger or a bluetooth serial module checkout my bluetooth setup guide for configuration from your phone.
Don't go crazy yet though, if you're using a PPM receiver, UART2 will be available. However, if you plan to use Serial RX (DSUM, Spektrum satellite, etc), that will take UART2 and you'll be out of UARTs. Folks claim that Serial RX is about 50ms faster than PPM, but I have yet to try this as I prefer to use PPM and keep the extra serial free for a blackbox or GPS.
This Spektrum satellite receiver shares the UART2 RX pin with the above header, so make sure you only use one at a time.
If you don't have a receiver that can do Serial Rx or PPM, get a PWM to PPM Converter.
If you're going to use PPM, you can simply plug in the supplied header to your receiver and the FC will receive data and power the receiver:
The bottom 6 wires on the header above are your motor outputs. Motor 1 is on the bottom, yellow, wire in the photo. You'll need to solder each motor wire to the data line on the respective ESC. You should also be sure to solder all the ground wires from your ESCs data connection (usually the data and ground wires are twisted together) to the closest ground on the flight controller, probably the big ground pad on the top of the board.
Finally, he following header is for an LED strip. From top to bottom the pins are:
UART1 is used by the CP2102, flight controller and MinimOSD. We shouldn't need to connect anything to this port.
UART2 is broken out to both the Spektrum Satellite Receiver and the GPS pins.
Motor outputs are on the big JST plug along with the PPM and v5 out for the receiver.
For the next version, it would be nice to have a single JST header for UART2 and a cable to adapt the JST to the Spektrum Satellite plug, since we won't be using both together anyway.
There is 5v input on the PWM header, which seems strange, since there is an on-board BEC, why would we want to supply 5v?
As for the PWM outputs, having the compact JST plug is nice, but it will require soldering the motor pwm leads, which is unfortunate. It would be nice if just this one header used 2.54mm headers, so we could just plug the ESC connectors straight into the board.
I do appreciate the I2C headers, which makes it easy to connect an external magnetometer. The ISP headers for the MinimOSD on the bottom of the board are also useful, in case something happens when flashing the MinimOSD, a new bootloader can always be written after soldering some leads onto these:
BetaFlight uses the MPU6050 interrupt pin to notify the flight controller when it has new data. This helps avoid aliasing in the control loop and make for a more response quad.
Unfortunately, this pin is not connected on the OZE32, however it can be connected with steady hands and a small wire. I used a normal size soldering iron tip.
Before you choose to do this, though. Know that the while not ideal, your quad will function fine without this pin connected. If you want the absolute best performance, then you'll want to proceed to the guide section explaining how to connect pin 12 on the MPU6050 IMU to pin 26 on the STM32F103-CBT6.
The OZE32 actually costs slightly less than the individual parts and it requires way less soldering to get all the bits connected.
Update (Feb 2016): Now that the BeeRotorF3 is out, I highly suggest you pay $2 more for the more powerful BeeRotorF3 AIO board. This board does have a separate PDB that holds the current sensor, so the setup is 5mm taller. If you don't have 5mm more, go with the OZE32.
Here's a breakdown of what you would need to order to get an equivalent setup, albeit, in a bigger package.
Note that these are actually "full" boards, with magnetometer and barometer, whereas the OZE32 is an acro board, without these extra sensors.
Also note that one can purchase an acro SPRF3 for about $25. This board has a faster "F3" processor as opposed to the NAZE32 and OZE32's "F1" processor. In practice, this makes very little difference as long as you run BetaFlight, which makes large flight performance improvements over CleanFlight. You will want to run PID controller 1 (rewrite) on F1 boards and PIDC 2 (LuxFloat) on F3 boards as the F1 is missing the floating point unit on the F3. The SPRF3 also has a 3rd hardware serial port, which is super handy.
While processing speed is the same, having a faster processor gives you more capacity to run things like GPS, LED strips, softserial, etc. Checkout my detailed performance analysis here: F1 vs F3 performance
~$3 CP2102 USB/UART Adapter to program the MinimOSD
The real value comes from the fact that all the components are in one nice compact package. It is unfortunate we must choose between the latest F3 processor and the nice small package with an integrated OSD. If the OZE32 had an F3 processor, there would be no reason to fly anything else.
The hardware setup listed below is 20% lighter than my ZMR250 with discrete OSD and current sensor, this thing flies hard, crashes hard and even got taken down by a dog,but it doesn't flinch. I just flip it right-side-up and it keeps running. I'm still on the first set of props.
Skip to the firmware setup section if you want to setup the firmware before soldering it on, this isn't required as all the firmware setup can be done while installed, but if you don't have your other parts yet, this is a good way to kill some time while they find their way through the mail.
If you skipped the review section on hardware Function and Layout, read that first for a walk through of the board, pins and available features.
Here are the other parts I used in this build:
<img-tr image="/img/blog/oze32/parts/nylon-m3-nut.jpg" text="Assembled with Nylon m3 nuts"></img-tr> <img-tr image="/img/blog/oze32/parts/nylon-m3-bolt.jpg" text="And Nylon 12mm x M3 Bolts"></img-tr> <img-tr image="/img/blog/oze32/parts/xrotor-20a.jpg" text="xRotor 20a ESCs flashed w/ BlHeli"></img-tr> <img-tr image="/img/blog/oze32/parts/be1806-black.jpg" text="DYS BE1806 2300kv Motors"></img-tr> <img-tr image="/img/blog/oze32/parts/dal-5045.jpg" text="Dal 5045 Bullnose "indestructible" Props"></img-tr> <img-tr image="/img/blog/flight_controllers/oze32.jpg" text="OZE32 Acro Flight Controller flashed with BetaFlight"></img-tr> <img-tr image="/img/blog/oze32/parts/4s-2200.jpg" text="4S 2200mah Battery"></img-tr> <img-tr image="/img/blog/oze32/parts/400mw-vtx.jpg" text="5v Boscam 400mw Micro Video Transmitter"></img-tr> <img-tr image="/img/blog/oze32/parts/1g-camera.jpg" text="5v 600TVL 1 gram CMOS camera"></img-tr> <img-tr image="/img/blog/oze32/parts/xiaomi-yi.jpg" text="XiaoMi Yi HD Camera recording 1080p at 60 FPS"></img-tr> <img-tr image="/img/blog/oze32/parts/9x.jpg" text="9x Transmitter"></img-tr> <img-tr image="/img/blog/oze32/parts/443-tx.jpg" text="433mhz LRS Transmitter Module"></img-tr> <img-tr image="/img/blog/oze32/parts/443-rx.jpg" text="433mhz LRS Receiver Module, set to PPM injecting RSSI on ch 9"></img-tr>
I started by soldering a little red JST connector to the large VCC and GND pads. I haven't soldered it on in this picture yet, but the XT-60 for the battery will be
This JST plug will connect this to the power distribution board (PDB) on the quad frame. This will allow us to choose if we want to power the MinimOSD (by plugging a battery into the JST directly) or the flight controller and ESCS (by plugging a battery into the XT-60 and plugging the JST into the PDB).
Alternatively, if you don't have a PDB, you could solder your ESC power lines straight to the big VCC and GND pads on the flight controller.
Connecting the IMU pin takes some fine soldering skill. Anyone can do it with some patience and a normal iron, but proceed at your own risk or skip to the ESCs section, if you'd rather not tempt fate. Also, connecting this pin will only help if you're flying BetaFlight (which you should be), CleanFlight doesn't have Gyro Sync, which is the whole reason we're connecting the pin.
I've flown one quad with the IMU pin soldered and one without the pin connected. The one without the connection flies fine, so don't feel like you have to do this, but if you do, it will feel a bit more locked in.
You'll notice in the configurator that if this IMU pin is not connected your looptime will be around 1100 and around 1000 if you choose to solder the connection. The big difference though is not 100ms in loop time, but reducing aliasing.
Update (Feb 2016): The BetaFlight code has changed such that the loop time will be at or near 1000 even if the IMU pin is not connected. This reduces the impact of aliases when gyro sync is not available. This means that connecting the IMU pin no longer makes a significant performance difference. Since I have fried a chip connecting the IMU pin, I suggest you skip this step as the risk is not worth the payoff. Jump to the section on ESCs.
Remove the solder mask from the IMU interrupt pin via. I used the tip of a pin:
Optionally, use a flux pen to tin the pad you just exposed, get a small blob of solder on your iron then touch the via. Solder should flow into the via and tin the pad.
Cut, strip and tin a small guage wire then touch the wire to the tinned via and then touch your iron. It should flow together and stick nicely.
Flux the STM32 pin with your pen, tin your wire then hold the wire against the STM32 pin. Touch your tinned iron to the wire and let the solder flow.
Don't worry if you get a little extra solder on something, just use some solder wick to clean up then wipe everything down with rubbing alcohol.
First though, flash your ESCs with BlHeli and the BlHeli bootloader so you can configure them via pass through programming after you've assembled your copter.
Follow the guide here to identify and flash BlHeli and the BlHeli Bootloader
Twist your wires first, open loops between ground and power create magnetic fields which could throw off your magnetometer, if you have one (or decide to add one later via the I2C port).
It helps to use some helping hands.
VCC pads with some solder. Tin the wires and then heat the wire and hold it against the board. As soon as you see it all liquefy, remove your iron and wait a second for it to cool.
They'll all fit and there is enough mass so that soldering on another doesn't release the already-attached wires.
Done! The wires fit perfectly.
Connect your RX as described in the section on Serial Ports. I'm using PPM, so I'll use this plug.
Wires look neater braided.
I also removed the extra
VCC IN pin from the JST plug. Pop up the tooth with an blade and pull out the wire. Hold onto it though, you can always put it back in if you need it later.
You'll wire the ESCs like this:
I made a little breakout board for the ESC signal and ground lines. This isn't necessary if you're using an ESC without signal cables pre-soldered (like these). If you're using ESCs without pre-soldered signal cables, the OZE32 cable leads are long enough to solder them straight to the ESC. Awesome!
I used some leftover pins from an Arduino and some prototyping board.
Here's how I soldered up the headers:
Since there is no on board 12v power regulator, you should consider getting a 5v camera and video transmitter.
I used this 1 gram CMOS Camera:
and this 400mw Video Transmitter:
The video isn't quite as good as my CCD Camera, but I have yet to find a CCD camera that will run off 5v. If anyone know of one, please let me know!
Solder on a cloverleaf and a set of dip switches and you'll end up with something like this:
You could solder the power leads straight onto the camera/vtx. I've also removed the extra wires from the JST plug.
Remember that the
Video Out pin is on the outside of the board. Don't plug your 5v setup into the middle, 12v pins!
Checkout the OSD overlay and the camera video quality:
First, I just got an update from Paul at Ready To Fly Quads that they're shipping the OZE32 with CleanFlight 1.10.0 and ScarabOSD with all the right flags set. So feel free to fly this stock. For those that want BetaFlight (you should want it, it's awesome) or like to live on the bleeding edge (myself included), read on and flash away!
Since this board is essentially two different pieces of hardware smashed together onto the same board, we'll need to update both the flight controller and the MinimOSD independently.
Before you get started flashing, make sure you have the latest CP2102 USB/UART driver installed.
Let's flash the FC with BetaFlight first. The same applies if you want to use CleanFlight, just use the appropriate hex file.
Download the Naze32 hex from the BetaFlight Release Page: https://github.com/borisbstyle/betaflight/releases.
Unplug the FC if it is plugged in.
Switch the dip switches into the USB <-> Flight Controller mode, like so:
Plug in the FC via USB.
Load Local and pick the Naze32 hex file you downloaded.
If you get a message that CleanFlight can't connect to the bootloader, you may need to unplug power from the FC, place a jumper across the tiny boot pads while plugging in the power. It's kinda tricky to jump those pads, so don't give up on the first try.
You'll know it worked if you get a solid blue light. I used a pair of tweezers to jump the pins while I plugged in the USB cable.
Once you get the solid blue light, hit
Flash Firmware again and it should work.
When flashing completes, click
Connect, then we'll configure the current sensor:
Switch the receiver configuration to Spektrum satellite or PPM depending on your RX
Enable the current sensor feature
You should now see the total capacity drawn and instantaneous current draw:
Continue your configuration by following the BetaFlight configuration section of the Victory230 setup guide in the Victory230 article or flash the osd next.
You can find my BetaFlight 2.3.1 configuration for the BeeRotor160 here: https://gist.github.com/nathantsoi/1fd3bc42977305d1a86d
Let's update the firmware on the MinimOSD with the most actively maintained fork of MinimOSD -- Scarab OSD
Hit "Download Source" on the release page for ScarabOSD: https://github.com/ShikOfTheRa/scarab-osd/releases. Extract the zip file.
Open Arduino, download it first, if you don't already have it. From Arduino, open the
MW_OSD folder in the extracted Scarab OSD source and from that folder open
Switch to the
Config.h tab and scroll through the file or use the find function to change the following settings.
Lines that start with
// are "commented out" or turned off and lines that start with
//) are turned on.
For example, to change the
CONTROLLER SOFTWARE from MultiWii to CleanFlight, change this section to
//#define MULTIWII // Uncomment this if you are using latest MULTIWII version from repository (2.4 at time of this MWOSD release) ... #define BETAFLIGHT // Uncomment this if you are using BETAFLIGHT (same as CLEANFLIGHT t time of this MWOSD release)
It starts like this:
And should be changed to this:
Set the MSP Speed Setting to
MSP_SPEED_HIGH to make the artificial horizon update faster:
//#define MSP_SPEED_MED // Default ... #define MSP_SPEED_HIGH // Enable for faster AHI and speed updates. Requires higher baud rates and increases overhead on the FC to process
Set the Voltage Warning Setting to use the vbat configuration from CleanFlight:
#define FC_VOLTAGE_CONFIG // Additionally uncomment this if you want to use the vbat voltage config with BASEFLIGHT and CLEANFLIGHT on the flight controller (include: min cell voltage, max cell voltage and warning cell voltage)
Unplug the FC if it is plugged in.
Switch the dip switches into the USB <-> OSD mode, like so:
Plug in the FC via USB.
If you have an OZE version 1.0 or 1.01, plug in a battery to the OZE32, the MinimOSD is not powered via USB. On version 1.02 and beyond, the MinimOSD is powered over USB, so no need to plug in a battery.
Set the board to
Arduino to Arudino Pro Mini
Set the processor to
ATmega328 (5v, 16MHz).
Pick the serial port you're using:
You can ignore the programmer setting unless you're using an ISP programmer to install a new bootloader. If you are using an ISP programmer (you would have had to soldered leads onto the ISP pads to connect to your ISP programmer), you probably want to set this to
"USBasp". This setting will be ignored if you're flashing via the usb port.
Click the arrow in Arduino to upload the new firmware. The arrow turns orange when the upload starts.
The bottom of the Arduino window will look something like this when it completes:
Open up the configuration tool. It is in a folder for your platform in the
MW_OSD_GUI folder in the zip file you downloaded.
Click the name of your COM port on the left to connect. If you don't see the COM port, unplug the flight controller, plug it back in and restart the configuration tool.
You should see the preview window on the right populate and you can configure your settings. You'll probably want to turn on Voltage and Amperage settings like so, the number don't matter, just the switches. This should configure the OSD to display the voltage and amperage from the flight controller.
I also like to update the font. Under the font section select a font, I use the one from the downloaded zip:
OTHER/MW_OSD_GUI_SOURCE/MW_OSD_GUI/data/default.mcm. Once you've picked a font, hit upload to save the font to the MinimOSD. It will take a minute.
Here is my OSD config. Basically we want to take all the values from the flight controller. The
adjust values don't matter, they won't be used.
Download the config file then click
load, pick the file you saved and then click
write, or set the settings like this:
When this is all done, you can safely disconnect via the configuration tool and unplug the USB.
Unplug the FC if it is plugged in.
Switch the dip switches into the OSD <-> Flight Controller mode, like so:
Plug a video transmitter into the video pins on the outer edge of the flight controller. Optionally, plug in a camera to the input side of the video headers as well. We can test without this, so I'll leave the camera disconnect for now.
Plug in a battery, be careful if you have plugged in the middle "12v" pin on the video header. Be sure your vtx can handle the full battery voltage. I'm using a 2s, so I'm safe. Plus, my vtx can take up to 18 volts or so.
Checkout the awesome text overlay on your video, shown on my phone in the photo.
Time to hook the flight controller up to your receiver and ESCs then go fly!