Does this project spark your interest?

Become a member to follow this project and don't miss any updates

FarmBot - Open-Source CNC Farming

FarmBot is an open-source CNC farming machine and software package built for small scale, hyper local, DIY food production.

Similar projects worth following

This project was created on 08/19/2014 and last updated a month ago.

FarmBot is an open-source CNC farming machine and software package designed for small-scale precision food production. Similar to 3D printers and CNC milling machines, FarmBot hardware employs linear guides in the X, Y, and Z directions. This allows for tooling such as seed injectors, watering nozzles, sensors, and weed removal tools to be precisely positioned and used on the plants and soil.

FarmBot is controlled by an Arduino/RAMPS stack and an internet connected Raspberry Pi 2. The hardware is designed to be simple, scalable, hackable, and easily produced.

Using the web application, the user can graphically design their farm or garden to their desired specifications and synchronize the numerical control code with the hardware. Other features include storing and manipulating data maps, a decision support system to facilitate data driven design, access to an open plant data repository, and real-time control and logging.

About the Project

I hope for FarmBot to become more than an idea, more than a hack, more than a product. I hope for it to become a thriving community of individuals and businesses that develop, share, and distribute the technology - much like how the RepRap project has done for 3D printing.

As you read through my entry on Hackaday, you'll notice that I link to several places:, and is my brand new company that develops and is planning on distributing FarmBot hardware kits and software services. is the free-form community wiki and forum where anyone can get involved and share ideas. You can read the announcement of the new company here, and learn about why it is important to distinguish it from the community as a whole. I hope you check it out and enjoy what we're doing :)


- Rory

Open is at our Core

FarmBot is 100% open-source. We document everything we do on our dedicated hardware documentation and software documentation hubs, as well as on the community wiki. All of our code lives with permissive licenses on GitHub. We openly welcome feedback, replications, modifications, and questions. To facilitate collaboration, we've setup a community forum for anyone to get involved in the discussion, as well as dedicated hardware and software support forums.

Not Just Open-Source, Useful-Source

We believe that great documentation is the the key to building a community of hackers who continue to build upon this technology. While being open-source means making our source files and ideas free for others to use and modify, we don't believe this is enough. At the FarmBot Project, we're going one step further than open-source, we're going useful-source.

This means that in addition to sharing the source files, we're also sharing detailed assembly instructions, bills of materials, troubleshooting tips, past iterations, and our design intentions from the entire FarmBot journey. We're striving to design beautiful hardware that is reproducible with common tools and processes; built from low cost and readily available materials and components; and easily assembled and hacked. Our software is built to give users full control of their machine through and through. And we're even committed to operating our company with transparency and open company values at the forefront.

With all of this effort, we hope that thousands of individuals and business can learn how to use, hack, redistribute, and even monetize FarmBot just like us, ultimately pushing the technology forward and making it more accessible to the masses.

Mission and Vision Driven

The FarmBot Project vision is to:

Create an open and accessible technology aiding everyone to grow food and to grow food for everyone.

In order to achieve this vision, our mission is to:

Grow a community that produces free and open-source hardware plans, software, data, and documentation enabling everyone to build and operate a farming machine.

Hardware Overview

FarmBot is a CNC machine that uses special tools and software to grow plants. Our first device, FarmBot Genesis, is an outdoor XYZ machine that can scale from a planting area as small as one square meter, to as large as 20 square meters. It is estimated to cost between $1,500 and $4,000 depening on the size of the installation.

Core Components

We've chosen the following core components and materials for their utility within the FarmBot design, excellent corrosion resistance, general availability, ease of manufacturability, and relative low cost.

  • V-slot aluminum extrusions and V-wheels are from OpenBuilds. These act as FarmBot's primary structural component and linear guide mechanism. These extrusions are high quality, easily cut to length with just a hacksaw, and have a completely open-source design.
  • Custom designed 5mm thick plates are used to connect the extrusions, wheels, and other components together throughout FarmBot's structure. These plates can be made from sheet...
Read more »

  • 1 × For the most up-to-date BOM, see our documentation hub:
  • 4 × 20x40mm V-Slot Aluminum Extrusions Because FarmBot is scalable, you will have to calculate the total length of extrusions you need based on how large of a FarmBot you want to create. Available from OpenBuilds
  • 2 × 20x60mm V-Slot Aluminum Extrusions
  • 1 × 20x20mm V-Slot Aluminum Extrusion
  • 1 × Set of 5mm Thick Water Jet Cut Aluminum Plates The DXF drawing for all of the plates can be found in the manufacturing files section of each log.
  • 1 × Raspberry Pi 2 Model B
  • 1 × Arduino MEGA 2560 + RAMPS shield
  • 3 × Dual shafted NEMA 17 Stepper Motors with Differential Rotary Encoders
  • 1 × 12V, 15 Amp Power Supply Available from OpenBuilds
  • 3 × 3D Printed Motor Housings

See all components

Project logs

View all 41 project logs

Build instructions
  • 1

    Dedicated Documentation Hubs

    Hey there! You're about to read our FarmBot build instructions here on While we have lots of details posted here, you can find the most up-to-date documentation for the latest hardware on our dedicated hardware documentation hub. In addition to the latest docs, you can also browse past versions of the hardware and ask questions in our support forum. Be sure to check it out!

    Furthermore, we also have a dedicated software documentation hub and support forum for software related issues.

  • 2

    Supporting Infrastructure

    FarmBot Tracks need to be attached to supporting infrastructure. Where you decide to install your FarmBot will determine how you setup your Tracks and therefor what supporting infrastructure you need. You might attach your track plates to 2x4 wood posts, aluminum extrusion posts, or to existing infrastructure such as a raised bed or greenhouse walls. The choice is up to you how you set this up.

    Be prepared

    If you recently ordered a FarmBot kit, you may want to begin building your supporting infrastructure while your FarmBot is in the mail. This way you'll be prepared for a faster assembly time when your package arrives.

    We'll go over two methods here for setting up supporting infrastructure: building a raised bed, and setting up extrusions as posts. Note: some photos and components may be out of date for V0.7 hardware.

    Build a Raised Bed

    6 hours

    This is the estimated time it will take to build a raised.


    • Purchase some high quality wood from your local lumber yard. Preferably you will use thicker wood (1-2 inches thick) so that it does not warp easily. This is pretty important because your tracks will need to be very straight for FarmBot to work reliably, and your tracks will be directly attached to the raised bed. When soil becomes wet and when plants grow, this can cause tremendous force on the wood walls of the bed, forcing them outwards. Thicker wood, and extra posts is preferred. In this example, I used 2x12" nominal redwood, and 4x4" nominal wood posts spaced roughly every 5 feet, or one 1.5m extrusion length.
    • You'll also need to pick up some hardware for fastening your raised bed together. I selected 3/8" x 3" lag bolts, and some rustic looking washers.
    • Depending on your climate, you'll likely want to put some type of sealer, stain, or polyurethane on your wood to protect its color and water resistance. I chose Thompson's water sealer.


    Setup your lumber roughly where your bed will be so that you may find out where to dig your post holes.

    Dig your post holes. A post hole digger and pick axe can help greatly.


    Sand your wood to remove any weird markings and splinters.

    Stain your wood.

    Setup your lumber upside down on a flat surface. We'll drill holes and screw together our bed in this orientation and then flip it over and position it in our holes.


    Measure out and mark where your posts will be. Remember this must correspond to where you dug your post holes!

    Clamp your posts into place, making sure they are square with the bed sides.

    Mark locations where you will drill holes and fasten your boards to your posts. I used 2 lag bolts and washers per board/post interface.

    Don't let your bolts hit each other

    On your corner posts, make sure to stagger your bolts slightly so that the bolts coming in from one side of the corner do not hit the bolts coming in from the other side of the corner.

    Pre-drill the holes for your lag bolts.

    Use a ratcheting socket wrench to quickly screw in your lag bolts.

    Style counts

    If you are using fancy washers like me, orient them all in the same direction before tightening the lag bolt down. Remember, you are assembling your bed upside down, so plan for the washers to be flipped when the bed is installed.

    Notice how the corner bolts are staggered so that they do not hit each other, and the washers are oriented the same way.


    • Once your bed is assembled, flip it over and position it in your holes. You may need to pull it out and dig out some of your holes a little more. Use a level to make sure the bed is level.
    • Fill it with a mix of soil and compost.

    Setup Extrusion Posts

    2 hours

    This is the estimated time it will take to setup extrusion posts.

    • Install short (100-500mm) vertical posts for one of the tracks. Attach or secure the posts however you like, though it is critical to ensure that the posts will not significantly move once installed. Space the posts for one track 1500mm apart, center to center, unless you are using shorter track extrusions, in which case space the posts that far apart. Ensure the posts are aligned properly and the same height. You may want to use a level to ensure this.
    • If you are setting up multiple track extrusions (more than 1500mm in total length), it is best to install the end posts first and tie a guide string in between these two posts to ensure your tracks are installed in a straight line.
    • Depending on the width of your FarmBot, space the second Track’s posts the appropriate distance away from the first Track’s. It is critical that the distance between the two Tracks is consistent, if it is not, there will be forces placed on the Gantry and Tracks as the Gantry moves across.
    • You can use shims or other spacers to better align track plates in case your posts are not perfect.
  • 3

    Assembly Preparation

    In order to shorten the time it takes for you to assemble your FarmBot hardware, follow these preliminary steps.

    15 minutes

    This is the estimated time it will take for assembly preparation.

    Organize your Parts

    When you first open up your FarmBot hardware package, pull out all of the component bags so that you develop a full idea for what's included, and so that you can place them on a table or the floor in locations that make sense to you.For many, grouping parts by type helps with locating them quickly later on. For example: place all your screws in one area, all your plates in another, all your electronics in another, etc.

    We'll make it right

    If anything is missing or damaged from your box of components, let us know right away. We'll ship out replacement parts as soon as we can.

    Pre-assemble your V-Wheels

    Each V-Wheel actually consists of four components:

    • One polycarbonate v-wheel
    • Two 16mm x 5mm x 5mm stainless steel, rubber sealed ball bearings
    • One stainless steel precision shim that fits between the two bearings, inside the wheel

    Pre-assembling all your v-wheels at once will save you assembly time later on. To do so, first press one bearing into the polycarbonate wheel.

    Make sure everything is straight

    It can be easy to accidentally press in a bearing crooked. Try your best to avoid this as you could damage a wheel this way.

    The sound of success

    If all goes well, you should here a satisfying 'pop' each time a bearing fits into the wheel.

    Then insert the precision shim such that it is resting on the first bearing on the inside of the wheel. Try to position the shim in the center of wheel.

    Then press in the second bearing.

    Shimmy the shim

    If your second bearing doesn't seem to fit all the way into the wheel, its probably because the shim is misaligned. Use a small screwdriver to push the shim into the center of the wheel, and then push the bearing in the rest of the way.

See all instructions

Enjoy this project?

Mike Maluk wrote 2 days ago point

I'm looking to build a smaller farmbot, or I suppose it'd be a gardenbot, for indoor growing. Would it be all right to post a build log on hackaday? Just wanted to send a line out before I start posting builds of others ideas! Thanks!

Are you sure? yes | no

Garrett Herschleb wrote 09/09/2014 at 18:33 point
This is a great concept and a great start. Here are some suggestions that would help make it useful:

1. Make the database and bot region independent. Growing season in Duluth is not the growing season in Phoenix. Concentrate on environmental conditions such as daily temps, humidity, rain fall, and sunlight rather than months of the year. Months of the year may be calculated for a specific region, or better yet, by sensors on the farm bot.
2. Address the soil. If the bot tries to follow the same fertilizer formula in all places, you'll have some people singing its praises and most others cursing the poor results. Fertilizers cannot fully address the problem. Soil Ph differs wildly in different regions of the world, as do so many other critical factors. Farm bot would have to have either serious soil testing capability, ability to mix soil in a raised bed from a recipe, or preferably both is a critical ingredient for success.
3. Address the issue of pests and fungus. Anybody buying this bot won't do so to save on their grocery bill since the expense of the system is far more than a few trips to the grocery store. Therefore this must have strong organic capabilities, and the ability to address the pest problem without pesticides. This has many dimensions, but one key capability is to be able to work with and around bird netting.
4. Add the ability to warm the local air in case of unexpected freezes.

5. Learn more from expert home gardeners. The "Grow Your Green" YouTube channel is a great place to start (I'm not affiliated with that channel, I just find it's a good source of home gardening info).

Are you sure? yes | no

Rory Aronson wrote 09/09/2014 at 22:30 point

Thanks for the thoughtful feedback and support! We're focusing heavily on the "Big Data" side of things and will be using both onboard sensors, geographic location, growing preferences, weather forecasting, and soil properties to determine how exactly to grow each plant optimally with the given conditions. Check out our sister project, OpenFarm that will provide us with the "Growing Instructions" for each plant based on the specific factors:

Are you sure? yes | no

Similar projects