Afroflight Naze32 Setup Guide For Dummies, like myself.
Alright, for those of you guys who want to use the Naze32, but aren't computer programmers, I will try to write you a little how-to on how I set up my board. If you already have your board flying, this guide is not for you. However, if you are like me and read the manual and the thread on RCG about the Naze32 and were lost, then this should help. This will obviously be my own experiences, so I am not saying this is the only way, or the best way to get this board set up, but it worked for me. I also do not have any experience with any other radio systems and this board. I am using a JR x9303 radio (so it's Spektrum), and have a Macbook Pro which I am running Parallels with Windows XP. I did all of my programming via the XP virtual machine.
This will be a work in progress thread, and I will try to update it when I have time.
I want to start out by saying thanks to timecop for engineering the board and much of the software. You have put a lot of time into this, and trust me, it is appreciated. I also want to thank Phalanx-0 and javemtr for the help initially as I was setting up the board, and for patience with my stupid questions.
If you are looking for a board to learn on, I don't really recommend this board. It is too confusing as a first board. I would recommend a KK board, like the one offered from hobbyking. That is what I started multirotors on myself. However, once you are comfortable with flying and how these things work, then I think this board has a huge amount of potential, of which I have not even begun to take advantage of. I am currently flying FPV with it, and am very happy with the results. I just hope I can soon use this board to its fullest.
A little about my setup...
- Quadcopter flying in the "X" configuration
- Naze32 board purchased in May 2012.
- ST450 frame from Goodluckbuy.com
- NTM 2826 1200kV motors
- Turnigy Plush 25A ESCs
- Turnigy Nano-tech 3s 4000mAh batteries (12 mins flight time)
It took about 10 hours of messing with to get this board working. This was after at least 15 hours of reading up on the board as well. I am hoping htis guide will cut that time down to an evening or less.
NOTE: Please, please, please do not have propellers on the quad until the very end, when the board is set up and ready for a test flight. During the programming process, the motors can easily spin up with the click of a mouse, or flip of a switch, when you are least expecting it. So for your own safety and fingers, please do not put propellers on the quad until the end. I am not responsible for damages to person or property resulting from this tutorial. I am simply stating my own experiences. It is your own responsibility to make sure that you are doing things right.
Also, if you see me referring to the Afroflight thread, it is referring to the following thread on RCG...
The manual is linked to in that thread, but it can also be found here...
That thread has a lot of valuable information, and is worth reading, but most of it is way over my head. Regardless, please at least read the first post. It also has links to some useful information as well.
Plugging the board into the quad.
To start, make sure you follow Timecop's (will be referred to as TC from here on) manual he wrote as far as how to plug stuff in. Make sure your polarities are correct, as an incorrectly plugged in ESC or Rx wire can easily fry the board. There is also a picture attached that shows polarity, just to be clear. Be sure also that your motors are spinning int he right direction. Sicne I came from a KK board, they were correct, but yours may not be. Motor numbering is different than the KK board, so please read the manual on numbering and direction, if needed.
CPPM: I do not use CPPM mixing at this time. Most people like me do not. In fact, I just found out what CPPM mixing is. Apparently it allows you to connect one signal wire to the board, and that one signal wire is all that is needed for the Rx to talk to the board. I am using a standard Spektrum receiver (AR7000), so I will not be using CPPM. This means that I need to have a signal cable going from my Rx to my board for every channel. For a better explanation of CPPM mixing, or to configure the board to accept a different channel order, see this post...
The Naze is looking for an input of, in order of channels, aileron, elevator, throttle, rudder. However, my Spektrum receiver is in the order of throttle, aileron, elevator, rudder. This means that Ch 1 on the Rx does not correspond to Ch 1 on the board. This is an easy fix, as long as you just be careful to connect your leads to the board in the order it is expecting, which is AETR.
Only the first channel on the board, throttle, needs to have the positive and ground cables hooked up as well. This is where your receiver will get its power. It will come from the board, which should be getting it from the ESC's BEC. If you are like me, you have disabled all but 1 of the ESC's BEC. I know it can be argued as to whether this needs to be done, but for your info, I only have 1 ESC's BEC connected, which is powering the board and my receiver just fine.
This means that you must use "jumpers" of some sort to connect the other signal wires for the other motors and inputs, as it will not be your standard 3 pin connection with singal, +, and ground. Please follow the directions in the manual for what order the board is expecting these inputs. However, keep in mind that that board may be expecting them in a different order. What I did for jumpers was to take male to male servo leads and pull all but the signal wire pins out, so now I have a bunch of jumper cables that now only have 1 cable, the signal wire. This can be any color, but I chose to stick with yellow, as it keeps things simple. I then rearranged the pins on the connectors, so that I had the correct Rx output going to the correct board input. If you need more help on how to do this, please let me know.
After you have the board connected to your receiver, plug in the ESCs, with the correct polarity, into the board, in the correct order. Please refer to the manual for this step. It is explained int here fairly well.
After the board is plugged in to the receiver and ESCs, and is properly attached to the quad, we can move on to the next step, flashing the board.
For future reference, the blue LED is the power on LED, the green LED is the arm LED, and the red LED is the autolevel mode LED.
Flashing the new firmware onto the quad.
First of all, you need to get a way for the board to be read by the computer. This is by downloading and installing this driver…
The board will be connected via a mini USB cable, of which, most people have a million lying around the house.
Next, download and install Hercules. This allows you to re-flash the board. It is the program you will use to initiate the process, for lack of a better term. Scroll down to the middle of the page where it says download…
Next, download and install this flash loader…
Next, you need to download the latest baseflight firmware here…
Here is the process to flash the board with the latest firmware. TC has a step by step list on his thread, but I will explain in a little more detail…
1) Plug in your board via USB to the computer. This should run through a fast series of flashes of the LEDs, and then the blue LED (power) LED should stay lit.
2) Find out which COM port your board is connecting with. For me, it was COM3. It looks like TC’s was COM11. This will vary, and can be found by looking under Control Panel/Administrative Tools/Computer Management/Device Manager. In there, it should list your board either under Ports or USB devices. This should tell you what COM port it is using.
3) In Hercules, click on the “Serial” tab.
4) Under “Name”, select the COM or USB port that your board is using.
5) Set Baud (Speed) to “115200”, Data Size to “8 bit”, Parity to “none”, Handshake to “OFF”, Mode to “Free”. Note, TC says to set it to 1 stopbit. I could not find this setting, and thus did not set it. If you have it, set it to 1.
6) Click on “Open”. This should open a session with your COM port, and should say so in the text box.
7) On the bottom of the screen is an input box, where it says “Send”. Type in the letter “R”, without the quotation marks. Be sure it is uppercase. Do not hit enter, rather click send. This should light up all 3 LEDs and keep them lit up. If they light up, then you are good, if not, see TC’s thread on what to do if the standard process does not work. Mine worked just fine.
8) Close Hercules.
9) Now open the STM32 Flash Loader I had you download earlier. Unlike Hercules, it should show up in your programs list, if you installed it earlier.
10) Set “Port Name” to the COM port your board has been using, otherwise don’t change anything else.
11) Then click “Next”. The board should be recognized by the Flash Loader. If it isn’t, be sure your board still has all 3 LEDs on. If not, go back to step 1. If so, but the Flash Loader won’t find it, restart the Flash Loader. This happened to me, and restarting the Flash Loader fixed the problem.
12) Continue clicking “Next” until you get to the page that has the option of Erase, Download, or Upload.
13) Click on Download.
14) Also click “Jump to User Program” and “Global Erase”
15) Use the browse feature under the download section to find the latest firmware you downloaded earlier. This should be something along the lines of “baseflight…”
16) Click Next
17) When the board has been reflashed, the board will go through the normal start up sequence of flashes. It shouldn’t take long, and you may miss it. Mine worked on the first try. TC says if it doesn’t, to “unplug usb, and replug”
18) Close the Flash Loader program and unplug your board.
Your board should now have the latest firmware. You should not have to update this firmware to change settings. That will be done via the GUI or via inputting code to the controller, but that will be explained in the next few steps.
We are almost there! Okay, maybe half way. If you made it this far, then you should be fine the rest of the way.
Using the GUI
I chose to use the Multiwii GUI (GUI stands for Graphical User Interface for those of you who are really computer illiterate. Hopefully by now you know what GUI is). Apparently you can use the FreeFlight software, but for ease of use, I used the Multiwii software.
If you want to, please read up on how to use the Multiwii GUI. I will post my experiences here, but there is a ton to be learned about the Multiwii GUI online. Just search for it. In the meantime, this is what I did.
You will need to download the latest Multiwii GUI from the link below. At the time I did this it was Multiwii 2.0. There was another download just above it, but the one you want is 2.0.
I am using Windows XP 32bit, so the app I used was under Multiwii 2.0/MultiwiiConf 2.0/application.windows32. This will vary depending on the operating system you use. It should be fairly straight forward. Double click on the .exe file and you will load the Multiwii GUI.
At this point you will need to be sure your quadcopter has the board installed and plugged in correctly to both the ESCs and the Rx. Also, be sure to keep the props off at this point, as the motors most likely will spin at some point in the process, without you wanting them to.
Go ahead and plug the board in to the computer via the USB cable again.
You should see on the left side of the GUI an option to select which Port you are using. This should be the same as you have been using all along. Select it and it should turn from Red to Green within a few seconds.
Make sure you have a blank airplane model selected on the transmitter, with no trims or anything. We will adjust things in a second.
Turn on your transmitter, and then your quadcopter. Notice that the quadcopter can actually be turned on at the same time that the board is being powered by the USB port. This is just fine and the difference in voltages does not matter. I don’t know why, but it doesn’t. So don’t worry.
Next, click on the “START” button that is almost in the middle of the screen. Next, click “STOP”. Not sure why, but everytime I want to use the GUI, I have to do this to get it to start communicating. Next, click on the “READ” button, just above the Start/Stop buttons. This may take a few seconds, but it should update all of the PID stuff with green boxes and numeric values, instead of 0. I would not recommend changing these values until you understand the board better. FYI, I have used the stock PID settings so far, and have not had any desire to touch them.
The way that the GUI works is that it acutally will read what the board is thinking, and display it on the screen. This is why you have the quad and your Tx powered up. You will actually be “flying” the quad, making sure everything is correct. Hence why you should not have propellers on at this point.
Go ahead and set the quad down on a flat surface. By flat, I mean flat. The flatter the better your result will be for autolevel mode. If you have to, get out a level and find a flat surface. I happened to install my own floors in our house, so I know they are level.
Next, click on the “CALIB_ACC” button. This will obviously calibrate the accelerometers, hence why the quad should be FLAT.
Click on the “CALIB_MAG” button. This will calibrate the magnetometers. You can do this with a stick combination (not sure what it is), or while connected to the GUI. In order to calibrate the mag correctly, you have to spin the copter around all 3 axis, 360 degrees, slowly for the 30 second period that the LED is blinking. I haven't bothered with this, as I don't personally have a need for Mag hold yet.
From here on out, the quad can be sitting on any surface you want. It only has to be perfectly level for calibrating the accelerometers.
Lets go ahead and set up the Arming of the board. I wanted the board to arm via a switch, and not a stick movement/combination. Thus, if you want the stick movement, you shouldn’t have to do this. If you want a switch, then do what I did. I set my switch to be Aux3, which on my x9303 transmitter is channel 7. It happens to be the 3 position switch above my right stick. This shows up as Aux2 on my radio, but Aux3 on the GUI. In order for any of the Aux channels to be used, you must have a signal cable going to your radio for that particular channel. They will immediately follow the rudder input, so they will be s5, s6, s6, etc.
With a little tinkering, you will get the hang of the GUI, but to get the board to arm on a certain switch position, you have to click on the box that relates to that switch position. For example, I set it up so the board is not armed when the switch is all the way up. This is how I like to turn on all of my models (with all switches up and away from me). I selected the “MID” and “LOW” boxes, making it so that the board arms when the switch is in the low or mid position. Kinda makes sense, right.
In order for these, or any changes in the GUI to take place, you need to click the “WRITE” button to get them to write to the board, and become active. Once doing so, you should see that when you move that switch, the green LED will come on, and the board should arm. Another way to verify it arms, is to click on “START” and flip the switch. It should turn on the green LED and it should also turn the box labeled “Arm” green.
Here is where it gets weird. If you are using a Spektrum radio like me (can’t speak for others), then you will have to adjust your travel limits on the throttle in order to get the board to arm. It won’t arm simply by telling it to. This alone took about 2 horus for me to figure out. If you look on the top right of the screen, you should see a throttle range. Be sure that you have clicked “START”, and move your throttle stick. You should see this value go up and down with the movement of the stick. The way I got mine to work was by setting my Tx to full throttle. The board is expecting a value of 2000 for full throttle. Mine read less than that, though I am not exactly sure what. Anyway, I went into “Travel Adjust” in my radio, and increased the max value until I saw it said 2000 on the screen. This related to about 126% throw on the throttle max setting. Then I lowered the throttle to minimum throttle. Here, the board is supposedly looking for 1000. I got mine to arm at 105% on the minimum throttle setting. This related to a value of I think 1097, but it still seemed to work. Anyway, adjust this value until you can get the board to arm via the flip of the switch.
Now if your quad acts the way mine did, when the board arms, all 4 motors will immediately spool up. (Hence the no propellers rule). This will happen every time your board arms, and it will be impossible to stop them, unless you disable that. You should still have a good throttle curve. I will explain how to stop the motors in a sec, but for now, a little about the GUI.
You can cee how all the systems are working via the GUI before test flying. This is done by making sure you have clicked "START" and the, for lack of a better term, squiggly lines in the lower white window are moving. The quad should sense movement, and show this movement on the screen. It will also show what features you have enabled, such as autolevel, which we will set up shortly.
We will mess with all of that at a later time, but for now, lets get those motors to stop.
For now, you can close the COM with the board in the GUI, by clicking "STOP" and then "CLOSE COM" found on the top-left side of the screen. At this point you can unplug the board from the computer and close the GUI.
Apparently you are supposed to be able to do this through Hercules, but I couldn’t get it to work. I did get it to work via Putty, however. Putty and Hercules do basically the same thing. Putty can be found here…
In the future, you will use either Putty or Hercules for a lot of your customization and adjusting, but for now we are only doing one thing, and that is getting the motors to stop with minimum throttle input, while the board is armed. This is done by enabling the feature, MOTOR_STOP.
You do this by opening a Putty session much the same way you did Hercules. You will use the same settings you did before. Click on “Session” on the left side of the window, and then “Serial” on the right side. Under “Serial Line” input the COM port you have been using. Once again, mine was COM3. Set speed to 115200 as you did before, and click “Open”.
This should open a session with the board itself.
Type the character “#”, without the quotation marks. It should say that it entered CLI mode.
At this point, type the following: “feature MOTOR_STOP” obviously without the quotation marks, and press the enter key. It should respond by saying “Enabled MOTOR_STOP”. Now type “exit” without quotation marks, and it should save and exit. You can now close the session.
At this point, you are ready to test fly the quad, unless you want to program autolevel and altitude (baro) hold first. If you want to fly now, skip ahead to “Test Flying”. If not, stick around for the next few, hopefully short steps.
Setting Up AutoLevel and Baro (Altitude) Hold
AutoLevel (AL) and Baro Hold (BH) are very easy to set up. They are set up much in the same way that you assigned the Arming function to a switch. Basically, plug the board into the computer, open the GUI, open the COM session within the GUI, click on “START”, then click “READ”. This is the process you will use to update the GUI with the current settings of the board. At least, it is what I have had to do.
At this point you can set up AL and BH by clicking on the boxes associated with the switch you plan to use it on. AL is controlled by the “LEVEL” setting, and BH is obviously “BARO”. I currently have mine set up to where the 3 position switch above my left stick on the transmitter, also known as channel 6, controls each function individually. With the switch up, no functions are enabled. With the switch in the middle position, BH is enabled. With the switch in the low position, AL is enabled. My switch is set via “Aux2” in the GUI, which is actually “Aux1” on my transmitter, but either way it was channel 6, or the s6 input on the board. You have to have a jumper cable going from the signal out on the Rx to s6 on the board in order to use channel 6. This is how all the Aux channels work in the GUI. They have to obviously be connected in order to work. Anyway, back on track, I have the “MID” box set under BARO, and the “LOW” box checked under LEVEL, and that gives me the results above. Feel free to adjust this as necessary.
I also set up my switch at the very top right of my transmitter to be both AL and BH. This is so that if I get into a crazy situation, or lose video or something while flying FPV, I can flip the switch and the quad will at least not crash immediately. Anyway, this was done via “Aux1” on the GUI, which is the “Gear” channel on my Tx, but either way, channel 5, or s5 on the board. Once again, a jumper is needed.
Hopefully by now this process makes sense. This is also how you will set up all of the other functions, like Heading Hold, GPS hold, and RTH. For now I don’t have the ability nor desire to set up any of the other functions. Give me a week or two and I am sure that will change.
My fingers are getting numb from all this typing... I wish I was more short-winded.
Alright, here is the fun part. Time to actually fly the board. This will be a relatively quick section, as it shouldn’t be too difficult to understand how to fly. However, I did want to point out that at this point you are welcome to put propellers on the quad (finally!), but please please be careful. Until you know how the board responds, be safe and don’t fly in a small confined backyard like I did. Reason being, some of my throws were backwards, and baro hold and autolevel had a mind of their own at first.
Anyway, yours may be different, but I found that my ailerons and rudder needed to be reversed. How did I find out? Well, I found out by flying with them reversed because I was too eager to check on the ground without propellers beforehand. So it’s up to you on this one. But all I had to change was rudder and aileron. Everything else was just fine. Trust me, having reversed aileron and rudder in a smaller sized back yard results in some interesting flying, to say the least. Thankfully I got it down unharmed. Barely.
I would recommend setting up one feature at a time. I thought it would be cool to have autolevel and baro hold on the same switch, and flipped it in flight, in my small backyard on my first flight.... bad idea. I will explain them each below, but basically the quad did an immediate loop about 3 feet off of the ground. Thankfully I am used to flying helicopters upside down so I flipped the switch back, and luckily it was about rightside up when I did so, so I was able to land it, once again unharmed.
My baro hold did not work at all at first. I would flip the switch and the motor would go balls out to the sky for about 15 feet, then completely kill the motors, then go back to Apollo 13 mode, then back to no throttle, all as it climbed to the moon. I found out my problem was the barometer was reading differences in pressure as wind or prop wash were traveling over the barometer. This was fixed by putting a canopy over the board. This is a canopy I had been using and is simply the bottom of a large thick plastic cup like you would get at 7-11. This fixed baro hold, and for the most part the quad will hold its altitude within about 2 feet. Every now and then it wanders out of that, but it is fairly accurate, and I am happy with it, for sure.
Trimming The Accelerometers (Autolevel)
This is necessary if when you switch to AL mode the quad drifts. Keep in mind this is Autolevel, and not position hold. Autolevel will only level the quad, not keep it in one place. That would be GPS hold. Anyway, Autolevel does need to be trimmed in order to allow it to level the quad, so it doesn't inherintly drift without the force of wind. This is done by trimming the accelerometers. Keep in mind that they need to have been calibrated through the GUI in the earlier steps.
This write up was done by machina.Thanks for writing this. I will test it out and see how it works once I can find some time with no wind.
This can be done by landing the quad, disarming and pushing the throttle stick to the top. Now your right stick and modify the trim held by the autolevel. If it drifts left, move the stick right. If it drifts back, move the stick forward. Each 'tick' will be indicated by a beep (If you installed a speaker) or LED flash from the quad. The 'ticks' are very small; I usually go 3-4 ticks per adjustment in the beginning. From there you can refine it to the point where it's one tick.
Also, do the initial trimming by switching on auto level in flight after takeoff, low to the ground. Mine was very bad initially and it would move wildly. Trying to trim autolevel by activating the auto level and then take off is very, very unpredictable.
Then it's trimmed in. ONLY do this after you have gyro only flight is trimmed in. Otherwise the two conflict with each other and your quad won't be happy.
I think that is all for now, so others, please chime in. Feel free to post questions, suggestions, errors in my setup, etc.
@ sdueck: you might also want to put a link on the manual (PDF) here:
Looks pretty useful...
|Category||Thread||Thread Starter||Forum||Replies||Last Post|
|Help!||Guide for sailplane setup & triming||Ken Smith||Sailplane Talk||6||Apr 06, 2015 06:53 AM|
|For Sale||AfroFlight Flight Controller (Naze32) Box/Container/holder Made from Delrin||Greasetattoo||Aircraft - Electric - Multirotor (FS/W)||8||Feb 14, 2014 12:03 PM|
|Help!||beginner's guide to Rhino for dummy's ?????||grover||CAD/CAM||4||Oct 16, 2011 05:56 AM|
|Help!||Walkera 4#3 easy setup guid ?||dendirk||Micro Helis||3||Mar 15, 2008 11:45 AM|
|Discussion||Tips for Red Necks (Like myself.)||Don Sims||Humor||0||Feb 11, 2002 10:53 PM|