Yet Another Drone - the Flowerfly Singlecopter
by Guenter1958 in Circuits > Remote Control
12712 Views, 176 Favorites, 0 Comments
Yet Another Drone - the Flowerfly Singlecopter
Singlecopters are still a rare species in the zoo of drones, so they gain public attraction wherever they appear.
Singlecopter means that a single propeller does all the work of lifting and steering a drone. Steering is accomplished by moving wings that redirect the airflow sideways to perform the desired maneuvers.
In this instructable, we will build such a singlecopter from scratch. As a specialty, this copter contains only 3 servos to control the roll/pitch/yaw movements instead of the usual 4.
The total weight of the drone is 689 g. Achievable flight times are about six minutes. No problems with vibration or gyro precession were observed.
As flight controller we use a Navio2 from Emlid. It works with the popular Ardupilot autopilot system and even has ROS (Robot Operating System) built in, which runs on the built-in Raspberry Pi OS.
It takes about a weekend to assemble and fly this drone. If you already have some basic knowledge of mechatronics, then you're definitely a champion for this project.
Supplies
1. Essential Parts:
1x Raspberry Pi 4 Model B 8 GB
1x Emlid Navio2
1x Racerstar BR2508S Fire edition 2522KV brushless motor
1x Gemfan Flash 7040 3-blade propeller, 2 pairs
4x Emax ES9051 digital mini servo
1x Flysky FS-A8S 2.4G 8CH mini RC receiver
1x Hobbywing FlyFun V5 30A mini ESC speed controller
1x Holybro 433 MHz 915 MHz 500 mW transceiver radio telemetry set
1x Dogcom 14.8V 1350mAh 150C 4S LiPo battery
1x Battery tie down strap, 10 pcs.
1x M3 x 100 mm Stainless steel fully threaded rod, 20 pcs.
2x Fibreglass rod 200 mm, Ø 3.0 mm, 5 pcs.
1x Acrylic hemisphere with brim, Ø 20 cm (alternatively, you could print this part)
1x M3 M4 M5 Hex socket cap head self tapping screw set, 500 pcs.
1x Hex nuts assortment, 385 pcs.
1x Raspberry Pi standoffs, bolts & nuts
Total costs for essential parts are approx. 700,- €/$ as of April 2024
2. Optional parts for GPS:
1x Emlid Navio2 GPS/GNSS antenna
1x Folding GPS mount support holder
1x Mini CD for antenna shielding
Total costs for GPS are approx. 30,- €/$ as of April 2024
3. Optional parts for camera:
1x Raspberry Pi camera module 2
1x Raspberry Pi camera and display cable, 260mm, 4 pcs.
Total costs for camera are approx. 40,- €/$ as of April 2024
4. Auxiliary materials needed, which you may already have in your workshop:
1x XT60 500V 30A male & female bullet connectors, 2 pcs.
1x Dupont wire cables, 120 pcs.
1x Cable zip ties in various sizes, especially small ones, 1000 pcs.
1x Radio transmitter for RC drone
Total costs for auxiliary materials are approx. 300,- €/$ as of April 2024
3D Printing of the Structural Parts
Download the STL printing files at the end of this chapter.
If you're interested in the original CAD file (Autodesk 3ds Max format), you can download it from Thingiverse.com.
The parts are printed using a 3D FFF printer, which should have a minimum print area size of 250x250 mm (9.9x9.9").
Standard PLA is sufficient as print material. Infill = 30%, print accuracy = 0,2 mm. Everything can be printed without support.
Mechanical Assembly
2.1 First, the crown-shaped ring is screwed into the center of the main frame using 3 pcs. M1.7x6 micro screws.
2.2 Next, snap the 18 vanes into the main frame. Then connect 6 vanes each, using the vane connectors and M1.7x5 micro screws.
2.3 Now we have 3 groups of 6 vanes each. Screw the 3 servos on the main frame and on the vane connectors, as shown in the photo. If you'll use the camera, screw a 4th servo on the main frame, as shown in the photos.
2.4 Take 3 pcs. M3 threaded pins, and screw a printed foot part and a M3 screw nut on each of them. The distance between the foot surface and screw nut should be 37 mm (1,46").
2.5 Cut 6 of the glass fiber rods into 180 mm (7.1") long pieces.
2.6 Use 3 of the rods to connect the foot parts together to form a triangle, as shown in the photo.
2.7 The duct can be produced in 2 alternative ways:
1. Print it out using the included STL-file.
2. Buy an acrylic hemisphere with brim as stated in chapter Step 1 above, and cut it down to a height of 25 mm (1"). Mark the position of the 3 mounting holes on the brim using the main frame, and drill 3 mm (0.12") holes. This alternative is more elaborate, but the result looks significantly cooler.
2.8 Put the threaded pins through the main frame, and then through the duct. Screw 3 flange nuts tightly onto the threaded pins.
2.9 Next we will mount the brushless motor to the X-shaped upper part of the drone.
First stick the remaining 3 glass fiber rods into the designated holes in the X-shaped part to improve its mechanical strength.
Then weld 3 male banana plugs on the motor cables and insulate them with heat shrink tubing.
The motor gets warm during flight, so we need to insulate it thermally from the PLA frame, to prevent the PLA from soften.
Therefore, please find a small PCB (printed circuit board) in your fundus, and cut out a shape with a fret saw using the template in the attached PDF-file at the end of this chapter.
Now screw the motor and the PCB part tightly on the upper X-shaped frame part, ensuring that the copper side of the PCB points toward the motor. Make sure that the motor cables are oriented correctly towards the X-shaped frame part, as shown in the photo.
Finally screw the propeller onto the motor. Be sure to correctly orientate the propeller. It doesn't matter if the propeller will rotate clockwise or counter-clockwise, but in any case assure that the air flow goes downwards.
2.10 Next we will mount the electonics onto the circularly shaped upper part.
The photo shows a possible arrangement of the electronic parts. Please note that the plastic housing of the modem antenna has been removed to save some space and weight. Use cable zip ties to fasten the parts.
2.11 Mount 4 pcs. M2.5X16+5 standoffs with 4 pcs. M2.5 screws onto the circular part. Place the Raspberry Pi on top of the standoffs and use the 4 standoffs provided with the Navio2 to fasten it.
If you'll use the camera, connect the 15-pin camera cable to the Raspberry Pi as shown in the photo. It is important that you shield the camera cable first. I've done this by wrapping thin aluminium foil tape around the whole cable, and then wrap insulation tape around the aluminium tape. It's not necessary to electrically ground the aluminium shield.
2.12 Mount the Navio2 board on top of the Raspberry Pi and fasten it using 4 pcs. M2.5X11+5 standoffs.
If you'll use GPS, plug in the GPS cable as shown in the photo. Please note how the GPS cable fixes the position of the recommended sponge on the barometer.
You can find additional Navio2 installation instructions here.
2.13 Now we prepare the printed out battery holder.
Thread the battery tie-down-strap through the designated slots of the battery holder. Wrap the Navio2 power module around the battery holder as shown in the photo and fasten it with 2 cable zip ties. Please complete the GPS installation process described in chapter Step 5, before you finally mount the battery holder on the upper part using 4 pcs. M2.5 screws.
2.14 Screw the circular and X-shaped parts together with 3 pcs. M3 nuts and bolts. Ensure the correct orientation of the parts, as shown in the photo.
2.15 Now we mount the upper part onto the main frame.
First screw 3 pcs. M3 nuts on the threaded pins, then insert the upper part into the threaded pins. Finally screw the parts together using 3 pcs. nylon lock nuts.
Downloads
Wiring
Wiring is pretty straightforward. Please refer to the enclosed wiring diagram and photos for details. However, all servo cables need to be extended with Dupont connections to reach the appropriate pins on the Navio2.
Software
1. Software installation
Installation of the software is quite easy. First, download the 1.22 GB ZIP-file from here.
Next, we need to write this ZIP-file to the SD-card. To accomplish this, please download and install a utility called Raspberry Pi Imager from here.
Start the Raspberry Pi Imager and click on CHOOSE OS, as shown in the screenshot. Select the Use Custom menu item, and then select the ZIP-file.
Next click on CHOOSE STORAGE and select your SD-card, which you've previously plugged into your PC.
Now click on the Advanced Options gear-wheel-button in the bottom right corner, and make the settings as shown in the 2 screenshots.
Click on SAVE, then click on WRITE.
Eject the SD-card from your PC and plug it into the Raspberry Pi.
2. Setup SSH-connection
Now we will configure a SSH-connection (SSH = Secure SHell) from your Windows PC to the Raspberry Pi. With SSH you can access all Raspberry Pi OS features via a console window on your PC.
Connect the Raspberry Pi to the same network as your PC using an Ethernet cable, then connect the power supply to the Raspberry Pi.
In MS Windows, start a console window by executing the following command:
cmd.exe
Enter the following command:
SSH pi@navio
Answer yes to the question Are you sure you want to continue connecting?.
When prompted:
pi@navio's password:
type in the standard password raspberry.
If everything went OK you should now see the following input prompt:
pi@navio:~ $
You are now logged into the Raspberry Pi OS, which is basically a Debian Linux distribution.
Now you have to tell Raspberry Pi the IP-address of your PC, so that Mission Planner can connect to Raspberry Pi via UDP later on.
You can find out the IP-address of your PC by opening a new console window with
cmd.exe
and entering
ipconfig
Now find this line:
IPv4-Adress . . . . . . . . . . : 192.168.1.132
There you can see the IP-address, in the example above it's 192.168.1.132. You can close this console window now.
In the Raspberry Pi console window, input the following command:
sudo nano /etc/default/arducopter
Find line #4, which looks like this:
TELEM1="-A udp:192.168.1.132:14550"
Exchange the IP-address 192.168.1.132 with the IP-address of your PC.
Then press CTRL-O, Enter and CTRL-X to save the changes and exit.
3. Setup Wifi
Wifi connection has to be set up manually. SSH into the Raspberry Pi as described above. Then type in the following command:
sudo nano /boot/wpa_supplicant.conf
Now find the following lines:
network={
ssid="yourssid"
psk="yourpasskey"
key_mgmt=WPA-PSK
}
Replace yourssid with the name of your Wifi network, and yourpasskey with the password of your Wifi network. Leave the quotes "" unchanged.
Then press CTRL-O, Enter and CTRL-X to save the changes and exit.
You have to restart the Raspberry Pi to apply these changes.
4. Software update
Once per fortnight you should SSH into the Raspberry Pi and execute the following command:
sudo apt-get update && sudo apt-get dist-upgrade
This command updates the Raspberry Pi OS.
If you are finished, type
sudo shutdown now
to shut down the Raspberry Pi OS properly, and then disconnect its power supply.
5. Mission Planner
In Mission Planner, please adjust the settings of servos #1-3 in the menu Initial Setup → Mandatory Hardware → Servo Output. Adjust the Trim-values so that all vanes point exactly vertically down, then set the Min-values to [Trim-value - 400] and the Max-values to [Trim-value + 400]. Please refer to the attached screenshot as an example for these settings.
You are now ready to fly, all necessary Ardupilot parameters have already been adjusted. Please refer to the attached Mission Planner Settings PDF-file at the end of this chapter, where all Ardupilot parameter changes are listed.
This drone has an unconventional setup with only 3 vane servos instead of the usual 4 ones. This configuration is not yet available in the Ardupilot flight controller software (as of Jan. 2023). Therefore we use a special Ardupilot version based on v4.2.3, which contains the necessary changes. If you are interested in the changes being made, you can find them documented here.
6. Further software features
Please also refer to the Navio2 documentation here, where you can find in-depth descriptions of further features, like the usage of the integrated ROS (Robot Operating System).
Downloads
GPS
The GPS antenna needs to be shielded against radiation coming from the drone electronics below. I've used a mini-CD, which has a diameter of 8 cm (3.15"), covered it with aluminium foil tape, and finally stuck the GPS antenna onto the aluminium foil.
The GPS mount support holder is screwed into the provided holes on the circular upper part of the drone, and finally the mini-CD is stuck on top of the holder, as shown in the photo.
Camera
Print the Flowerfly Camera Case STL-file which is attached at the end of this chapter.
We use the standard Raspberry Pi camera module V2, which is a light-weight daylight camera with 8MP/1080p. Specifications can be found here.
1. Mechanical assembly
6.1 Print out the camera case, which consists of two parts that could be snapped together.
6.2 Attach the 15-pin camera cable to the camera module, then put the camera into the camera case parts and snap them together.
6.3 Finally mount the camera case onto the camera servo on the main frame using 2 pcs. M1.7x5 micro screws, as shown in the photo.
It is very important that you mount a shield around the camera cable, in order to avoid nasty video artifacts. Wrap a thin aluminium adhesive tape around the whole insulation of the cable. Then cover the aluminium tape by wrapping a layer of insulating tape around it. There is no need to ground this shield.
2. Servo configuration
On Navio2 we use PWM10 (= digital pin #9) for controlling the camera servo.
On your RC transmitter, assign a slider control to RC channel 8.
3. Software configuration
The media-handling library GStreamer is already preinstalled in the Raspberry Pi OS, therefore we'll use this software to access the camera. You can choose between saving videos on the Raspberry Pi (= easy), or streaming videos to your Ground Control Station (= advanced).
3.a. Saving videos on the Raspberry Pi (= easy)
The easiest way to take videos is to store them on the Raspberry Pi SD-card. In this case no additional software installations are necessary. Follow this procedure:
- Connect your Ground Control Station and the Raspberry Pi to the same network. In the field I use my smartphone as a hotspot for this.
- In MS Windows, start a console window by executing the following command:
cmd.exe
- Enter the following command:
SSH pi@navio
- and type in your password (standard password is raspberry).
- Now type in the following command, which starts the video recording process:
gst-launch-1.0 -e v4l2src device=/dev/video0 ! video/x-raw,width=1280, height=720, framerate=30/1 ! v4l2h264enc extra-controls="controls, h264_profile=4, video_bitrate=620000" ! 'video/x-h264, profile=high, level=(string)4' ! h264parse ! mp4mux ! filesink location=video.mp4
- Now perform your flight. Take care to not lose the Wifi connection to the drone!
- After landing, hit Ctrl-C on your keyboard. Don't forget this, because this stops the video recording and the video is saved to the following path:
/home/pi/video.mp4
3.b. Streaming videos to your Ground Control Station (= advanced)
- Download GStreamer from here and install it on your Ground Control Station. On MS Windows only use this installation path:
C:\gstreamer
Otherwise DLL-files will not be found. Follow this procedure:
- Connect your Ground Control Station and the Raspberry Pi to the same network. In the field I use my smartphone as a hotspot for this.
- In MS Windows, start a console window by executing the following command:
cmd.exe
- Enter the following command:
SSH pi@navio
- and type in your password (standard password is raspberry).
- Now type in the following command, which starts the video streaming process on the Raspberry Pi. Replace <IP address> with the IP address of your Ground Control Station:
raspivid -n -w 1280 -h 720 -b 1000000 -fps 15 -t 0 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=10 pt=96 ! udpsink host=<IP address> port=9000
- In MS Windows, start another console window by executing the following command:
cmd.exe
- and enter the following 2 commands:
CD C:\gstreamer\1.0\msvc_x86_64\bin
gst-launch-1.0 -v udpsrc port=9000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264" ! rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=f
- Now the Ground Control Station listens for a video stream. Video display starts automatically, as soon as a video stream is detected.
Downloads
Balancing
Sufficient balancing of singlecopters is of utmost importance.
7.1 Attach the battery to the drone. Print the Flowerfly Drone Balancing Tool STL-file which is attached at the end of this chapter, and place it on the drone foot part as shown in the photo.
7.2 Now tilt the drone to the left - it should stay in this position. Then tilt the drone to the right - it should keep this position too. If not, slide the battery backward or forward, until balancing is achieved.
Repeat this procedure with the other 2 foot parts.
Downloads
Why "Flowerfly" ?
At the end, a brief explanation why I've named this singlecopter Flowerfly.
Thanks to my phenomenally bad flying skills, most of my flights ended as more or less violent crashes. Therefore I only fly in Loiter mode so far.
In the summertime, I'm surrounded by many flowerflys in the garden.
After crashing my drone again and again, they often show up with their perfect flying style, as if they want to say to me "look, isn't nature perfect?".
Yes, nature is perfect. But in contrast to mankind, nature had 4 billion years time to optimize and a whole planet to experiment with.