AgriBot: The Intelligent Seed Planter
Project Idea (Brief Description): AgriBot: The Intelligent Seed Planter is an autonomous robot that analyzes soil conditions such as moisture, pH, and temperature, then automatically selects and plant
Videos
Description
Quick concept
A small wheeled rover carrying sensors (capacitive moisture probe, pH probe, soil temperature), a seed magazine with a servo-actuated dropper, and a simple digging/pressing actuator. A Raspberry Pi runs higher-level logic (maps, decisions, logging, UI) while an Arduino handles fast I/O (sensors, motor drivers, servos). Rover moves to sampling points, measures soil, chooses a seed from a rule table, creates a small hole (or presses the seed into loose soil), dispenses one seed, covers/presses it, and repeats.
Main subsystems
1. Chassis & locomotion — 4WD or differential 2WD with caster; small DC gear motors + encoders (or steppers) for precise positioning.
2. Power — 12V battery pack (LiFePO4 or Li-ion), voltage regulators for 5V/3.3V electronics.
3. Sensing — soil moisture (capacitive), soil pH probe, soil temperature (DS18B20), optional light sensor, optional N-P-K sensor module (if you want fertilizer guidance).
4. Seed handling — seed magazine (carousel or linear hopper) + servo-operated dropper for single-seed release; if needed, vibratory feeder.
5. Planting mechanism — small linear actuator (micro linear actuator or servo+linkage) with a small trowel or push rod to make a hole / press the seed.
6. Control electronics — Arduino Nano/Uno (real-time I/O), Raspberry Pi 4 (decision + UI + logging + mapping). Motor drivers (TB6612 or BTS7960 / L298N), servo drivers (PCA9685 if many servos).
7. Software — sensor calibration routines, seed-selection rules, data logging, simple web UI for monitoring.
Bill of Materials (prototype grade)
(Quantities for a single rover; price ranges are approximate — adapt to local suppliers.)
Chassis: 30×30cm aluminum/plexiglass base + mounting brackets — 1
DC gear motors (250–500 RPM) with mounting + wheels — 2 or 4 (depending)
Motor drivers: TB6612 (for low current) or BTS7960 (for higher current) — 1–2
Wheel encoders (optical or magnetic) or motor encoders — 2
Microcontroller: Arduino Uno or Nano — 1
SBC: Raspberry Pi 4 (4 GB recommended) — 1
Battery: 12V 5–10 Ah Li-ion or LiFePO4 pack + battery management — 1
Voltage regulators: 5V 3A (for Pi), 5V for servos + 3.3V for sensors — 2
Soil moisture sensor (capacitive) — 1–3
Soil pH probe (with amplifier / BNC + signal board) — 1
Soil temperature probe DS18B20 — 1
NPK sensor module (optional, hobby modules available) — 1
Linear actuator (12V small, 20–50 mm stroke) or strong continuous-rotation servo with cam for digging — 1
Micro servos (SG90/ES08/metal gear) for seed dropper + small gate — 2–3
Seed magazine (3D printed carousel or acrylic tube + dividers) — 1
PCA9685 16-channel PWM driver (optional) — 1
Wires, connectors, screws, 3D printed parts for brackets, funnel, seed gate — assorted
Misc: small trowel metal plate, springs, compression spring for cover press — assorted
SD card for Pi, micro USB cables, HDMI (for setup), small breadboard for prototyping.
Basic sizing & power math (example)
Estimate currents so you pick a suitable battery. Example:
Two DC gear motors idle/low load: 0.5 A each = 1.0 A
Motors under load: 1.5 A each → 3.0 A total (peak)
Raspberry Pi + Arduino + sensors + servos average: 0.5–1.0 A at 5V (via step-down).
Linear actuator peak: 1.0–2.0 A at actuation.
Example continuous average draw (safe): 2.5 A at 12 V. If you want 2 hours of runtime:
2.5 A × 2 h = 5.0 Ah required. So choose a 12 V 7–10 Ah battery for margin. (Arithmetic shown: 2.5 × 2 = 5.0)
5 — Mechanical design & seed mechanism (practical prototype)
Chassis: flat base with 4 corners for motors/wheels. Keep center for battery + electronics.
Seed magazine: 3D-print a vertical carousel with e.g. 6 compartments (one seed per compartment). Rotate the carousel with a small stepper or servo; align compartment over a funnel and actuate a small servo gate to drop one seed. Simpler: linear hopper with separators and a servo that pushes one seed through a narrow shoot.
Planting actuation: two safe, simple options:
Press-in method (recommended for prototype): no digging — use a small linear actuator to press the seed into soil about 1–2 cm and then withdraw. Easier, safer, and works for small seeds.
Mini trowel method: attach a tiny trowel to actuator, lower it to create a 2–3 cm hole, dispense seed, then push soil back. More mechanical complexity but better for larger seeds.
Seed covering: a small spoon-shaped pusher on a servo to move soil back over the seed.
Electronics wiring & architecture (high level)
Power lines
Battery 12V -> motor driver Vmotor input.
Battery 12V -> DC-DC buck converter to 5V -> Raspberry Pi (via USB-C power) and Arduino (Vin or 5V depending).
Separate regulated 5V for servos (can be same but keep current capacity high).
Control flow
Raspberry Pi communicates with Arduino via USB serial (or I2C) for sensor reads & actuator commands. Raspberry Pi runs decision logic and GUI; Arduino handles direct ADC, PWM, servo pulses and motor low-level control.
Sensors
Soil moisture capacitive sensor -> Arduino analog input (via proper voltage divider or ADC reference).
pH probe -> pH amplifier board -> Arduino analog input. pH probes need calibration solutions (pH 4, 7, 10).
DS18B20 -> Arduino digital one-wire.
Motor control
Encoder signals -> Arduino interrupt pins for odometry.
Motor driver PWM from Arduino -> motors.
Seed actuator
Servo(s) controlled by Arduino (or PCA9685 if many servos).
Linear actuator
Controlled via motor driver or relay; position sensor or limit switches recommended.
Software architecture & flow
High-level loop:
1. Navigate to next sampling point (preset grid or GPS waypoint).
2. Lower sampling arm / insert probe (if required). Read moisture, pH, temp.
3. Send raw data to Pi; Pi uses seed-selection rules to choose a seed type.
4. Move to planting pose (same spot). Activate planting actuator to make hole/press.
5. Rotate magazine to selected seed, open dropper to release exactly one seed.
6. Cover/press seed. Log event, image (optional), and sensor values.
7. Move to next point.
State machine (simple): IDLE → NAVIGATE → SAMPLE → DECIDE → PLANT → LOG → NAVIGATE.
Seed selection rules (example table)
Create a small rule table mapping pH & moisture to seed options. Example (values illustrative — calibrate locally):
pH < 5.5: choose acid-tolerant seeds (e.g., clover)
pH 5.5–6.5: choose beans/peas
pH 6.5–7.5: choose lettuce/most vegetables
Moisture < 15% (very dry): choose drought-tolerant seeds (sorghum or native grass)
Moisture 15–40%: choose most vegetables
Temperature < 10°C: delay planting (log and skip)
You’ll want a small CSV of seeds: {seed_id, name, pH_min, pH_max, moist_min, moist_max, depth_mm, spacing_cm}. Pi reads this and finds matches.
Calibration routines
pH probe: calibrate with pH 7 and pH 4 (or 10) buffer solutions; store slope & offset.
Moisture sensor: calibrate against known moisture content: dry soil (0%), field capacity (~25–40% depending on soil), saturated. Map analog readings to % moisture.
Depth & seed drop: test dropper with sample seeds to tune servo pulse widths & release timing to ensure single-seed release. Use separators / restrictor to reduce double drops.
Prototype assembly steps (numbered)
1. Make the chassis: cut 30×30 cm base, mount motors and wheels, attach caster.
2. Mount battery and electronics: central battery under board, Raspberry Pi in a box with ventilation, Arduino near edge. Keep wires tidy.
3. Build seed magazine: 3D-print carousel or make acrylic tube with dividers; mount over drop funnel. Install servo to rotate or push seed.
4. Attach planting actuator: mount small linear actuator in front center, attach trowel/pressing tip. Add two limit switches for endpoints.
5. Wire motors to motor driver and motor driver to Arduino (PWM + direction). Wire encoders to Arduino interrupts.
6. Wire sensors: pH amplifier board to Arduino analog, moisture sensor to analog (use smoothing capacitor), DS18B20 to digital with pull-up resistor.
7. Power wiring: connect battery to motor driver and to DC-DC for 5V rail. Add main power switch and fuse.
8. Upload base Arduino sketch (see sample below) and boot Raspberry Pi with Python code that opens serial to Arduino.
9. Test each subsystem individually: motor spin, encoder counting, sensor reading, servo positions, actuator movement.
10. Run an end-to-end trial on lab bench, then in a small patch of soil with dummy seeds (e.g., rice) to tune depths & dispense.
Example Arduino sketch (simplified)
This reads sensors and controls servos & motors. (Use as starting point.)
// Arduino pseudo-code (trimmed)
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Servo.h>
#define MOIST_SENSOR_PIN A0
#define PH_SENSOR_PIN A1
#define DS_PIN 2
#define MOTOR_PWM 3
#define MOTOR_DIR 4
#define SEED_SERVO_PIN 5
#define ACTUATOR_PIN 6
OneWire oneWire(DS_PIN);
DallasTemperature sensors(&oneWire);
Servo seedServo;
void setup() {
Serial.begin(115200);
sensors.begin();
seedServo.attach(SEED_SERVO_PIN);
pinMode(MOTOR_PWM, OUTPUT);
pinMode(MOTOR_DIR, OUTPUT);
}
void loop() {
// simple command parser from Raspberry Pi
if(Serial.available()) {
String cmd = Serial.readStringUntil('\n');
if (cmd.startsWith("SAMPLE")) {
// take readings
int moist = analogRead(MOIST_SENSOR_PIN);
int phRaw = analogRead(PH_SENSOR_PIN);
sensors.requestTemperatures();
float soilTemp = sensors.getTempCByIndex(0);
// send back values
Serial.print("DATA ");
Serial.print(moist);
Serial.print(" ");
Serial.print(phRaw);
Serial.print(" ");
Serial.println(soilTemp);
} else if (cmd.startsWith("PLANT")) {
// args: seedIndex
// lower actuator
digitalWrite(MOTOR_DIR, LOW);
analogWrite(MOTOR_PWM, 150);
delay(600); // move time - tune
analogWrite(MOTOR_PWM, 0);
// drop seed
seedServo.write(120); delay(400);
seedServo.write(0); delay(300);
// raise actuator
digitalWrite(MOTOR_DIR, HIGH);
analogWrite(MOTOR_PWM, 150);
delay(600);
analogWrite(MOTOR_PWM, 0);
Serial.println("DONE");
}
}
}
Example Raspberry Pi decision script (Python pseudocode)
This runs higher-level logic, sends commands to Arduino, logs events.
import serial
import csv
import time
ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)
# load seeds database
seeds = []
with open('seeds.csv') as f:
reader = csv.DictReader(f)
for r in reader:
seeds.append(r)
def sample_soil():
ser.write(b"SAMPLE\n")
line = ser.readline().decode().strip()
# parse "DATA moist phRaw temp"
parts = line.split()
moist = int(parts[1])
phraw = int(parts[2])
temp = float(parts[3])
# convert raw to calibrated values - implement mapping
return {'moist': moist, 'phraw': phraw, 'temp': temp}
def choose_seed(meas):
# simple rule: find first seed whose pH range & moisture match
for s in seeds:
if meas['moist'] >= int(s['moist_min']) and meas['moist'] <= int(s['moist_max']):
if float(s['ph_min']) <= convert_ph(meas['phraw']) <= float(s['ph_max']):
return s
return None
def plant(seed):
cmd = f"PLANT {seed['id']}\n".encode()
ser.write(cmd)
resp = ser.readline().decode().strip()
return resp
# main loop
while True:
meas = sample_soil()
seed = choose_seed(meas)
if seed:
res = plant(seed)
# log
else:
# log skip
time.sleep(1)
(You'll need to implement convert_ph using calibration formulas, and map moisture analog to %.)
Testing & validation
1. Bench-test sensors and actuators separately.
2. Do repeated single-seed drops onto paper to ensure reliability (~100 cycles).
3. Calibrate pH & moisture in soils with known values.
4. Field test in a small plot with biodegradable markers and seeds you don’t mind losing. Monitor germination rates and adjust depth/spacing.
Safety & best practices
Use fuse(s) and an emergency stop switch.
Keep electronics sealed/waterproofed (pH probe cable and seed magazine can be exposed; electronics in an IP54 box).
pH probes are fragile and need regular cleaning & storage in recommended solution.
Troubleshooting tips
If seeds jam: narrow the hopper exit, add soft vibration (micro eccentric motor), or add separators.
If pH readings noisy: shield cables, use stable reference, increase averaging.
If actuator stalls: add limit switches and current sensing to avoid motor burnout.
Next improvements / future features
Add GPS RTK or RTK-enabled rover for precise planting rows.
Add camera + ML to detect weeds or rock and avoid planting.
Add soil nutrient (NPK) sensing or integrate lab sampling.
Swappable seed cartridges for many varieties.
Fleet coordination: multiple rovers planting larger areas.
What I can provide next (pick any, I’ll implement here)
A printable 3D model sketch for the seed magazine (STL-ready instructions).
Detailed wiring diagram (SVG/PDF).
Complete Arduino + Raspberry Pi package with code, CSV of seeds, and calibration tools.
A parts shopping list with links (I can fetch up-to-date prices if you want — I’ll need to browse).
Tell me which of these you want and I’ll produce it right away.
Progress During Hackathon
1. Conceptualization & Planning Defined the project idea: autonomous soil-sensing and seed-planting robot. Identified the problem statement and proposed solution. Outlined core features, tech stack, and unique selling proposition (USP). --- 2. Hardware & Prototype Development Selected Arduino and Raspberry Pi for sensor control and decision-making. Chose sensors: soil moisture, pH, and temperature. Designed basic seed dispensing and planting mechanism using micro servos and linear actuators. Built a prototype chassis (small, wheeled base) for lab testing. --- 3. Software & Algorithm Development Implemented Arduino code to read sensors and control motors/servos. Developed Python script on Raspberry Pi for seed selection logic based on soil data. Established communication between Arduino and Raspberry Pi via serial protocol. --- 4. Testing & Calibration Calibrated soil sensors for consistent readings. Tested seed dispensing mechanism for single-seed placement. Ran initial navigation and actuation trials in lab setup. --- 5. Documentation & Planning Created friction log and noted challenges during prototyping. Defined future enhancements like GPS navigation, IoT monitoring, and AI-based seed prediction. Prepared presentation materials including project title, video script, and concept diagrams. --- 6. Achievements in the Hackathon Developed a working prototype capable of sensing soil and planting seeds in a controlled environment. Demonstrated end-to-end automation workflow from soil sensing → decision making → seed planting. Created a clear roadmap for further development and funding.
Tech Stack
Fundraising Status
Prototype Development Phase The project is currently self-funded and focused on building and testing a functional prototype that demonstrates autonomous soil sensing and precision seed planting.