Figure 1: ArduPhantom Night Flying


The DJI Phantom has some nice air frame features: A sturdy plastic injection molded polycarbonate enclosure that keeps out light rain and resists hard impacts very well; Nice motors with simple, easy to use prop-mounts that are very unlikely to come loose in flight or get bent or broken in a crash; and very light-weight ESCs that have super bright LEDs on them for easy visual orientation at great distance, and superb night flying (Figure 1).

I also wanted a very small, lightweight, and extremely rugged FPV platform that I could carry in my backpack when I go hiking. The DJI Phantom air frame seems perfect for this, as the propellers are extremely easy and fast to remove, and once removed the rest of the aircraft can be stuffed in my backpack as is, and is sturdy enough to not worry about it being damaged during the trip.

But, since I'm a fan of ArduPilot, and like to be able to perform complex auto missions and make modifications to the code, I decided to build a DJI Phantom air frame with an APM flight controller. The result was very successful, and I encourage you to do the same, following the instructions below.  


For this build, you will need the following parts. Fortunately, the DJI replacement parts needed can all be purchased quite cheaply. My budget for this entire project was about $600.

1x DJI Phantom replacement case kit

1x DJI Phantom replacement screw kit

1x DJI Phantom connectors kit

2x DJI Phantom ESCs (green)

2x DJI Phantom ESCs (red)

4x DJI Phantom motors

2x DJI Phantom props (set of 1 CCW and 1 CW)

1x DJI Phantom landing gear

1x APM 2.5

1x 3DR Power Module

1x 3DR GPS module

Power System Wiring

First you'll need to mount the ESCs and motors in the case, and wire up the ESCs to the output side of the power module. When mounting the ESCs, be sure the green ones are at the front end of the aircraft (the battery door end), and the red ESCs in back. If you put the red ESCs in front instead, then the signal leads won't reach, because they are of different lengths.

There is not much space inside the case for a lot of wiring and connectors, so I just cut off the XT60 connector from the output side of the APM power module, and soldered the connection directly, insulating with heat shrink of course. If you plan to use an internal battery, make sure the wiring doesn't cross over the central area where the battery goes, because it will snag on the battery when you take it in or out, and it's already a fairly tight fit for the battery as is.

Also, be sure to keep all the wiring as low in the bottom of the case as possible, so the magnetic fields from high-current wires will not interfere with the autopilot's magnetometer (Figure 2).
Figure 2: Power Module and Power System Wiring

Mounting APM, GPS, and RC Receiver

At first I velcro mounted the autopilot, GPS, and receiver to a thin wood plate which I screwed on to the four screw bosses protruding from the case bottom. This held it high enough above the power wiring below to avoid magnetic interference. However, I found that this piece of wood was basically a sounding board for vibration. Even adding foam between it and the autopilot wasn't enough to reduce the vibration to a reasonable level to get good accelerometer readings (Figure 3).
Figure 3: How NOT to mount your APM

Later I found that a soft plastic cottage cheese lid made of Low-Density Polyethylene (LDPE) is a great way to mount the APM, since the soft flexible material helps to dampen vibrations (Figure 4).
Figure 4: APM mounted on LDPE food lid greatly reduces vibration

Once you get the case on you won't want to remove those 16 screws every time you need to upload the latest version of ArduCopter, or download a flight log. So you should probably make a short USB cable that permanently connects to the APM, as shown connected in figures 3 and 4 above.

LED Connection

You won't be able to see the status of the armed and GPS lock LEDs once the APM is enclosed in the case, so you'll want to connect a couple external LEDs that you can view through the tail light port on the Phantom case. Connect one LED to A4 and one to A6 (you can also connect a buzzer to A5 if you want). Signal goes to the + side of the LED, and ground to the - side. Remember to include resistors in series with each LED to drop the voltage to the proper level for the LEDs you are using (Figure 5).
Figure 5: Armed and GPS fix LEDs visible through tailight port

 You'll also need to go into Mission Planner and change the LED_MODE to 11 (the default is 9 for some reason).

Final Assembly

You can now put the top of the case on (attached with the twelve M2.5x5 and four M2.0x8 screws from your screw pack). Once you calibrate and configure everything in Mission Planner then you should be ready to bolt on the props and go fly (Figure 6)DJI phantom
Figure 6: Ready to Fly

Flight Testing

I added a GoPro, a 5.8 GHz video transmitter, and a 3DR telemetry module for some FPV flying during a Sunday hike in the mountains. Here's the results of the first test:

It flies very nicely, even in auto modes. The main issue is shakiness and vibration of the recorded video. Hopefully I can reduce that with some tuning, better camera mounting, and perhaps stiffer props.
E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • No, sorry, I haven't worked on the ArduPhantom in months. Moving on to other projects.

  • Tomorrow I will try with the stock ESC... At the moment everything seems working fine.  Did you  David solved the  ESC problem in any way? 

    Thanks a lot for the post, really helpful and well done!!


  • It's been a big problem for me with the DJI Phantom ESCs. It's impossible to get them to all start/stop spinning together at the same PWM threshold. Which makes it easy to flop over on takeoff or landing.

  • I didnt use original DJI ESC. I got the set of Opera ESC with Simon K from ready to fly quads.

  • Did you guys had any problem with the ESC calibration?

  • Just completed my ArduPhantom Build with a PixHawk. I call it the Phantom Hawk...

    I utilized parts from ReadytoFlyQuads.com. Great products at great prices. 


  • Edit. I had a typo in my last posting,

    Its a Phantom 2 (not 3)

  • In case its of use to anyone else considering converting a DJI Phantom 3 to APM (or PixHawk etc), I've figured out how to control the LEDs that are under each arm (driven by the ESC board).

    Each ESC has 4 wires going to it.  Three are orange and 1 is Brown

    The layout is Orange, Brown, Orange, Orange  (I'm assuming that the little white dot next to the connector indicates pin 1, but I can't be sure.

    Anyway, the first Orange wire carries 1KHz PWM that controls the LED's (the other two orange seem to both have 500Hz PWM to control the motor speed).

    Note. The voltage of the PWM is 3.3V not 5V for the LED. (I'm not sure if it works at 5V I didn't like to risk blowing anything up ;-)

    Anyway, I hooked up an Ardruino Uno's PWM output via a resistor divider network to give PWM at 3.3V and it appears that the LED colour is set by the pulse width of the incoming PWM.

    It doesn't seem to matter if the PWM frequency is 1KHz or 500Hz etc, its just the pulse width that is important.

    Here are the pulse widths required to activate each colour

    Red   180uS (micro seconds)

    Green 280uS

    Yellow 380uS

    These values are approximately in the middle of acceptable pulse width bands, i.e Red seems to operate from around 160uS to 200uS

    Green from 260uS to 300uS

    Yellow from 360us to 400uS

    So I guess my next step is to customize the ArduCopter code to use one of the PWM outputs e.g. Output 8, to control these LEDS.

    Perhaps some clever person could point me in the right direction about how to do a custom build to output the status LED(s) etc or possibly other internal status via the PWM output 8

    Thanks ;-)

  • Hi Roger, thanks for the info. the reason i ask is this post:


    I want to add an ultrasonic sensor that looks down permanently and then operate the flight at a specific height / program a route. The inbuilt altitude sensor only has an accuracy of 0.8 m.

    It would be tremendous to see your solution with the added ardupilot. If i got you right there is more than just the sbus converter to change / add.

  • Max

    AFIK. This guide is for the Phantom 1. I'm currently converting my Phantom 2 to APM, but there are some differences

    The main one is that the Phantom 2 receiver outputs SBUS protocol not PPM (on the Phantom 1), so you need a converter is you intend to use the Phantom 2's original receiver.

    (I made one, but there is an FrSKy SBUS to PPM that you can buy)

    I can't comment on ultrasonic

This reply was deleted.