Seed Spreading Robot
So, when asked if I wanted to actually take on the challenge of building one, I obviously responded with a definitive yes. Even though I personally don't own a lawn (my backyard is concrete and weeds), it seemed like an opportunity too good to pass up. In terms of actually using it, I found a willing victim in Glenn Derene of Popular Mechanics. He was more than happy to let this thing loose on his lawn (along with a slew of other robotic lawn care contraptions). So one fateful day last summer, I tightened the last bolt, wrote the last line of code, packed it up safely, and shipped it cross country to meet whatever fate lie in store.
Albeit I only later saw a video of it in action, it is my understanding that it performed about as well as you would expect an experimental DIY seed spreading robot to perform on its initial run; in short, not very. Rather than a cross between Wall-E and Johnny Appleseed, it is more of a cross between Johnny 5, and the groundskeeper in Caddyshack.
Nonetheless, I think the structural design of the robot is solid. If the code is tweaked a bit, and the rangefinder repositioned, I think this robot could spread seed like a champ.
Go Get Stuff
You will need:
(x1) Lynxmotion Tri-Track Chassis Kit
(x1) Earthway EV-M-Spred Seed Hopper (or similar)
(x1) Arduino Uno
(x1) Arduino Motor Shield
(x1) Parallax Ping Rangefinder Sensor
(x1) 1/4 Scale Servo
(x1) Lynxmotion 12v battery
(x1) Vex battery charger
(x1) DC power plug
(x3) Multipurpose PCB
(x1) 7805 voltage regulator
(x1) Heat sink
(x1) Thermal transfer paste
(x1) 10 uF capacitor
(x4) 0.1uF capacitor
(x1) 1K resistor
(x20) Header pins
(x1) ATS177 hall effect sensor
(x2) 1/8" rare earth magnet
(x4) 1-1/4" aluminum spacers
(x4) 1-1/2" x 6-32 nuts and bolts
(x1) 12" x 24" x 1/8" acrylic
(x1) 6" x 6" x 1/4" plywood
(x12) 1/4" nylon spacers
(x12) 1" x 6-32 nuts and bolts
(x4) 1-1/2" x 4-40 nuts and bolts
(x8) 1/4" nylon spacers
(x6) pens
(x6) 1/4 x 6" nuts and bolts
(x4) 1-1/4" aluminum spacers
(x4) 2" x 6-32 nuts and bolts
(x1) Assorted zip ties
(x1) Assorted shrink tube
(x1) Krazy Glue (gel)
(x1) Thread lock
(x1) 24" x 24" cardboard sheet
You will also need to download and cut out the following files:
SensorHolder.eps -- cut out of 1/8" acrylic and etch away the black square 1/16" down
HopperDrillBracket.eps -- cut out of cardboard
TopBracket.eps -- cut out of 1/8" acrylic
ServoBracket.eps -- cut out of 1/8" acrylic
ServoConnector.eps -- cut out of 1/4" plywood
BottomDrillBracket.eps -- cut out of cardboard
PingBracket.eps -- cut out of 1/8" acrylic
(Note that some of the links on this page are affiliate links. This does not change the cost of the item for you. I reinvest whatever proceeds I receive into making new projects. If you would like any suggestions for alternative suppliers, please let me know.)
Assemble the Treads
Assemble the treads by lining them up side-by-side, inserting a clear tube between the aligned rings, and pressing in the plastic pins until they snap in place.
You should be left with two long strips. Set aside the hardware necessary for closing the loops for later.
Attach Spacers
Attach the Motor
If you have not done so already, cut out a 1/8" acrylic sensor holder using the attached pattern. Where the pattern has a black square, etch halfway into the acrylic to make a channel to mount the sensor.
Align the acrylic sensor holder with the motor mounting holes. Fasten the motor and the acrylic sensor holder in place with 3mm x 8mm steel screws.
Downloads
Attach the Other Motor
Drill Holes
Rotational Counter
Hub Counter
Cover the threads of two 4-40 x 3/8" bolts and thread them all the way down into the hub such that they are opposite from each other.
Now is time to place magnets upon the head of each bolt and glue them in place. However, before gluing, it is important that the magnets are facing in the correct polar direction.
Here is some basic code for checking the hall effect sensor and making sure that you put the side of the magnet that triggers the sensor facing up atop the bolt.
Attach the Hubs
Repeat this process for the other hub and motor shaft.
Attach a Sprocket
Trim a Sprocket
This sprocket will be used on the inside edge of the motor hub with the magnets attached. This will allow it to rotate without rubbing against the hall effect sensor bracket.
Attach Trimmed Sprocket
Fasten them both in place with 4-40 x 5/8" bolts.
Roller Sprockets
Repeat another 3 times.
Mounting Blocks
Assemble
Cover each of the aluminum spacers with a nylon roller.
Finally, finish the assembly by aligning the unsused triangular lexan panels over the spacers and locking them in place with 4-40 x 3/8" bolts.
Wrap the Treads
Make sure they are aligned properly over the sprockets, and then close the final linkage to complete the loop.
Remove the Lever
Remove Screws
Drill Holes
Print out the attached template and use it as a guide to make marks for drilling.
Drill through those four marks with 1/8" drill bits.
Downloads
Bolt Together
Cut out the top 1/8" acrylic bracket if you have not done so already using the attached template.
Slide the top acrylic bracket onto these bolts and fasten it into place.
Downloads
Seed Spreader Brackets
Downloads
Close It Up
Use the gear box mounting screws to firmly close the case and hold the bracket in place.
Insert Servo
Servo Connector
Downloads
Drill
Affix
Push this assembly onto the servo shaft.
Servo Assembly
Drill the Base
Downloads
Attach Base Spacers
Mark and Drill
Make marks for drilling.
Drill all of these holes with a 1/8" drill bit.
Heat Sink
Start the Power Board
Solder a 10uF / 50v capacitor between Vin and ground, making sure the negative lead goes to ground.
Solder a 0.1uF capacitor between the regulated Vout and ground.
Finish the Power Board
Solder two additional stranded wires to ground.
Solder another stranded wire to Vin, and a different wire to Vout (but you may not need this wire).
Mod the Motor Controller
Insert
Attach the Arduino
Attach the Power Board
Pen Tubes
Assemble the Base
Place the upper lexan base panel atop the aluminum spacers attached to the bottom panel. Fasten the top panel in place using 4-40 x 3/8" bolts.
Cover the Bolts
Bottom to Top
Capacitors
Put It All Together
Fasten the lexan base to the aluminum mounting blocks on the track assemblies using 4-40 x 3/8" bolts.
Insert the Switch
Wire the Plug
Screw apart the plug assembly and slide the cover onto the wires.
Solder the red wire to the center terminal and the black wire to the outer terminal, and trim any excess so that they don't bridge.
Screw the cover back on when you are done.
Insert
Trim
Range Finding Assembly
Pass the rangefinder leads through the three small holes in the front of the bracket such that the rangefinder is roughly lined up with the edge of the bracket.
Slide the circuit board onto the rangefinder leads and solder it into place.
Respectively insert 6" red, black, and green wires through the three other small holes in the acrylic, and onward through holes in the PCB. Solder them in place as well.
Connect and solder the red wire to the 5v pin on the rangefinder.
Connect and solder the black wire to the ground pin on the rangefinder.
Connect and solder the green wire to the data pin on the rangefinder.
Downloads
Attach the Range Finder
Header Pins
Also, insert two headers into digital pins 9 and 10 (not pictured).
Keep the headers in place, and press down a prototype circuit board onto them.
Solder the headers to the circuit board.
Start the Circuit
Solder a 1K resistor and 0.1uF capacitor in series on the circuit board. Connect their center point to digital pin 5.
Wire Up the Hall Effect Sensor
Attach a 6" black wire to the center ground pin on the hall effect sensor.
Attach a 6" green wire to the outer signal pin on the hall effect sensor.
Put heat shrink tubing over each of these connections individually, and zip tie them together for strain relief.
Wire in the Hall Effect Sensor
Solder the black wire to the other leg of the 0.1uF capacitor.
Solder the red wire to the other leg of the 1K resistor.
Solder the Rangefinder
Solder the red wire to the Arduino's 5V pin, and the black wire to the Arduino's ground pins.
Plug in the Servo
Connect the Motors
Wire the Motor Shield
Insert the red wire from the motor on the left to the negative terminal of channel "B" on the motor shield. Insert the yellow wire from the right motor into the positive terminal of channel "B".
Insert the remaining 12v wire from the power board into the Vin terminal, and the ground wire into the ground terminal.
Attach the Battery
Connect
Program
Engage the Seed Spreader
Power
Pour Seed
Positioning
Assuming your lawn is square and has an L-shaped fence (or U-shaped fence... or you are a total weirdo and it is completely fenced in...), place the robot such that it is pointing in a straight line towards the end segment of the L, and will be turning right to move to the side wall. If this description makes little sense, check out the diagram.
Go Use It
Basically, the way that this is working is that it engages the seed spreader, travels towards the far fence, and counts the number of motor rotations it takes to get there. Once it is within a few inches of the wall, it turns right and travels about a foot and a half (disengaging the seed spreader). It then turns right again and travels back across the lawn (engaging the seed spreader). However, since there is no longer a wall to sense, the robot counts the number of motor rotations and travels back the same distance it traveled towards the wall. When it gets back to this side, it turns left, travels about a foot and a half (disengaging the seed spreader), turns left again (engaging the seed spreader), and then repeats the routine. The routine is repeated until it turns to the side and encounters the side wall within a foot's distance (or so).
In theory, the robot should perfectly cover the lawn with grass seed. In reality, it will draw probably draw a weird modernist zig zag pattern.
One major thing which still needs tweaking is that inserting grass seed makes the bot top heavy and forces the rangefinder sensor to point slightly downwards. As the robot bounces along the lawn, it sometimes senses the ground and stops short of the wall. I think this can be solved by angling the sensor upwards and adding some debouncing to the code.
This is still a work in progress and I welcome anyone who thinks that they can develop better solutions to this problem to take a stab at it.
Did you find this useful, fun, or entertaining?
Follow @madeineuphoria to see my latest projects.