Ok, so here’s a break-down of what aspects there are to this project, as well as a (preliminary) component list.
Of course, the main aspect of this project is programming: I need to turn the arduino into a fully functional flight controller. I’ll do a separate break-down on the code aspect of things.
So, the first part is going to be to design and 3D-print a physical frame for the drone. The reason that I’m going to 3D-print it is that I know from experience that it works very well for drones, being light and strong, and I have experience in CAD design and the manufacturing process for 3D-printing. Of course, I also have a 3D printer, which could help.
The design will depend largely on the size and arrangement of the components, but it should be in an enclosed box because the barometer (which tells us the altitude) is light and wind sensitive. Additionally, it will look much cleaner and nicer if all of the electronics are hidden.
This will mean that I’m going to have to have external LEDs to show the status of the flight controller. I’ll work out exactly how they’ll be attached later, but I expect that I’ll design insets for them into the CAD and just glue/tape them on.
Now, of course, I need all of the actual parts to allow it to fly. That means motors, propellers, electronic speed controllers (ESCs: these actually power the motors). In addition I’ll need an RC transmitter and receiver to allow communication with the drone. These are all parts that I’m going to need to use, just because it would be very complicated to try and design my own versions of them. Plus, all projects rely on some existing parts.
Obviously then I need an arduino microcontroller. The Arduino Uno seems like the best option, as it is most widely used and I already have a couple, but having had a look around I quite like the look of the Arduino Micro, a miniature version of the arduino. It has 20 Digital I/O pins and most other specs are the same as the Uno: apart from it’s size, of course. I think a smaller board suits this application more, and so I am (probably) going to go with the Micro.
The flight control algorithms can’t do much without the help of a few sensors to tell the processor info like the altitude, orientation and attitude of the drone. (The processor then adjusts the motor outputs based on the RC inputs to compensate.) So I had a look around, and settled on this little board. It’s got the following sensors embedded on it:
- Accelerometer – This measures lateral acceleration, and thus the direction of gravity
- Gyroscope – Measures rotational velocity, which can be integrated to get an orientation
- Magnetometer – Compass: tells us the board’s orientation in relation to the Earth’s magnetic field
- Barometer – Altimeter: by measuring the air pressure, we get a rough altitude
This is everything I need to be able to very accurately gauge the exact orientation, attitude and altitude of the drone. The board doesn’t give me these values itself, so I’ll need to do some programming trickery to turn all the sensor data into these measurements, but that can be done.
Finally, I’ll need a battery (probably a 3 cell LiPo), a charger and quite a few wires to connect everything up.
Next up, my price list for all these components.