Skip to content
Charlie Steenhagen edited this page Mar 14, 2018 · 9 revisions

Heimdall Mark I

This project started many years ago when I first got into programming, at a competition called HackISU. My friend and I attempted to make a Raspberry Pi quadcopter that was controlled through bluetooth by a PS3 controller. We were new to programming, so we didn't implement a PID algorithm or even use a gyroscope to keep the copter level, so needless to say, it ended poorly. That was years ago, and since then I have gained enough experience to take another crack at it.

Goal

My goal for this version, was to not only construct the quadcopter from scratch, but the remote controller as well. I wanted the quadcopter to be controlled with radio signals, and to also have a camera attached to broadcast real-time video. Also, I wanted the controller to be able to send those radio signals to the quadcopter, as well as receive the video stream and display it on an integrated 7 inch display.

For the quad, I decided to use an Arduino to act as the flight controller, that was connected to an NRF24L01 radio module to receive commands from the remote. I used an MPU6050 gyroscope to track yaw, pitch and roll, which was fed into a modified MultiWii flight control Arduino program. I modified the MultiWii program to use my custom radio commands being sent from the controller. MultiWii uses a PID algorithm to ensure the drone smoothly adjusts its orientation. Once each motors thrust had been calculated, the Arduino would tell the ESC's what to set each motor to. I plan to add in a magnetometer and barometer to implement position and altitude hold, as well as telemetry data via the MavLink protocol.

The remote for this project was the part that I really wanted to get right. I wanted the controller to be intuitive and comfortable to hold, while also having a screen (preferably touchscreen) that would display real-time video playback from the drone. A friend of mine had recently completed a DIY Nintendo Emulator that looked like the Nintendo Switch, so I used the case he designed for that project and had it 3d printed by another friend. Integrated into the controller, is a Raspberry Pi that receives and displays the FPV stream, an NRF24L01 radio module to send the signals to the drone, and a 7in display to actually show the video. An Arduino Nano is also stuffed inside the controller to register button pushes and joystick input, before sending them to the drone via the radio module.

For the FPV system on this drone, I used the EZ-Wifibroadcast Raspberry Pi image along with the RPi camera and official display. EZ-Wifibroadcast uses USB wifi modules to transmit the video signals from one Pi to another Pi. The Pi with the camera is automatically configured to transmit, while the other Pi automatically receives and displays the video. There is some latency in this type of system, but that is not something I was too worried about. In the end, the drone broadcast the video over wifi to the controller which displayed it on the built in 7 inch display.

Finished product

Review

Clone this wiki locally