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 4 hours 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 an outdoor CNC machine that uses special tools and software to grow plants. The core hardware components include aluminum extrusions and 5mm thick connecting plates; NEMA 17 stepper motors, belts, and pulleys; 3D printed components and stainless steel hardware; and an Arduino MEGA/RAMPS/Raspberry Pi 2 electronics stack.

Our first device, FarmBot Genesis, is an 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.


Tracks are one of the components that differentiates FarmBot technology from traditional free-driving wheeled tractors. The tracks are what allow the system to have great precision in an efficient and simple manner. There are many reasons of why Tracks are superior, a few of which are listed below.

  1. Tracks provide great precision and allow the the FarmBot to return to the same position repeatedly without the use of...
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
  • Water Jet Cutting with Big Blue Saw

    4 hours ago • 0 comments

    FarmBot needs to be designed with manufacturability in mind – not just on an industrial manufacturing scale, but on the individual maker/hacker scale as well. After all, our goal is to empower people to build FarmBots! With this in mind, we have designed much of our hardware to be manufacturable using common tools and processes such as 3D printing, drilling, and sawing; as well as common materials including standardized hardware, aluminum extrusions, and aluminum connecting plates.

    We’d like to share with you how we manufacture our 5mm thick aluminum connecting plates – an integral component of FarmBot that connects the extrusions, V-wheels, motors, and other components together throughout the hardware system. While the plates can be easily produced using a drill press and a hacksaw at home or in a MakerSpace, we’re going to share how we manufacture them in bulk with a high degree of accuracy.

    The process we use is called water jet cutting, where a high pressure stream of water with an abrasive compound (often diamond dust) mixed into it is used to cut through a variety of materials. The machines are often very large and very expensive, though very powerful and versatile. Most machines can cut virtually any material including plastics, woods, aluminums, and steels. The process lends itself well to manufacturing our 5mm thick aluminum plates.

    At, we’ve been fortunate to work with a fantastic water jet cutting service provider named Big Blue Saw. Big Blue Saw is attractive for us to use because they are an online-first service that really caters to their customer’s needs. On their website you can upload a .DXF file of your parts, choose your material and quantity, and receive an instant quote for free. If the price looks right, you can place the order right then and there, and your parts will arrive at your doorstep within a week or two!


    So far we’ve purchased about 12 FarmBot’s worth of aluminum plates over three different orders from Big Blue Saw. We’ve been very happy with their service, the fair price, and the quality of the components such that we’ll be continuing to go back to them for all of our water jet cutting needs.



    If you’re planning on manufacturing your own FarmBot, we highly recommend downloading our .DXF file for all of FarmBot’s plates, and sending the job over to Big Blue Saw. There is also a basic finishing option for components, though we haven’t tried that out yet because we’re still just building prototpyes. However, once we begin selling FarmBot kits for others, we’ll be sure to polish up all of the plates for a professional, high-quality aesthetic.

  • FarmBot Video for the 2015 Hackaday Prize Semifinals

    8 days ago • 0 comments

  • FarmBot Genesis V0.8 Documentation is now Complete!

    8 days ago • 0 comments

    We just wrapped up the documentation for FarmBot Genesis V0.8! In this version, we added bills of materials for each sub-assembly, more detailed and photo heavy assembly instructions for each sub-assembly, and details for setting up the software and electronics.

    If you have any questions or issues, drop us a line in our support forum.

View all 36 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?

Garrett Herschleb wrote a year ago 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 a year ago 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