Recommended PID’s for F330 Quadcopter Frame

The quadcopter that I flown were using stock PID’s as uploaded from the firmware through Mission Planner. However if you are keen to use a good set of PID values for a start, this link shall probably help you together with the setups.

In short, the paragraph that contain the values that you are looking for are quoted as below:

A good set of starting PIDs for flying the FlameWheel F330 in Stabilize Mode(as of ArduCopter version 2.9.1) are: Rate (Roll & Pitch) P = .09 and I = .045 and Stabilize (Roll & Pitch) P = 4.0

Stock PID's
Stock PID’s
F330 PID's
F330 PID’s

Migrated to Linode, Ubuntu 13.04 upgrade: php mkdir failed problem solved

I’m migrating my blog to my Linode VPS from a shared hosting. While most of the tutorials are very good, especially this part, I was struggling to install wordpress plugin, or any actions that require php to create directory.

It turns out that although the permissions, owner and group are all correct, in which pointed to the myusername, I still could not make my php to create directory to save its life. Until I found this in stackoverflow.

Basically what solved my problem was:
1. sudo nano /etc/apache2/envvars
2. Look for export APACHE_RUN_USER=www-data and export APACHE_RUN_GROUP=www-data
3. Change it to APACHE_RUN_USER=myusername and export APACHE_RUN_GROUP=myusername
4. Save and quit
5. Restart apache

Now I can enjoy my nice Linode VPS happily.

Updating Ubuntu Server via SSH

If you’re having a web server running on top of ubuntu, the update is easy.
In SSH, you’ll see something like this:

45 packages can be updated.
23 updates are security updates.

Simply type:

sudo apt-get dist-upgrade

It will request your password. Once you key in your password, your ubuntu installation shall be updated.

Configurations for DJI 450 Flame Wheel or its Equivalent


Below are some rough configuration of DJI 450 Flame Wheel or its equivalent. The configuration served as a starting point if you are intending to build your quad from scratch. Link via Dji Wiki.

Flame Wheel F450 Specifications

Frame Parameters

Frame Weight:282g
Diagonal Wheelbase:450mm
Takeoff Weight:800g ~ 1200g
Recommended Propeller:10 × 3.8in ; 8 × 4.5in
Recommended Battery:3S~4S LiPo
Recommended Motor:2212 ~ 2216 (Stator size)
Recommended ESC:15 A ~ 25A
Recommended ESC


Stator size: 22 x 12mm
KV: 920 rpm/V
Current: 30A OPTO
Signal Frequency: 30Hz – 450Hz
Battery: 3S ~ 4S LiPo


The use of special material can effectively avoid broken propellers.
Size: 10 x 3.8mm in; 8 x 4.5mm in

Design and 3D Print of Eppendorf Test Tube Rack

Last 2 weeks ago I manage to spend some time designing an Eppendorf test tube rack. This particular rack are common in medical sciences lab, in which my wife is working in. Well, I personally never seen the rack, but my engineering sense told me just take the test tube work my way up, this is called bottom up approach in design.


In her lab, the test tube rack is somewhat an asset, therefore everybody needs to sign in and wait for turns to use it. I recognize this as a problem, therefore I took an initiative to design and manufacture a tube test rack for her. I began with measuring the test tube using micrometer as shown below.


My wife requested that the test tube rack should be able to store 4 x 5 test tube. So using the measured value, I pop my favourite CAD software (ProE) and began designing the rack. I took Mac Mini design as an inspiration. See figure below.


Next, the model were saved as .stl and sent to MakerWare as shown below. The .stl file were later processed as g-code and saved in an SD card.


Quick! Head to the bat-3D printer, Robin!

The final form is shown below, victory!


Flight Log: Testing APM 2.0 Autopilot Mode Successful (Take off and RTL)

In today’s test, I patiently waited for the GPS to lock under nice weather condition.
No more initial manual flight, in which once the GPS locked, the quadcopter were brought to the middle of the field and binded to my Devo 7 transmitter. The waypoint definition can be seen below, in which I would like the quadcopter to fly up to 6 meters, and initiate return to launch (RTL).

quadcopter UMT

My student and I went to a safe distance. I initiated 5% throttle, and flipped the autopilot switch. The quadcopter steadily hovered up to approximately 6 meters (I could not confirm this because I didn’t install the telemetry, the APM 2.0 did not like it). The quad was pushed by wind and it tried it best to land by searching for the launching coordinate to no avail. Before it hits the building, I regained manual control and landed it safely.

On the second try, the quad steadily flies up to approximately 6 meters, stayed for 3 seconds and landed safely on the initial coordinate. This means victory! To confirm that the quadcopter landed not because of the weak battery, I regained manual control and flied the machine. The quadcopter flied successfully indicating that the autopilot mode was working just fine.

The question is, should I reduce the waypoint radius? The current one is 30 meters. Should the waypoint radius reduce the hover of the quad and make it easier for it to land?

Testing DFRobot APC220 Radio Communication Module with Arduino Blink Example

I got my hands on the APC 220 Communication Module from DFRobot for our robotic fish project [1] .

In this test, I use the LED Blink example, modded to include the serial port reading. While in the LED Blink example, you can just hook the positive point of LED to Pin 13 and its negative point to ground (GND), while the additional connections for the APC 220 module are as below:

APC220 Arduino connection

As shown in the figure, the connections are simple since I just wanted to perform a simple test to see whether the module is working fine:

APC 220 Arduino Blink

Below are the codes. You are free to change the serial baud number, I used 57600. Once the codes were uploaded to your Arduino board,

  1. connect everything,
  2. pop in the Serial Monitor on your Arduino IDE console,
  3. choose the respective baud (mine is 57600),
  4. send capital H to the console, observe the LED is turned on,
  5. send other character e.g. i to the console, observe the LED is turned off.

Happy coding!

// Modified from Arduino Playground tutorial:
char val; // variable to receive data from the serial port
int ledpin = 13; // LED connected to pin 13 (on-board LED)

void setup() {
  pinMode(ledpin, OUTPUT);  // pin 13 (built-in LED) as OUTPUT
  Serial.begin(57600);       // start serial communication at 57600bps 
void loop() {
  if( Serial.available() )       // if data is available to read
    val =;         // read it and store it in 'val'
  if( val == 'H' )               // if 'H' was received
    digitalWrite(ledpin, HIGH);  // turn ON the LED
  } else { 
    digitalWrite(ledpin, LOW);   // otherwise turn it OFF
  delay(100);                    // wait 100ms for next reading

[1] I have established a research group named Marine Robotics Research Group. Someday I’ll make some write up for it.

Flight Log: First test of the autopilot.

Today is the first day of testing the autopilot using APM 2.0 board. Although I had the APM 2.5, it suddenly cease to work. Perhaps something is wrong with the diode. For today’s test, I would like to have the quadcopter lock the GPS, take-off up to 6 metres and return to launch (RTL). The settings of the waypoint definitions are as in figure below:

Mission Planner Definitions

I have made some mistakes prior to the launch of the autopilot. Firstly, since we are approaching monsoon season, the situation here is very windy. The first and second manual flight was OK, however the third manual flight, the quadcopter crashed on the grass.

Now, after the third flight, I tested the autopilot. First I gave 5% of throttle (autopilot won’t work without initial manual throttle) and I flipped the autopilot switch on my Devo 7 transmitter. The quadcopter instantly flies to 6 metres high and being pushed by wind (or maybe the gyro calibration went berserk due to the initial crash?) to the other side of the field. The quad tried to compensate that, howewer I made a mistake of turning off the autopilot to regain control. Lack of throttle made the quad turn up side down and fell on its back.

Further inspection showed that the frame was OK, electronics are all good, however two of the props were bent due to the crash (see figure below). Observing the Mission Planner, it shows that the gyro settings were very badly off.

Moral of the story are:

  1. When testing the autopilot for the first time, make sure to operate in the most appropriate whether. Avoid flying in windy days.
  2. When regaining manual control, approximate the amount of throttle that needs to be given in order to stabilize the quadcopter.
  3.  Having a telemetry is a good idea.
  4. Having a FPV is also a good idea.

Broken Quadcopter Prop

I bought a Flashforge Creator 3D Printer

I ordered a Flashforge Creator 3D printer on 30th Jun 2013 from AliExpress. The item was safely arrived from mainland China by FedEX on the 4th July. Pretty quick, and I’m very happy to report that the machine is doing very well!


As usual, I started off by calibrating the build platform. The Creator model was derived from Makerbot Replicator, therefore the LCD interface shows the similar guide on leveling the platform step by step.

Once done, I printed the calibration box that came together inside of the SD Card. The current model has a heated bed platform, therefore it is a good idea to print the model with raft support to ensure that the printed item stick on the platform well.


Flashforge Creator is much better than the Mbot3D printer. Creator operates much quiter, the filament guide is more well thought for and it comes with heated bed platform. The price is much cheaper than the Mbot3D as well, that might be depending on which model that you are getting. My Mbot3D is a dual extruder model (which I got wrong on more extruder is better, you’ll be happy with one, trust me) that cost me $1k++ with shipping, and the Creator is a single extruder with heated bed platform that cost me $800++ with shipping.

As for me, I think that I’m going to stick with Flashforge Creator 3D printer for a while. However I’m still having fun with the no-heat bed platform on my Mbot3D. So the journey continues…