Nerves Helps Drive Sustainable Farming Project

By: Jean DerGurahian
FarmBot embedded system

Embedded systems are making machines and devices smarter and more accessible across a range of industries, from manufacturing and farming to energy and transportation. In particular, Nerves, a specialized ecosystem for building advanced embedded systems using the Elixir programming language, is making waves in the engineering and business communities. In this series, DockYard explores how embedded software and Nerves are shaping new applications.

Nerves unleashes significant potential for applications by combining three components:

  • Platform - a customized, minimal Buildroot-derived Linux that boots directly to the BEAM VM.
  • Framework - ready-to-go library of Elixir modules.
  • Tooling - powerful command-line tools to manage builds, update firmware, configure devices, and more.

Using that Nerves ecosystem, FarmBot is leading efforts to increase sustainable agriculture with the help of software-driven robotics. The company is developing precision farming kits based on its open-source project, including CNC equipment and applications to design and automate farming. The kit comprises a robotic machine controlled by open-source software and design files that will plant, water, and maintain a garden. Farmers can collect data and monitor performance of those tools through web-based interfaces from any computer or device.

This five-year-old project aimed at making agriculture and sustainable farming more accessible is gaining momentum, thanks to its recent focus on Nerves, according to Connor Rigby, embedded systems engineer with FarmBot, who recently discussed the company’s plans with DockYard. FarmBot needed a software system that worked reliably with the computer embedded in its robotic farming device. The Nerves ecosystem fit the bill better than other software options, allowing FarmBot to develop a reliable, high-performing precision farming kit.

Improved tooling with Nerves

When interfacing with hardware, you can’t always just restart a part. That’s where the tooling component of the Nerves environment helps. FarmBot moved its OS from Ruby to Elixir to take advantage of its improved tooling and better fault tolerance support. “There are not many other options as full-featured as Nerves,” Rigby says. “And it’s a joy to work in; it is fun and effective.”

Fault tolerance during setup, typically with the early boot of the robotics device, particularly can be a challenge. But a lot of the features to manage setbacks are built into the Nerves ecosystem. Nerves allows Rigby to run Observer, a graphical tool that provides access to information on individual processes and a whole system’s statistics, remotely on the hardware. “No other tooling has the usefulness of Observer,” he says. It also allows viewing BEAM VM CPU, Memory, and individual VM process states to quickly spot bottlenecks. That helps FarmBot with its program design.

FarmBot has three major branches on the GitHub repository - master, staging, and beta. Users can opt-in to the beta branch through the FarmBot web UI and it will automatically check for release candidate builds, then download and apply them. However, FarmBot hopes to build a Nerves Hub domain that will automatically push software updates to the robotic devices.

FarmBot’s hosted service is still running a Rails application. The company has Ruby, Erlang as a message broker using RabbitMQ, JavaScript for its front end, and C for the firmware.

Future of Nerves and farming

FarmBot is continuing to look at the best open source technologies with the Nerves project to support its devices as it ramps up hiring and selling kits to farmers.

Open source technology is enhancing agriculture. DockYard supports Elixir development and the Nerves ecosystem — look for more in our series of Nerves blog posts exploring the ways these technologies can build a smarter, sustainable future.

DockYard will be presenting at #ElixirConf; join us to learn more about the impact of the Nerves ecosystem in product development.

DockYard is a digital product agency offering exceptional user experience, design, full stack engineering, web app development, software, Ember, Elixir, and Phoenix services, consulting, and training.