My project, FarmSight Field Survey Rover is a versatile, field-ready rover developed for field data collection and monitoring in agricultural environments. This project is powered by the Seeed Maixduino K210 and Arduino Mega 2560, chosen for their processing power and expanded I/O capabilities, respectively.
The rover is equipped with multi-sensor arrays, GUI-based remote control, and a servo arm detachable attachments, making it adaptable to a wide range of tasks beyond basic surveying.
Equipped with a range of sensors and real-time streaming capabilities enabling on-the-go image analysis or identifying plant health indicators., this rover offers actionable data for optimizing farm management.
The project employs a Seeed Maixduino K210 microcontroller, which powers data processing and live video streaming, alongside an Arduino Mega 2560 for extended control and flexibility
Impact Statement
I’ve built FarmSight Field Survey Rover, a versatile, maixduino powered rover designed to simplify field surveying and real-time monitoring for efficient farm management. With its robust sensors, customizable GUI, and remote control capabilities, it enhances precision and productivity, offering a reliable tool for sustainable agriculture.
Components and Software
Hardware and Electronics
Main Microcontrollers:
Control and Feedback Systems:
LED Feedback:
Side LEDs x2
Power Source: Dual battery setup with 7.4V and 12V batteries and buck converter x1
Mobility:
Cytron MDD20A motor drivers x3
Chassis: All-terrain aluminum frame with a rocker-bogie like system
Servo Arm: Dual Shaft 16kg metal gear servo x3
Remote Control System: FS-I6. x1
Supporting Materials:
PVC pipes
CNC-cut MDF
Silver foil
Nuts, bolts, and zip ties
To see the full demonstration video, click on the YouTube Video below.
Software and GUI Interface
Graphical User Interface (GUI):
Platform: Python with Pygame.
Functionality: Displays real-time data from the rover’s sensors, Video feed from the camera, and provides interactive control buttons for movement. Option for Recording video feed. Displays data such as soil moisture from soil sampling arm, battery percentage, and signal strength.
Control System:
Modes: Provides both autonomous and manual control modes.
Navigation Control: The GUI and iBus receiver translates control signals from the FS-i6 transmitter to the Mega 2560, which then drives the motors accordingly.
Servo Control: FS-i6 transmitter allow for control of vertical and horizontal servos to position the rover’s arm for various actions, such as soil sampling.
Lighting Animations: WS2812B LED animations respond to rover states (e.g., idle, moving, turning, break) for enhanced visibility.
Video Streaming and Image Processing:
Image Enhancement: The K210’s AI capabilities handle live video streaming and can process and enhance images before sending them to the GUI.
Saturation Adjustment: Images from the camera undergo saturation enhancement for better field visibility and are displayed in real time on the GUI.
Live video streaming with both day and night visibility
(FROM RECORD FUNCTION IN GUI)
Design and Functionality Explanition
Maixduino K210 powers the rover, enabling on-the-go image analysis, such as identifying plant health indicators. I prepared `the rocker-bogie type system (using PVC pipes) for excellent terrain adaptability, ensuring stable performance on rocky or uneven surfaces. The aluminum chassis, with its silver foil layer, provides weather and heat resistance, making it suitable for diverse environmental conditions.
1. Hardware and Electronics
Microcontrollers:
Seeed Maixduino K210:
Specifications: Dual-core RISC-V processor, 400 MHz; AI camera support; onboard WiFi; SPI, I2C, and UART support.
Functionality: Handles image processing, video streaming, and WiFi communication for remote monitoring.
Arduino Mega 2560:
Specifications: 8-bit AVR processor; 54 digital I/O pins; 16 analog inputs.
Functionality: Controls motors, servos, and collects sensor data; integrates with the iBus receiver for remote control commands.
Sensors:
Soil Moisture Sensor:
Specifications: Analog soil moisture sensor capable of measuring soil moisture levels in the range of 0 to 1023 (dry to wet).
Functionality: Monitors soil conditions in real-time, helping assess hydration levels in the field.
Voltage and Current Sensors:
Specifications: Measures voltage and current output from the battery to monitor power consumption.
Functionality: Provides data for battery health and rover power status, ensuring reliable operation.
Motor Drivers:
Cytron MD30C:
Specifications: 30A continuous current per channel; capable of controlling DC motors up to 30V.
Functionality: Controls the rover’s drive motors, allowing forward, backward, and turning movements.
Servos:
Dual shaft metal gear Servo:
Specifications: 180-degree rotation; 16 kg-cm torque.
Functionality: Powers the detachable servo arm for interacting with objects or soil samples in the field.
LED Indicators and Animations:
WS2812B RGB LEDs (Indication and Ring Light):
Specifications: Individually addressable RGB LEDs.
Functionality: Provides state indication via animations for various rover statuses
Power Supply:
Battery:
Specifications: Lithium Polymer battery, capacity as required for extended operation. (12v 3s 5200mah)
Camera Module:
Specification: Compatible with the Maixduino K210 for live image capture and streaming.
Functionality: Provides live video feedback to the control GUI for monitoring the field in real-time.
FS-i6 Transmitter and iBus Receiver:
Specifications: 2.4 GHz remote control system with 6 channels.
Functionality: Offers manual control over the rover’s movement and arm manipulation, allowing precise navigation and surveying
2. Software and GUI Interface
Python GUI (Pygame): Provides interactive control with buttons for rover actions, sensor data monitoring, battery levels, record and live video feed.
Control Logic: Arduino Mega 2560 manages the servo arm and motor drivers, linked to the FS-I6 transmitter.
Lighting Animations: WS2812B LED animations respond to rover states (e.g., idle, moving, turning, break) for enhanced visibility.
3. IoT and local Connectivity
With the Maixduino, the Field Survey Rover streams sensor data to GUI DASHBOARD, allowing for real-time monitoring with live video stream and data access.
The rover can be set to:
Remote-Controlled Mode: Operated via FSi6 / GUI flexible, on-the-go control.
Autonomous Mode: Follows a programmed path (code and pre calculation based).
4. Versatile Sensor Attachments
One of the rover’s strongest featuresis its modular sensor attachment system. I designed the mount to be easily detachable, making it quick to swap in different sensors depending on the mission. This flexibility means the Field Survey Rover can take on a wide range of tasks, from soil moisture analysis to air quality monitoring or even general surveillance—extending its usefulness beyond just agriculture.
Methodology / Strategy
CIRCUIT DIAGRAM AND EXPLANITION
Circuit Diagram Explanation
This circuit diagram illustrates the interconnected components of the FarmSight Field Survey Rover. The core controllers, Seeed Maixduino K210 and Arduino Mega 2560, manage sensor data acquisition, motor control, and LED indicators. The six DC gear motors, are driven by three Cytron MDD20A motor drivers, allowing precise movement control. Power is supplied by a 12V Li-Po battery for the motors and a 7.4V Li-ion battery for the electronics, regulated by a step-down buck converter. Additional components, including the WS2812B ring light, dot matrix display, and soil moisture sensor, support field survey and monitoring tasks.
Applications & Impact
The Rover is built primarily for agricultural fieldwork, offering remote operation and efficient navigation over challenging terrain to gather real-time data on soil moisture and environmental conditions.
This data enables farmers to make precise decisions for irrigation, crop planning, and soil management, supporting more efficient farming practices.
Its adaptable design allows day-and-night monitoring, reducing the need for manual field checks and increasing the efficiency of large-scale farm management. Additionally, the rover can be reconfigured for other uses, such as environmental monitoring, remote inspections, or industrial maintenance. Using the Maixduino for local data processing, it minimizes latency and conserves cloud bandwidth, ideal for real-time tasks.
Summary
The FarmSight Field Survey Rover combines real-time data collection, precise control, and responsive monitoring with robust hardware and a user-friendly GUI. With a suite of sensors, high-quality servos, a versatile control system, and remote monitoring capabilities, it’s an ideal tool for autonomous field surveys and agricultural monitoring.
CODE EXPLANATION
(SERVER SIDE)
GITHUB
Imports and Initial Setup: Imports modules for networking (socket), threading, GUI (pygame), and image processing (PIL). Constants for IP, port, GUI dimensions, image size, and color enhancement factor. Variables include `recording` (status) and `frames` (stores GIF frames).
Pygame Initialization: Initializes Pygame, creates a display window, and loads fonts for GUI text.
Image Processing (Enhance_saturation): Enhances image color saturation, rotates, resizes, and adds rounded corners for a polished look.
Command Sending (Send_control_command): Placeholder function to send control commands like "forward", "left", etc., based on user input.
Image Receiving (Receive_thread): Connects to the rover’s camera, processes incoming image data, enhances it, displays it on the GUI, and saves frames if recording.
Drawing Control Buttons (Draw_control_buttons): Creates interactive control buttons (Forward, Backward, Left, Right, and Record) that send commands and show recording status.
Displaying Texts (Draw_texts): Displays title, contest info, and real-time status indicators (e.g., battery level, connection status) with color-coding for clarity.
Server Setup (Start_server): Sets up a server to handle connections from clients, managing each client on a separate thread.
Main Event Loop: Listens for user events (quit, keyboard, mouse), updates recording status, and saves frames as a GIF when recording stops.
(CLIENT SIDE)
Network Setup: Initializes network connections for ESP32, ESP AT, and WIZnet5k.
WiFi Connection: Functions `enable_esp32()` and `enable_espat()` try connecting to WiFi multiple times, printing the connection status.
Ethernet Connection: The `network_wiznet5k()` function configures Ethernet over SPI for WIZnet5k hardware, trying connections and printing status.
Main Loop: Captures and compresses images using `sensor.snapshot()`.
Image Transmission: Sends images in 2 KB chunks to the server at `addr` IP, with error handling and retries.
Performance Tracking: Monitors frame rate (FPS) and disconnects if errors exceed a set limit.
Purpose: Enables remote real-time image display from Maixduino to a server.
(ARDUINO MEGA)
Dot Matrix Display: Configures and controls a 4-device matrix to display text like "DigiKey" and a scrolling message.
Motor Control: Uses CytronMotorDriver to control six motors for rover movement (left, right, front, back).
Servo Control: Attaches three servos to control vertical and horizontal arm movements.
iBus Configuration: Reads data from an external controller (RC receiver) using the IBusBM library.Rover Control Variables: Manages throttle, steering, brake, and speed scaling.
LED Breathing Effect: Creates a fading in and out effect on left and right LEDs.
Main Setup: Initializes serial, iBus, display, servos, and LEDs.
Main Loop: Continuously reads iBus data, updates motor speeds, servo positions, and manages display and LED effects.
Motor Control Functio: Adjusts motor speeds based on throttle, steering, and brake input.
Smooth Servo Control: Moves servos smoothly to target angles with interpolation.
Breathing and Blinking LEDs: Controls LED brightness with breathing effect and blinking at full and zero brightness.
( THERE ARE MANY CODES SO I PREFFERED UPLOADING GITHUB LINKS FOR BETTER UNDERSTANDING AND EXPLAINATION OF CODES)
Below, you can find the link to the GitHub repository, which includes the code used in this project.