In fall of 2017, I designed and built a CNC-based gardener that I call Saladbot.
It has many sources of inspiration, chief among them is the amazing Farmbot project. I wanted to simplify that ambitious design considerably. My goal was to reduce costs, improve ease of assembly, and narrow down the functionality to a small subset of tasks: planting, monitoring, and watering to start.
I wanted to build a machine that could grow a constant supply of lettuces, micro greens, and herbs. These are quick and fairly easy to grow when the plants are in their juvenile stages, and since there would be relatively high turnover, the robot would be working more of the time (particularly if the device’s dimensions are scaled up and thus the area being managed increases).
After three months of designs, redesigns, waiting for new parts, and constant modifications, what resulted was a system that was incredibly flawed, but very fun and educational to build.
Saladbot scanned its garden bed (it has dimensions of 1 meter x .5 meters, though the actual planting area was somewhat smaller than that). It inspects one small 10mm section at a time and if it doesn’t see an existing plant, and it knows it hasn’t planted a seed in that spot for a while, plants a new seed. It then squirts a bit of water on the seed in the soil from a tube attached to a water reservoir. It patrols the garden and repeats these routines as necessary every two hours or so.
Saladbot ran fine for a while, but the timing belt kept skipping, causing the “printer head” of the machine to lose its place and behave erratically. I attribute this to my over-enthusiasm for printing out as much of the machine as possible on a 3d printer, including some critical mechanical bits like the idlers for the timing belts. Whoops.
There are so many areas for improvement here:
Areas for Improvement
- Upgrade the fastening hardware (use stuff that won’t rust)
- Use metal idlers for the stepper motors
- Improve cable management for the camera, water tubing, and wires that are channeled to the head.
- Improve the planting area to something that won’t flood (I used a large plastic nursery tray).
- Protect against birds and squirrels eating the planted seeds.
- Improve software so different planting regimes are possible: microgreens, salad greens, fully-grown lettuces, etc. Each of these different types requires a different amount of space.
- Improve planting mechanism (perhaps use Farmbot’s vacuum and needle design).
- Get the watering working properly.
- Improve electronics housing (I stored all of the electronics in a box that I had “waterproofed” and sealed with strong tape, yipes!)
- Lift head higher off track to accommodate taller plants.
- Maybe even take the whole head off of the rails and mount it to a fully-autonomous vehicle??
As you can see there is lots to do here, and I plan on taking a crack at some of the lower-hanging fruit soon. The mission is to encourage people to grow and eat more delicious produce by making the process completely hands-off. If you have any ideas about how to take a step closer to that goal, share them!
Code
- Custom g-code interpreter (parses and executes commands sent by the Raspberry Pi controller code) . Thanks to Dan Royer for his original software.
- Raspberry Pi controller code