How to update the HobbyKing QuadController firmware
The HobbyKing QuadController board retails for about $30 USD. You can save a few bucks by checking for a buddy code on the swarm page. The board forms the base of building a cheap multirotor.
By default the board comes with some version of firmware pre-configured for +Copter. The problem is, I don't know anything about the origin or version of the pre-loaded firmware. The HK manual goes into lengthy detail on how to update the firmware before it even shows how to mount and use the board so I guess it's assumed, if not recommended to update the board before use? A lot of people won't like the default + configuration and to fly in the X config, or even Tricopter config for that matter, a firmware flash is required.
As usual, the hardware and software I have doesn't match that used in the manual so of course I can't simply follow the instructions step by step. Life wasn't meant to be easy. For a start, my Atmel USB programmer wasn't the same and wasn't recognised by the software mentioned in the manual "AVR Studio 4". The programmer I bought on eBay is called a "USBASP USBISP AVR Programmer USB ATMEGA8 ATMEGA128". More info (drivers etc http://www.fischl.de/usbasp/) Now this is a 10 PIN device and of course the HK board has a six pin interface so you'll need one of these "10PIN to 6PIN ISP Adapter board for ATMEL AVRISP USBASP" to be able to plug it into the board.
The next problem to overcome is the AVR Studio 4 software not recognising my USB programming interface. This is where the "KK Multicopter Flash tool" comes in handy. Not only does it recognise my programmer, it puts a nice GUI frontend on the AVRDUDE software and automatically shows a list of compatible firmwares for the HK board. Just select the one you want and it will download it. The software author makes mention on his page that the HK board comes in a state that protects the firmware can't be overwritten and he also gives the specific command required to unlock it.
Once that's done open the Flash tool (java required), select Programmer: usbasp (USBasp, http://www.fischl.de/usbasp/), Controller: Hobbyking Quadcopter Control Board (4kB flash) and select the firmware flavour you want to use.
I had to copy the contents of the folder "...kkmulticopterflashtool_0.21\lib\avrdude\windows" to a new folder I created "C:\WinAVR\bin" because the KK Flash Tool assumes WinAVR is installed in that path.
Hit the little green running man button and away it goes. All going well it should end with a message something like "...flash verified. avrdude.exe done. Thank you."
Next step, mount it and fly.
Paris MultiWiiCopter V4.0 board
Hooking up the components of the Paris MultiWiiCopter V4.0 board is a pretty straightforward job so if I can offer any advice, take your time and make sure not to miss any pins like I did. After making a concerted effort to have neat wiring and solder joints between the Arduino Pro Mini, the Wii Motion Plus, the BMA180 accelerometer and the BMP085 Pressure sensor, I found I wasn't getting any output from the sensors in the MultiWiiConf software. After deconstructing the board sensor by sensor, I found pins A4 and A5 from the Arduino board to the Paris board had been missed so effectively they weren't connected to anything. Now those particular pins are pretty important (well I guess most pins on the Arduino are pretty important to connect) as they take the input from the sensors! They're labelled as SDA and SCL and carry all the important stuff from the gyro, accel and baro sensor as input to the Arduino.
If you're familiar with the layout of an Arduino, you can see in the photo below the two pads in question missing any connecting pins. After soldering up these pins, everything worked fine.
*August 2011- Some more info on hooking up the baro sensor (http://fangin.com/blog/2011/07/26/connecting-the-bmp085-baro-to-paris-v4/)
*9th October 2011 - Added two pictures to show the connection between the BMA180 SDI Pin (#7) to the SDA connection on the Paris board.
*23rd December 2012 - Added a picture showing that I soldered the DC Bus closed. The advantage of leaving it open is to prevent noise entering the CPU and sensor section, the downside is a seperate uBEC is required to power the ESC / Servo side.
Troubleshooting the new V4 board by connecting the output of the new WMP into the old (known working board).
How To Add Bluetooth to your MultiWiiCopter
For not much more than $10, a Bluetooth adaptor is a cheap and easy way to get in-flight real time feedback from the onboard sensors and allows quick and easy modification to PID values via the MultiWiiConf software. Here's how to do it.
-
Buy a serial to bluetooth adaptor - "Serial Bluetooth RF Transceiver Module RS232 w/ Backplane Enable & State Pin". The one from goodluckbuy.com is simple and works fine with the Arduino.
-
Connect the USB FTDI adaptor to the BT adaptor. I used my breadboard wiring leads to hook up the pins in the following order.
-
FTDI BT VCC VCC GND GND TXO RXD RXI TXD - Connect the FTDI USB Adaptor to a PC. The BT adaptor should now be powered with a blinking red led. Before using it with an Arduino running muliwii software, the baud rate of the BT adaptor has to be changed to 115200 from the default 9600. Now this is the part that stumped me for ages and sent me off looking up forums, updating bluetooth stacks etc etc until I figured out what I was doing wrong. To configure the BT adaptor, you need it physically connected to the PC via the FTDI USB adaptor but you don't want to connect the PC to the BT adaptor .... yet. The BT adaptor can only be configured when it's in an un-connected state. In your "Bluetooth Places" you should be able to see the device (by default called "Linvor") but it should show "not connected") and the red light should be flashing on the BT adaptor.
- I used Advanced Serial Port Terminal to connect to FTDI USB. The AT commands must be copy and pasted to send to the device because it constantly polls and if you can't type fast enough to complete a command before it reads it in.
- Send the "AT" command. BT responds with "OK"
- Send "AT+NAMEMultiWiiCopter" to change the default from Linvor.
- Send "AT+BAUD8" to change the Baud rate to 115200.
- Now connect to the Arduino as per the connections in the table above.
- Run the MultiWiiConf software and choose the BT COM port.
- Now you can fly around and see the gyro and accelerometer inputs change while in flight!
I found a page with quite a lot of detailed information on the BT adaptor during my searches. While it's native language looks Chinese, the Google Chrome browser seems to do a pretty good job translating it.
Quadcopter specs / parts list
The frame as shown with just the motors and plastic housing weighs 780 grams / 27.4 ounces. Maybe it's getting a bit on the heavy side with 24.5 mm aluminium frames but the aim for this one is primarily rugged and simple. If it does turn out to heavy and flight time is severely restricted, aluminium tubes half the size would do the job. Why not use them in the first place? Aesthetics was part of it as the fully enclosed 24mm frames might let me hide some wires and speed controllers to make it look more tidy.
The motors are 520mm apart which is probably the minimum separation for motors / equipment of this size - see the tips here on setting up and general rules of thumb for quads.
Parts List:
2 x CONNECT-IT Aluminium 600mm lengths: $5.81 each.
1 x 6 way joiner $2.24.
4 x End Caps: $0.49.
1 x Food container with clip on lid $3.36.
4 x 2830-14 750KV Outrunner Brushless Motor inc Mounts & prop adaptor: $9.99 each.
2 x 1 Pair 10x4.5" EPP1045 Counter Rotating Propellers: $3.49 each.
2 x New Styles 10 Pair 3.5mm Gold Plated Connector N3.5: $4.99 each.
4 x Turnigy Plush 30 Amp Speed Controller: $11.54 each
1 x warthox FPV/180_LLC - MultiWiiCopter board - v2.0 Plug-n-Play: $158