Introduction: Pool Skimmer Robot
This robot will run around the pool and clean up any debris floating on the surface, kinda like the pool version of a Roomba.
This instructable was created in fulfillment of the project requirement of the Makecourse at the University of South Florida (www.makecourse.com)
Step 1: Supplies
- Collection of 3D-printed parts
- Some kind of box as close to 4.5" wide as possible
- Around 36" in 2" PVC
- 4 2" PVC caps
- 3 sleeve bearings (1/4" ID, 3/8" OD, 3/8" long)
- 4 M2.6 x 5mm pan-head screws
- 3 1/4"-20, 1" long socket head bolts
- 25 8-32, 1/2" long button-head bolts
- 25 8-32 threaded inserts
- A couple thick rubber bands
- 2 Jameco Reliapro motors
- 1 ultrasonic sensor
- 1 h-bridge IC
- 1 8 AA battery pack
- 1 Arduino Uno (or any microcontroller)
Step 2: Put Threaded Inserts Into Your Parts
The 4 arms of the robot need to have threaded inserts added to certain holes. Follow the images, the objects in red are the threaded inserts.
Things to note:
- It is likely these holes need to be slightly larger than printed. Please use a 7/32" drill bit to drill out the holes if you feel they are undersized (if using the same inserts as I am)
- The threaded inserts need to go on alternating holes for the ends of the arms (like in the third image). If on one side the insert top, the one on the other side should be on the bottom. Do this for all four arms
- The inserts on the arms should be facing the inside sides of the arms (the faces that will interface with the box later on. Again, look at the pictures)
Step 3: Attach the Motor Plates to the Arms
On the left back and front arm parts, there will be a large slit cut out about 1/4" deep. Put the motor plates in the slots such that the holes line up with the two you put inserts in (be sure to put the plate on right side up) and drive two screws each into the holes, tightening with an Allen key of the appropriate size.
Step 4: Attach Motors to the Plates
Attach the motors to the plates such that they are orientated correctly (use the pictures). Make sure the two small mounting holes on the front of the motors line up with the two holes on the plate and put two M2.6 pan-head screws in to hold them in place.
Step 5: Assemble the Paddle
- Take the two paddle parts and carefully slide them into each other such that they form a 3D "+" shape
- Carefully slide the coupler pieces onto each end such that the end of the coupler hits the end of the paddle
- Take two 1/4"-20 bolts and press the heads into the holes of the couplers such that the heads of the bolts are flush with the ends of the couplers
- The holes might be a tad oversized to do this and may require drilling out
- I recommend getting the hole size just slightly oversized and then heating the bolt heads with a lighter until fairly hot and then pressing them in that way. This will melt the plastic as they enter the holes and form a solid fit.
Step 6: Drill Holes in Your Box
Using a 3/16" drill bit, drill holes corresponding to the holes for the mounting screws for the arms. In the pictures I have put dimensions for where the holes should be. They don't have to be 100% precise, but try to get them as close as possible.
Step 7: Attach the Left Arms
Line up the front left arm and back left arm with the holes drilled in the last step and put 8-32 screws into the holes from the inside of the box (see images).
Step 8: Insert the Brass Sleeve Bearings
- Carefully insert the brass sleeve bearings into the holes as seen in the images. If they don't fit you can try drilling them out, but ideally these should be pressed into the plastic. Again, it's possible to heat the bearings up with a lighter and press them in that way.
- With the bearing that goes into the propeller, try to get it pressed into the center. If you have a spare bearing, put two in instead of one (one on each side)
Step 9: Insert the Paddle Assembly
Insert the paddle assembly by putting the bolt of the assembly (either side) into the hole with the sleeve bearing in it
Step 10: Attach the Right Arms to the Box
Just like you did a few steps ago, do the same here. Line up the holes and screw them into the box from the inside.
Step 11: Put the Pulleys On
Put the right pulleys on the right shafts. D-shaped holes go on the motors and the round hole goes on the paddle shaft
Step 12: Attatch the Propeller
Insert the propeller in between the two struts that come out from the back arms and insert a 1/4" bolt into either end. The holes should be tight enough to press fit in. If you're having trouble getting them in, heat the ends up with a lighter and then try.
Step 13: Attach the PVC Collars
Put the collars on each of the ends of the arms and put two screws into each one, making sure to put the screws in the right holes (top screw into top insert, bottom screw for bottom insert). Don't fully tighten one screw per collar.
Step 14: Cut the PVC
Cut two lengths of around 18" of 2" PVC. The length might be a bit over
or under sized depending on how big your box will be. Measure by putting the PVC next to the PVC collars and allowing about 1-1.5" of room on either side
Step 15: Put the PVC in and Add the Caps
Push the PVC pipe through the collars and attach the caps on. Once everything is set, tighten all the screws.
Step 16: Assemble and Attach the Ultrasonic Mount
The parts easily snap together and hold via friction. Once the assembly is together, put it on the box via hot glue or double sided tape.
Step 17: Attach Ultrasonic Sensor
Using hot glue or other adhesive, affix the ultrasonic sensor to its mount
Step 18: Wiring
Once the mechanical aspect is complete, wire the parts as shown in the above wiring diagram. The chip listed 'L293D' is the H-bridge chip, and the blocks listed as 'paddle' and 'rudder' are the corresponding motors for those functions. The 12-volt source is your battery box. Everything else should be relatively self-explanatory, wire it however you want following the given diagram.
Step 19: Code
This code is for an Arduino Uno and assumes you are using exactly the same components and wiring as me.
Can be found here:
/*
/ Nicholas Kane / Pool skimmer code *
/Setup. Defines the output and input pins //10 & 11 -> Ultrasonic sensor // 8 & 7 -> H-bridge control void setup() { Serial.begin(9600); pinMode(11,OUTPUT); pinMode(10, INPUT);
pinMode(8,OUTPUT); pinMode(7,OUTPUT); }
//Continuously pings the US sensor until it finds a distance less than a given amount (as of now, 2000 'units') //Once distance is lower than above amount, rudder motor is run, turning the craft away from a wall or whatever void loop() { //Ping code digitalWrite(11,HIGH); delayMicroseconds(10); digitalWrite(11,LOW);
double dist = pulseIn(10, HIGH); Serial.println(dist);
//Runs rudder when distance is too small (i.e. close to wall) if(dist<2000) { Serial.println("Imade it here!"); digitalWrite(7,HIGH); } //Otherwise don't run rudder else { digitalWrite(7,LOW); } delay(100); }