When Summer 2022 started, some friends and I decided it would be cool to build our own quadcopter drones. Eventually, we'd like to hook up FPV cameras, GPS units, and some other fun gizmos so that we can do cool stuff like FPV racing, autonomous path following with GPS, and smart object detection and wayfinding using computer vision. Unfortunately we decided to build everything from scratch, and we all work full time and go to school, so progress is verrryyy slow 😃. We appreaciate any and all help, and once we get in the air we will make sure to include writeups so others can learn from our mistakes!
Much of the transmitter code is extended from akarsh98 on GitHub and this guide on PPM via Arduino. Thanks akarsh and Pawel!
This repo contains wiring diagrams and PCB designs for physically constructing a quadcopter drone, as well as the code that runs the various components.
For an architectural overview, check out the most recent diagram on Figma or the printout in Diagrams/Architecture.png
.
Below are explanations on each of the sub-folders and what they are for, and you can find a README in each folder with more details:
Folder | Description |
---|---|
Arduino-ISP |
Copied from Arduino IDE built-in example 11. Allows an Uno to program a Nano over ISP |
Wiring-Diagrams |
PCB designs and board pinouts for transceiver, flight controller, etc for KiCad 6.0. Includes KiCad files for MPU breakout board. |
Hardware-Tests |
Various programs for verifying that individual electronic components are working |
MultiWii |
Flight control software from MultiWii.com |
MultiWiiConf |
Configuration GUI for MultiWii |
Transceiver |
Instructions for using pair of Arduino as radio transmitter to drone |
Here is a list of parts that I am using as well as links to buy them. I bought generic versions of everything but you can find authentic versions by searching online. They will cost more but work much reliably, and also potentially this will fix the hardware issue between Arduino Nano and nRF24 (see #12).
If you are like me, you really hate the default Arduino IDE and you would rather use VS Code. To do this:
- Install the Arduino VS Code extension
- Choose AVR programmer and Arduino Nano board
- In
c_cpp_properties.json
, updatecompilerPath
,includePath
, andforcedInclude
so your machine's section matches that of the Arduino (basically tell intellisense to use the Arduino's compiler) - Add
USBCON
todefines
inc_cpp_properties.json
- If you need 3rd-party libraries, put them in
src
in the root of this repo and symlinksrc
in your code root folder to it (Arduino compiler should recognize thesrc
folder automatically)
- https://create.arduino.cc/projecthub/akarsh98/diy-arduino-based-quadcopter-drone-948153
- https://www.hackster.io/robocircuits/arduino-quadcopter-e618c6
- https://howtomechatronics.com/projects/diy-arduino-rc-transmitter/
- https://www.modelflight.com.au/blog/a-guide-to-understanding-lipo-batteries
- https://www.instructables.com/DJi-F450-Quadcopter-How-to-Build-Home-Built/
- http://www.rctutor.org/the-parts-list.html
- Read-only Amazon link for parts
- PPM communication via Arduino