This is a full in depth tutorial on how to make a completely open source programmable Frisbee thrower. If you want a more "beautiful" version of the tutorial check out tecnoa.ninja. The features of the machine are as listed below.
- Utilizes a preprogrammed Raspberry Pi or Arduino to control the speed and timing of each individual throw
- Servos connected to the Raspberry Pi or Arduino allow for control of timing and speed of throws
- Launches standard Ultimate Frisbee Discs
- Adjustable speed and range
- Maximum range of over 70 ft up to 110 ft
- Holds 4 discs
- 3 launch angles of 5, 10, and 15 degrees
- Wheels for added convenience and mobility
- Collapsible design for compact storage
- Built for under $150
- Open source
Check out the video below or at https://www.youtube.com/watch?v=p-MQ-b-Nj8c to see the thrower in action and how it will look when you finish this amazing piece of technology.
Step 1: Step 1: Construction of the Disc Launcher
A. The Support Base
Study Drawing 6. This is the very bottom frame that keeps the machine balanced. The frame is composed of 2x4 wood studs forming a trapezoid with one cross beam. Use a tape measure and wood pencil to measure and mark the beams that meet at right angles (bottom, left and right). We'll get to the top beam later. Remember to subtract 3.5 in. off some of the measurements to account for the width of the beams at the intersections. Carefully use a table saw or circular saw to make the perpendicular cuts. Wait until later to make the angled cuts. Lay the measured/cut beams on the ground in the same arrangement as the one in the blueprint. Lay an uncut beam across the top of the frame. This will be the angled piece. Mark where the edges of the other beams are on the uncut piece. Mark the ends of the other pieces to match the angle. Cut along the marks. You should now have the 4 edge pieces cut so they fit together according to the blueprint. Choose a corner of the frame. Clamp the two beams together and use an electric drill to make 2 starter holes at a corner of the frame according to the tick marks on the blueprint. Drill 4 in. wood screws into the starter holes. Repeat steps 9 -10 for each corner of the frame. Place another uncut beam across the frame. This will be the crossbeam. Mark the edges of the frame on the new beam. Cut along the marks. Drill starter holes at each end of the cross beam. Secure with 4 in. wood screw. Check the dimensions of the finished frame and to be sure they match the blueprints. Attach two wheels to the base of the trapezoid according to the drawing. It may be necessary to find screws with wider heads to fit the holes on the wheels. Measure the height of the wheel and cut two beams of equal height. Screw these into the frame using 2 wood screws apiece according to the drawing. B. The Launch Surface Frame Carefully study Drawing 5. This forms the support for the slanted launch surface. It is made of a 6 sided frame built of wood stud with 3 cross beams. The 2 parallel cross beams are used for holding the main motor (the drill). Measure and mark the lengths of the outer beams on pieces of stud. Remember to subtract 3.5 in. if necessary. Carefully cut along the marks. Arrange the pieces on the floor according to the blueprint. After ensuring that all the pieces fit together, begin assembling the frame. Drill two starter holes and insert 4 in. screws for each joint according to the blueprint. Lay a long uncut beam across the frame according to the blueprint. This will be the cross beam. Mark the edges of the frame on the uncut beam. Note that the beam may overlap in the middle as well as on the edges. Carefully cut along the marks. Install the cross beam by drilling starter holes and inserting 2 4 in. screws at each end of the beam. Check the dimensions of the finished frame and to be sure they match the blueprints. C. The Launch Surface Study Drawing 1. This is the top of the Frisbee launcher. It consists of a plywood surface mounted with a spinning bike wheel and a curved track. The Frisbee will move into the curved track and will be launched by the bike wheel. Lay a large piece of plywood flat on the floor. Draw the edges of the largest piece of plywood so that it perfectly covers the launch surface frame. Cut along the edges with a jigsaw. Now find the point on the plywood where the center of the bike wheel will be. It should be 24.75 in. from the bottom and 24 in. from either side. Mark this point clearly. Next cut a hole around this point large enough that the bike tire will fit just inside it without scraping the edges. Tie a piece of string to a pencil so that the string is just long enough to reach from the center hub of the wheel to the outer edge of the tire. Hold the loose end of the string on the point on the plywood where the center of the wheel will be. Swing the pencil end of the string in a full circle, drawing on the plywood. Use a drill equipped with a hole cutter bit to make a small hole near the inside edge of the circle. Insert the blade of a jigsaw into the hole and cut all the way around just outside of the pencil line. 7. Place the cut plywood on the frame and screw them together using short wood screws. 8. Turn the Launch Surface over so the plywood is on the bottom. 9. Cut 3 small ½ in. thick slices of stud to screw onto the long right side of the frame according to the drawings. These will form the notches for the adjustable arms later on. The other 3 will be installed later. D. Preparing the Drill for Mounting The main motor that spins the bike wheel is an electric corded drill. In order to control the speed of the bike wheel, the drill will be connected to a dimmer switch, the dimmer switch will be connected to a servo, and the servo will be controlled by the Raspberry Pi. The first step is to connect the drill to the dimmer switch. Make sure the drill is unplugged whenever you are working on it. Unpack your dimmer switch. You will see 3 wires, 1 green and 2 black. The green wire is to be used as a ground, but will be unnecessary because our drill is already grounded. Power for the drill motor will run between the black wires. Take half of the plastic drill casing off, leaving the drill components resting on the other half. To do this, rest the drill on its side so that the heads of the screws holding the casing are visible. Carefully unscrew each screw. Be careful not lose any parts. Pull the top half of the case off. Locate the main drill motor just behind the chuck. There should be two wires extending from behind it, one black, one white. Cut the black wire in half. Strip 1/2 in. of insulation off both ends of the severed black wire using wire strippers. Use twist-on wire connector caps to join each black dimmer switch wire with each black end of the drill wire. Now we need a hole in the drill casing for the wires to go through. Here may exist a ventilation hole large enough for the wires. If not, simply use another drill with a large bit. Press the bit against the back edge of the removed drill casing half to create a hole. Reassemble the casing and squeeze the two halves together, but before re-inserting the screws, test to make sure the forward/reverse and trigger mechanisms are still functioning. Once sure both are functional, screw the two halves back together and put the drill in reverse. Now we can test the drill. Plug the drill in. Make sure the dimmer switch starts in the fully off position. Squeeze the trigger all the way. Nothing should happen. Slowly turn the dimmer switch up (clockwise). The drill should start spinning faster and faster. The dimmer switch should have full control of the drill when the trigger is all the way down. Turn the dimmer switch all the way off. Use duct tape, cable ties, or string to secure the trigger in the full on position (all the way down). E. Mounting the Drill Study Drawing 4. The drill is held in place on the machine by two wooden structures protruding below the launch surface. The structures hang from two parallel cross beams. Installing these cross beams is the first step. Lay the launch surface flat on the plywood side.Place two large beams across the frame perpendicular to the main cross beam according to the drawing. Position them so that the drill chuck can pass between them with space to spare, but the drill body can't. Mark the beams where the frame passes underneath. Mark the spots on the frame where the cross beams intersect. Cut the beams according to the marks. Install the cross beams with two wood screws at each joint according to the drawing. Looking again at Drawing 4, find the measurements of all 7 beams. Mark length on a piece of stud and cut out each piece at right angles. Keeping the launch surface upside down (plywood side down), elevate it with cinder blocks so that your bike tire can be slid underneath. Center the bike tire and pull it up until the axle juts in between the new cross beams. Tighten the drill chuck around the bike tire axle. Pull the drill and bike tire up until the tire is about ½ in. from touching the plywood. While holding the drill in this position, place the newly cut wood studs around the drill according to the drawing (this may take several people to do). Mark the locations of each unattached piece of stud on the cross beam. Remove the drill and tire and flip the launch surface up on its edge (resting on short even side). Clamp the newly cut beams against the cross beams according to the marks made and attach by drilling two starter holes and screwing two wood screws per beam (there should be 5 beams, the other two will go behind the drill once it is in place). Put the drill back between the cross beams below where the new beams are. Attach the bike tire to the drill again. Use a wrench to fully tighten the drill chuck. Wrap the drill chuck tightly in duct tape. Slide the drill with the tire up into position between the new beams, making sure the dimmer switch doesn’t catch on a beam and become pulled loose. Once the drill is in position, clamp the new beams around the drill and install the last two beams with 2 wood screws each. Flip the launch surface up so the plywood is on top. The wheel should spin freely now. If not, it may be necessary to adjust the drill by wedging wood strips under it or shifting it right and left. F. Vertical Supports Because the drill protrudes beneath the Launch Surface, it is necessary to elevate the Launch Surface above the support base. To do this, 2 fixed vertical beams will support the back end, and 2 movable arms will provide adjustable angle and support the front end. See Drawing 3. Cut 2 8.5 in. beams and screw them perpendicular to the support base according to the drawings. Brace these 2 beams by cutting 2 more beams at 45° at both ends and screwing them into the vertical supports and support base. Cut 2 more beams for the movable arms. Attach the perpendicular side of the longer beam to the longer end of the support base using a small hinge. Do the same for the short beam. Screw a door hinge onto each immovable support, making sure the orientation is correct. G. Attaching the Launch Surface Bring the base of the launch surface to the hinges of the vertical supports. Screw them together. Putting the Frisbee Launcher right side up, put the longer movable support beam against the first notch. Pull the short arm up and mark its position on the beam. Repeat steps 2-3 for the other notch positions. Screw 3 more pieces of stud to the launch surface frame at the marks. The machine should have an adjustable angle now. H. Curved Track The next step is to install a curved track around the wheel to keep the Frisbee in contact. There are two halves to the track, so that it is easier to install. Each half consists of 2 pieces of plywood stacked on top of each other (4 pieces total). Study Drawing 1. Cut out the 4 sections of track from plywood using a jigsaw. Stack the pieces on the machine, noting which end is wide and which end is narrow. For each half, carefully adjust the tracks so a Frisbee runs smoothly through it. The smoother the motion, the more efficient the machine, and the further the throw. When satisfied with the track positions, secure each half with 2 1½ in. wood screws. Test the tracks again and make any adjustments necessary. I. Feed Ramp A ramp on top of the machine allows Frisbees to move through a straight track towards a servo motor, which controls when the Frisbees are launched. The ramp is 2 beams bordered with plywood mounted on hinges and propped up. See Drawing 1. Cut all 4 beams to the correct length and angle according to the drawing. Take the two long beams and screw strips of plywood in along opposite edges according to the drawing. Set the 2 long beams parallel to each other so that a Frisbee can slide along the track. Measure the gap between the beams and cut a piece of plywood to fit where the servo will be. Flip the beams over and support their inside edges with wood scraps. Secure the plywood piece between the beams by first screwing plastic tabs on either side, then mounting the plastic onto the beams. Use another strip of plywood and 4 1½ in. screws to connect the perpendicular cut ends. Measure up the beams and screw in 2 plywood tabs to hold the supports in place. Secure a hinge onto each angled end, ensuring they are in the correct orientation. Screw a scrap of stud to the outer edge of the outer track near the base where the hinge is (see Drawing 1 and 3). This piece will support the plastic used to guide the Frisbee into position. Bring the ramp to the launch surface and position it so a Frisbee sliding down a ramp falls into the curved track. Mark the location of the hinge holes on the plywood. Drill angled starter holes at the marks. Use a screwdriver to attach the feed ramp at the starter holes. Prop the ramp up with the two remaining short beams. J. Plastic Sheet Installation Acrylic sheets are mounted along the feed ramp and curved track to keep the Frisbee i position (see Drawing 1). Cut 3 1x2 in. pieces of plywood to mount the plastic on. Use the same sheet of plastic as the one previously cut. Position the used sheet of plastic on the feed ramp so that one end rests on the stud screwed to the side. The other end should go down to the curved track. Place a piece of plywood under the plastic. Put clear packing tape over where the screws will be. Drill two starter holes and insert two short wood screws. Repeat the process for the plastic sheet mounted along the curved track. K. Servo Integration 2 servos will be attached to the machine. The first is a heavy duty high torque servo at the base of the feed ramp on top of the plywood bridge. Depending on your program and your motor, the wires of the motor should point down the feed ramp. Attach the servo firmly but carefully using duct tape and/or screws. Plug this motor into the Raspberry Pi and external power supply to ensure it moves in the correct direction and the Frisbees release as intended. If the motor’s arm does not reach high enough, it may be necessary to extend by attaching a paper clip. The second motor is a 360° servo. This will be attached to the dimmer switch. First, remove the knob from the dimmer switch and remove the arm from the servo. Duct tape these two together. Push the knob onto the switch and push the motor body onto the arm. Move both below the drill so the back of the switch pushes against the taller drill mount structure (see Drawing 4). Screw a short piece of stud just behind the servo. Tape the servo to the new stud and tape the switch to the drill mount. It may be necessary to push the two closer together by wedging thin wood strips such as cut paint sticks behind the switch. Attach the Raspberry Pi or Arduino to the Launch Surface using their mounting holes (see Drawing 1) Wire the motors to the Raspberry Pi or Arduino using the configurations from the programming tutorial.
Step 2: Step 2: Programming for Raspberry Pi
Step 1: Control the Servos
After booting up your Raspberry Pi, open the Terminal. This should be located on the desktop. In it, type
This will open a program for editing and writing code. Click File-New. In your new document, paste this code. Comments preceded by a # are unnecessary.
Download THIS FILE. It will say “No preview Available.” Do not be concerned - simply click the download button and copy it onto your Raspberry Pi.
Do Ctrl + S to save this code. Use whatever name you want, but you will need it again later. Naming it “servo” would seem to be the easiest name.
Step 2: Wiring the Servos (You will need one power cord for this step. This can be from any device.) You will also need to know the numbering system for the GPIO pins. These are shown by the following diagram, with the left and front sides being the edges of the Pi.
First, the dimmer-switch servo. Connect all three of the wires coming from the servo to jumper wires. Connect each jumper wire to these GPIO pins on the Raspberry Pi. They are labeled based on the corresponding servo wire.
White (power) -> 7 Red (control) -> 4 Black (ground) -> 14
The colors of the wires on your servo may not be exactly the same. In this case, base your connections off the functions of the wires shown above.
Next, the feed servo. First, strip about ⅜ inch of insulation off of the power supply wire. If there is a connector, such as a USB, this will need to be cut off as well. This can be done by simply taking a pair of scissors and cutting the USB part of the power supply off In doing this you will find the two wires, usually one is black and one is red you only need the black one. Now, connect each of the servo wires to a jumper wire. Connect the power wires on the power supply to jumper wires as well. If there are three wires, you will not need the third as it is for data. Make the following connections, again labeled as the corresponding servo and power supply wires.
Brown (ground) -> 25 Orange (power) -> Red (On power supply) Yellow (control) -> 12 Black (On power supply, ground) -> 6
Step 3: Run the program on startup
This step will involve numerous commands in the Terminal that you may not understand. I will try to explain what the commands do, but just keep following this tutorial, and it should work in the end.
First, enter in the Terminal cd bbt
Terminal operates in a preset directory, and this command changes the directory to the folder “bbt.” Next, type
This will create a file in the bbt directory called “launcher.sh.” This program will eventually do what it says: launch the servo program. Type this code
cd / cd home/pi/bbt sudo python servo.py cd /
In line 3 of the code, “servo.py” should be whatever you named your program in step 1. Now do Ctrl + X, Enter to save the code.
Now to make your script executable, type in this command
chmod 755 launcher.sh
Now, you will need a log to store any outputs or errors in. Navigate back to your default directory using
In the terminal. Create a log file using
Now for actually making the script run on startup. Type in the Terminal
sudo crontab -e
This will open the crontab file. Anywhere in this file, enter
@reboot sh /home/pi/bbt/launcher.sh >/home/pi/logs/cronlog 2>&1
This will tell the Raspberry Pi to run your program on startup. Do Ctrl + X, Enter to save.
To test the full program, now that you have the code written, servos connected, and have set the program to run on startup, enter into the Terminal
Wait for the Raspberry Pi to restart, and your program should run automatically! If for some reason it doesn’t work, type the following commands into the Terminal.
cd logs cat cronlog
In this file it should say “First throw, ¼. Second throw ¼…” etc. If this is the case, recheck your wiring, as this is probably the issue. If there is an error displayed in the log, check that you did step 1 correctly.
Congratulations! You have now completed the “indoor” part of construction!
Step 3: Step 3: Programming for the Arduino
This tutorial assumes that you have an arduino uno and have already downloaded and installed the arduino software. If you haven’t done this then refer to http://www.arduino.cc/ for information about downloading the sofware as well as the link to dowload for free.
Step 1: Now that you have everything ready to go we can start with the fun stuff. Programming. First, what you want to do (if you haven’t already) is go ahead and open up the arduino application on your computer. Once you’re there copy THIS CODE into your program.
All details about are the program are commented in the code after // or *. Now, just to be safe go up to File and select Save As. Save your program as whatever you want as it is not important to the later steps. We called ours “servo1” then press Save. Now that you have done this press the checkmark button at the top of the program to verify your code. If it does not verify (errors will appear in orange) then go back and double check that you have used our exact code. Once if is verified plug in your arduino and press the arrow pointing right (next to the verify button) to upload to the board. If you are having problems with that and you can’t upload to you board then please refer to this very helpful link https://www.instructables.com/id/A-solution-to-avrdude-stk500getsync-not-in-syn/
Step 2: Now lets get everything wired up. Lets first get “servoMain” wired up. If you haven’t already guessed, the “servoMain” is the servo that we will be attaching to the dimmer switch. The siring goes as following. Black - GND Red - 5v White - Pin 10 Next, lets hook up the “servoSecond”, this one is a bit more tricky but you can do it if you pay attention. You will need your external power source for this part. Go ahead and cut the tip off and strip both of the wires. Once you do this Connect the following. Brown - Black (On power strip) - GND Orange - Red (On power strip) Yellow - Pin 9 Once you do this you will see that your program and circuit works!
Participated in the
Pi/e Day Contest