Autonomous Agri-robot Control System

Controlling autonomous robots the size of a small tractor for planting, weeding and harvesting

Similar projects worth following
Having robots on farms could negate the need for pesticides, chemicals and destruction of soil structure, giving us hope for the future of our planet. The machines need to be fully autonomous and features in the control system should include:

1. High accuracy, error correcting GPS/GNSS
2. Super fast multi-core micro processor for controlling multiple electric motors
3. Cellular 2G/3G/4G data comms where WIFI is not practical
4. Object recognition and positioning for distinguishing plants from soil.
5. Digital compass
6. Screens, buzzers and LEDs for status report / debugging
7. Text to Voice and speakers for interaction with humans
8. LIDAR / ultra sonic sensors for detecting unexpected objects in pathway

The system so far has 3 Arduinos and one TC275 all linked on one I2C bus. At present, the system will concentrate on one easy task - weed prevention, which requires the task of distinguishing crop from soil with a Pixy CMU5 module.

License: Attribution-NonCommercial-ShareAlike 2.5 Generic (CC BY-NC-SA 2.5)

A lot of this project revolves around the use of a very fast 3 core processor, the TC275. This is the gadget that holds the world record (16 Mar 2018) for solving the Rubik's cube in something like 0.3 seconds. 

Firstly, each core can communicate seamlessly with the others so, for example, core 0 could be controlling motors whilst core 1 sends and receives data to other modules such as the GPRS and TFT screens. The advantage is that core 0 can run at full speed and toggle digital output pins at very high speed (10 nano seconds), which is fast enough for most motors, particularly if servo 'gearing' is used.

If the code on core 0 is not too protracted, the core can run incredibly fast with lots of motors accelerating, constant speed, decelerating. How many motors? I don't know! 


Arduino Nano controls Adafruit SIM800 GPRS module

ino - 8.67 kB - 03/20/2018 at 09:00



The main MCU which is also 'Master' on the I2C bus. Controls motors and one TFT screen.

ino - 30.03 kB - 03/20/2018 at 08:43



This MCU currently hosts a magnetic compass and receives NMEA data from the Ublox network. It's connected to the TC275 MCU as a slave on I2C bus.

ino - 17.59 kB - 03/19/2018 at 13:26


text/plain - 5.72 kB - 03/19/2018 at 11:06


Ublox Base 24 hours .txt

Takes 24 hours to get an accurate location average.

plain - 5.86 kB - 03/19/2018 at 11:06


View all 8 files

View all 27 components

  • PCB Design

    TegwynTwmffat☠03/16/2018 at 09:23 0 comments

    The design is 2 layer, with top layer tracks in red and bottom layer in blue. Board outline is green and copper pour is red. At the bottom is mounting for 2 MCUs with the same footprint as an Arduino Mega / Due. At present, bottom right is inhabited by a TC275 - a 3 core MCU which runs at 200 MHz - perfect for controlling a relatively large number of motors.

    Top left is a weird looking shape that houses the GPS module - a Ublox C94 Rover, which bolts onto the under side of the PCB. Bolting onto the top side is the SIM800 cellular module, a digital compass (bottom left) and some TFT screens (middle). There's also mountings for a couple of Arduino Nanos, a text to speech module and a 35W audio amplifier.

View project log

  • 1
    Surface Mount Soldering

    First thing is to solder all the 1206 components - resistors, LEDs and capacitors. No stencil is required - just a small amount of solder paste and a reflow heat gun. Fear not - soldering this size SMT is easy!

    Sometimes it's difficult to spot the polarity of the LEDs so it's a good idea to have a flying 5v power supply to check that the LEDs work before applying the final heat. Lay the LED in the solder on the pads and test they work. 

    The green LEDs require a higher resistor than the others so 2k is used with these and 1k with the others. 

    The 0 ohm resistors can be left off  - they give options to connect the SIM800 to the MEGA 2560 instead of a NANO. The 2560 tends to be more stable in operation.

  • 2
    Mount the Buzzers, switches, regulators, screw terminals

    These items are very robust, so need to be soldered next. Screw connectors are very useful where there is any vibration in the machine as they are pretty solid. Otherwise there are female connectors for flying leads on the stackable pins on the MCUs. The buzzers require 100 ohm resistors to protect the MCU from supplying too much current and burning out the pin circuit.

    There are some random locations for ground and 5v screw terminals which are very useful. The 12V screw terminals are all 5.08 mm pitch.

    NB. The Ublox Rover module can be connected to the PCB 12v supply or to a 10 to 30 VDC battery which is useful for keeping it 'live'.

  • 3
    Wire on the SIM800 battery

    The SIM800 wont work without a battery and it is wired onto the underside of the PCB, but not connected to the PCB ie not soldered, just tied on. There are special holes in the PCB for this.

View all 12 instructions

Enjoy this project?



merck.ding wrote 03/20/2018 at 06:57 point

This is a very good idea and I am very much looking forward to you completing it.

  Are you sure? yes | no

TegwynTwmffat☠ wrote 03/20/2018 at 08:35 point

Thanks for the encouragement!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates