Does this project spark your interest?

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

FarmBot - CNC Farming and Gardening

FarmBot is an open-source automated precision 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 2 months ago.

FarmBot is an open-source and scalable automated precision farming machine and software package designed from the ground up with today’s DIY technologies. Similar to 3D printers and CNC milling machines, FarmBot hardware employs linear guides in the X, Y, and Z directions that allow for tooling such as plows, seed injectors, watering nozzles, and sensors, 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. 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 upload the numerical control code to the hardware. Other features of the software include storing and manipulating data maps, a decision support system to facilitate data driven design, access to an open plant data repository, and analytics. More info is available at

A note to the judges regarding the judging criteria of the semifinals round :)

FarmBot is completely Open-Source. We document everything we do on our own dedicated mediawiki installation at, share and welcome feedback on our social media profiles, and all of our code lives openly on GitHub. We have chosen permissive licenses so that anyone can use what we create in any way they want.

We like to think that FarmBot is a clever mashup of existing technologies coupled with an innovative business and development model. We're essentially creating a CNC machine with special tooling and software for growing plants. We use all the same equipment as the DIY 3D printers and are very inspired by the RepRap project. Stepper motors, aluminum extrusions, Arduinos, RAMPS, and the Raspberry Pi are at the core of FarmBot. The development model is simple: share everything, get people excited, invite them to contribute, and eventually sell software as a service and hardware kits for the less technically inclined.

FarmBot is by nature a connected device. Much of what makes it so unique is the software up in the cloud communicating with the device, sending it the most updated information to make the growing data-driven and responsive to changing conditions. We are building:

  • A web application similar to "Farmville" so the user can design their farm or garden
  • A decision support system to make optimized decisions based on soil data, weather forecasts, and plant needs
  • An open database (OpenFarm) for growing plants to ensure FarmBot knows what it is doing and has the most updated information available

Regarding reproduce-ability, we let our Mission Statement do the talking. The FarmBot Project exists 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.

We're excited to reach a point where many innovators, entrepreneurs, designers, and engineers are our community that loves to develop, hack, and modify what FarmBot can do, bring the technology to new applications. One idea already presented is to have an automated greenhouse on other planets. FarmBot would not only grow the plants, but moderate and control the environment as well!

Though what we have today isn't worth reproducing, we are working hard to add features and functions so that when someone does produce a FarmBot, it will be a useful device in their life.

To get there, FarmBot requires a multifaceted engineering team. The hardware itself has many design constraints: it must withstand being outdoors, it must be easily manufactured at home or in a MakerSpace, it must be modular and extensible, and it incorporates unique parts (such as the universal tool mount) that have been designed and tested and redesigned many times over. The software is also an engineering innovation: taking a blend of different data sources such as the plant growing data, weather reports and forecasts, user preferences, soil data, and the user's design choices to create an optimized schedule of operations for the bot to execute.

At the moment, there is not a very intuitive interface, but these things take time to build. We have a plan (as outlined in the whitepaper) and a team, and the beginnings of our web application. You can help us move forward to build "Farmville in real life"! Contact Rory Aronson at

Regarding manufacturability, this is our primary focus on the hardware development side. How might we design parts that can be produced at home with nothing more than a drill? How can we simplify assembly to use 3 tools or less to build an entire bot? These are questions we keep in mind every day and we hope our hardware designs reflect that.


We're currently working on FarmBot Genesis, a small scale FarmBot primarily constructed from V-Slot aluminum extrusions and aluminum plates and brackets. Genesis is driven by NEMA 17 stepper motors, an Arduino Mega with...

Read more »

  • 1 × OpenBuilds 20x40mm V-Slot 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.
  • 1 × CNC routed or Water Jet cut 3mm Aluminum Plates All of the plates can be cut out of a single 2ft x 2ft sheet. The DXF drawing for all of the plates can be found in the manufacturing files section of each log.
  • 1 × Raspberry Pi Model B+
  • 1 × Arduino Mega + RAMPS
  • 3 × NEMA 17 Stepper Motors
  • 6 × Mechanical Endstops
  • 1 × 3D Printed Universal Tool Mount .STL file is available in the manufacturing folder for each log
  • 60 × Tee Nuts from OpenBuilds
  • 60 × M5 x 8mm low profile screws from OpenBiulds
  • 3 × GT2 Timing belts, pulleys, and flex couplings Depending on the size of your FarmBot, you will have to figure out how much length you need

See all components

Project logs
  • FarmBot Arduino Software Update – July 16, 2015

    2 months ago • 0 comments

    We just released a new version of FarmBot’s Arduino software that makes acceleration and deceleration smoother and increases the maximum speed of the device. This improvement comes from using an interrupt based architecture rather than a delay based one. Watch the video below to see the performance increase!

  • New Synchronization Architecture

    2 months ago • 0 comments

    Since we started building the FarmBot web application, our method to synchronize data with the device has been as follows:

    1. The user opens up the web application in the web browser. When they do this, all of their scheduled sequences are loaded from the web application’s server into the browser.
    2. The user makes some changes to the scheduled sequences, which are saved in the web browser and also uploaded to the web application’s server.
    3. When the user pressed the sync button, the browser would upload all data directly to the FarmBot device.

    This worked great for manual synchronization whenever the user was actively using the web application. However, this method did not support the FarmBot device synchronizing with the web application automatically without a browser session and the user.

    Today we’re happy to announce that we’ve rolled out a new architecture for synchronizing data across the web application, the FarmBot device, and the user’s web browser. FarmBot now has the ability to synchronize schedules while the user is away from the browser. This is significant for upcoming features, such as the ability to adapt schedules to the weather conditions automatically. For manual synchronization it works as follows:

    1. The user opens up the web application in the web browser. When they do this, all of their scheduled sequences are loaded from the web application’s server into the browser.
    2. The user makes some changes to the scheduled sequences, which are saved in the web browser and also uploaded to the web application’s server.
    3. When the user presses the sync button, the browser tells the FarmBot device “Hey, you have a new package, go pick it up”. The FarmBot device then downloads the new schedule from the web application’s server.

    Meanwhile, automatic synchronization works as follows:

    1. The FarmBot device is set to go check for new packages at the web application’s server at a certain time interval such as every hour.

    This new architecture sets us up for a more automated and dynamic future of FarmBot control. Want to help us build the future of food production? Check out our web application repository on GitHub and stay tuned as we roll out more new features in the weeks to come.

  • Genesis V0.6 Documentation

    2 months ago • 0 comments

    We’ve been a little behind on the documentation train and are trying hard to catch up. We just finished up the docs for FarmBot Genesis V0.6, check em out! Notice that these docs are now hosted on this website rather than the community wiki. Don’t worry, we’ll copy them over there soon enough, though we do want to make clear the separation between the community owned and edited wiki content and FarmBot Inc’s ‘pro’ documentation that will be here on this website. Basically, we can’t guarantee any of the information on the wiki because anyone can write and edit it, but we can guarantee that what we write here is accurate. And if its not, we’ll make it right!

    Genesis V0.6 was a very minor update to Genesis V0.5, in fact, the only changes are with the Universal Tool Mounting System. For this reason, you may find that this documentation page looks nearly identical to that of Genesis V0.5 and you may just want to skip down to the Universal Tool Mount Section to see what is new. Here is a summary:

    • Gluing in the magnets on the V0.5 Universal Tool Mount and Tools was problematic, the V0.6 design uses screws to hold the magnets in place
    • Gluing on rubber gaskets to the V0.5 tool mount proved to be unreliable. The V6 liquid lines now use o-rings held in place by a small channel in order to make a seal with the tool.
    • Experimented with screw-in stainless steel barbs for the Universal Tool Mount’s liquid lines
    • Experimented with a miniature Universal Tool Mount and seed injector

    Note: The prototypes produced and seen in some of these photos used acrylic for the plates and was of a very small scale. This worked great for a prototype but should not be used for a real FarmBot because the acrylic is very flimsy. Also, the size is good for testing the hardware, but not useful for growing a significant amount of food.

    Page Contents







    Change Log
    • No changes were made

    • V5_Tracks_Render_2
    • V5_Tool_Bay_Render_1
    Tracks Assembly Instructions
    1. Setup the Posts
      1. Depending on where you are installing your FarmBot will change what material and how you might setup your Track Posts. You might use 2x4s of wood, or aluminum extrusions, or existing infrastructure. The posts might attach to a wooden raised bed, or be set in the ground or in small foundations. The choice is up to you how you set this up.
      2. 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 1500mm apart, center to center unless you are using shorter track lengths, 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.
      3. If you are setting up multiple track sections (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.
      4. 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 sets is consistent, if it is not, there will be unnecessary forces placed on the Gantry and Tracks.
    2. Attach the Track Plates
      1. The track plates should be screwed onto the inside of the posts using the appropriate fasteners: 8mm M5 screws and tee nuts if the posts are aluminum extrusions, standard wood screws if attaching onto wood posts. The top of the posts should NOT be flush with the top of the plates. Rather, the top of the posts should come up to cover only half of the plates.
    • V5_Tracks_1
    • V5_Tracks_2
    • V5_Tracks_3
    • V5_Tracks_4
    • V5_Tracks_5
    • V5_Tracks_6


    Gantry Change Log
    • No changes were made
    • V5_Gantry_Render_1
    • V5_Gantry_Render_2
    • V5_Gantry_Render_3
    Gantry Assembly InstructionsAssemble the Gantry Plates
    1. Gather and lay out all of the parts. You will need: 2 Gantry Plates, 8 solid V-wheel kits, and 2 eccentric spacers. It is best to lay out the gantry plates as a...
    Read more »

View all 29 project logs


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