Independent engineering project · May–Oct 2026

A rover that chases sunlight.

Sunseeker is a rover I'm building from scratch to solve a problem in my own backyard: solar panels that sit in one spot lose most of the day to shade. It drives, it charges itself from the sun, and it's learning to find the brightest patch of ground on its own.

Sunseeker rover during bench movement testing
Movement testing — July 2026
Overview

Four phases, one backyard problem

I broke the project into four parts so I could prove out one hard thing at a time instead of getting stuck trying to do everything at once.

PHASE 01Complete · July

Rover & movement

Assemble the chassis and get it driving under Arduino control — proof that code can move the rover.

PHASE 02Complete · August

Solar & battery

Wire the solar panel to the battery through an MPPT controller — proof that the rover can charge itself in the sun.

PHASE 03Complete · October

Light-seeking logic

Read four corner light sensors and decide, on the fly, which way to drive toward the brightest patch of ground.

PHASE 04In progress · Oct–

Final assembly

Mount the sensor array and solar circuit on the chassis and run Sunseeker as one complete system in the backyard.

The core idea

How Sunseeker decides where to go

Each corner of the rover carries a light-dependent resistor (LDR). As the sun moves and tree shadows shift across the yard, the corner readings change — and the rover will steer toward whichever corner sees the most light.

This is a working blog — I add new photos, video, and notes as each phase moves forward. See the full month-by-month log →

Build log

Month by month

A running record of Sunseeker's build, in the order it actually happened — including the parts that didn't work on the first try. Jump to the full origin story for how this started.

May

Phase 1 · kickoff

The project started when I convinced my dad I could build a rover that carries a solar panel around the lawn, chasing the sunny spots and steering clear of shade — because the angle of sunlight, and the shadows the trees cast, keep moving all day. I broke it into three phases so I wouldn't try to solve everything at once: Phase 1, get the rover assembled and driving under Arduino control; Phase 2, wire a solar panel and battery so it can charge itself; Phase 3, add light sensors so it can decide where the sun actually is.

Phase 1 started with ordering parts for the chassis and motors.

What I learned

  • Wiring basics
  • The right way to connect wires to a battery
Rover base chassis assembly
Ordering parts and laying out the base chassis.
Chassis assembly in progress
Chassis assembly underway.

June

Phase 1 · continued

Phase 1 continued through June, but finals and AP exams ate up most of my time. I kept chipping away at it in the gaps.

What I learned

  • Soldering
  • Using a heat gun for crimping connectors

Challenge

Finding time. Exam season meant Sunseeker had to fit into whatever hour was left over, so progress this month was slow but steady.

Soldering rover wiring
Learning to solder the drive electronics.
Heat-shrink crimping with a heat gun
Crimping connectors with a heat gun.
Rover chassis taking shape
The rover base starting to come together.

July

Phase 1 · complete

Once exams were done at the end of June, I had a lot more time to focus. I finished the wiring and mounted the battery on the rover. After a bit of Arduino coding, the rover moved by itself for the first time with hard-coded direction and duration movement.

Milestone

Phase 1 complete — the rover drives on its own. What a feeling, getting past that first hurdle.

Video — the first successful autonomous drive, July 8.
Mounting the battery on the rover
Mounting the battery on the rover.
Finishing rover wiring
AFinishing rover wiring.
Basic movement testing on the bench
Basic movement testing on the bench, before the first outdoor run.
One more pass at the movement code before calling Phase 1 done.
Basic autonomous testing phase with forward and backward movement.

August

Phase 2 complete · Phase 3 begins

I came back from my ESAP program at UPenn with even more Arduino experience, thanks to a Smart Water Bottle project I built there. With a few weeks left before school started, I made a lot of progress — finishing Phase 2 and starting Phase 3.

Phase 2 meant wiring the solar panel to the battery through an MPPT controller, so the battery would charge whenever the panel was parked in a sunny spot. The wiring itself was straightforward; finding the right solar charging cables was not — Home Depot doesn't carry them, so Amazon and Harbor Freight came to the rescue. I ran the whole setup as an independent bench test first (not yet mounted on the rover), dragging it around the yard on, yes, a boogie board, to compare direct sun against shade. It ran for two straight days and worked.

What I learned

  • Voltage and amps
  • Wiring order matters: connect the battery to the MPPT controller first, then the solar panel — wiring it out of order can damage the mppt controller. Disconnecting reverses the order: panel first, then battery.
  • You need roughly a 5V gap between what the panel produces and the battery's ~13V, or the battery won't charge at all.

With Phase 2 done, I started Phase 3 by wiring one LDR to the Arduino on a breadboard, with a resistor and some basic wiring. This is going to be the hardest part of the project. I got real readings out of the first LDR, which was encouraging — but I'm still not sure how I'll turn those readings into "the sunniest spot on the lawn."

Challenge

Sourcing the right cables took longer than expected, and Phase 3 is starting to feel genuinely hard — on top of school restarting with three AP tests in the first week back.

Solar panel, MPPT controller and battery wired together
Solar panel, controller, and battery wired together for the first time.
Victron MPPT controller app charge readings
A day and a half of charging, tracked in the Victron MPPT app.
First LDR wired to Arduino on a breadboard
The first LDR, wired to the Arduino on a breadboard.
Reading light levels on LDRs.

September

Phase 3 · continued

Still working through Phase 3, and making real progress. I installed all four LDRs that will eventually sit on the rover's four corners, and I can now read values from all four at once through the Arduino. This will become the core of the logic that decides which way the rover should move.

What I learned

  • LDRs and Ohm resistors
  • LDRs are extremely sensitive — they can give slightly different readings even under very similar light

More to come on writing the directional-driving code.

Installing four LDRs on the rover
Installing all four corner LDRs.
Four LDR sensors wired
All four sensors wired in.
Close-up of LDR sensor wiring
Close-up of the sensor wiring.
Comparing live readings across all four LDRs, the foundation for the rover's future steering logic.

October

Phase 3 · complete

I connected the four LDRs, and based on the difference in readings between the four corner-installed LDRs, I now have Arduino code working that can tell where the rover should move. If all the LDRs have the same readings, it doesn't need to move and it stays parked.

Getting ready to connect phases together
Getting ready to move rover wheels by noticing sun and shade difference.
Set up ready for a becnh test
Set up in place to test Ph1 and Ph3 together.

Testing Phase-1 and Phase-3 together. Testing the Arduino logic that turns four LDR readings into a driving decision, and ensuring motors drive the wheel in right direction

Realizing we need to scan for sunlight difference more frequently
Testing motor driven wheel movement based on LDR reading differences. Getting really close to the final point

The college applications are taking most of my time right now. Hoping to get back to the final testing after the EA deadline


Still ahead

Mounting the finished LDR array and solar panel onto the rover chassis together, and running Sunseeker as one complete system in the backyard.