Arduino Drone With GPS

We set out to build an Arduino-controlled and stabilized, GPS-enabled first-person-view (FPV) quadcopter drone with return to home, go to coordinate, and GPS hold functions. We naively assumed that combining existing Arduino programs and wiring for a quadcopter without GPS with those of a GPS transmission system would be relatively straightforward and that we could quickly move on to more complex programming tasks. However, a surprising amount had to change in order to mesh these two projects, and thus we ended up making a GPS-enabled FPV quadcopter, without any of the added functionality.
We have included instructions on how to replicate our product if you are happy with the more limited quadcopter.
We have also included all the steps we took on the way to a more autonomous quadcopter. If you feel comfortable digging deep into Arduino or already have a lot of Arduino experience and would like to take our stopping point as a jumping-off point for your own exploration, then this Instructable is also for you.
This a great project to learn something about building and coding for Arduino no matter how much experience you have. Also, you will hopefully walk away with a drone.
The setup is as follows:
In the materials list, parts with no asterisk are required for both goals.
Parts with one asterisk are required only for the unfinished project of a more autonomous quadcopter.
Parts with two asterisks are required only for the more limited quadcopter.
Steps common to both projects have no marker after the title
Steps only required for the more limited non-autonomous quadcopter have “(Uno)” after the title.
Steps only required for the in-progress autonomous quadcopter have “(Mega)” after the title.
To build the Uno-based quad, follow steps in order, skipping any steps with “(Mega)” after the title.
To work on the Mega-based quad, follow steps in order, skipping any steps with “(Uno)” after the title.”

Link