Motors, driver, and compute: three decisions that constrain each other
You already learned the actuator tradeoffs: brushed DC motors are simple, cheap, and easy to drive, but need a gearbox for usable torque at low speed, while steppers give precise positioning at the cost of more complex control. For a first differential-drive rover, geared brushed DC motors (often sold as 'TT motors' or similar hobby gearmotors) are the right call, they're forgiving, inexpensive, and pair with the simplest possible driver. That driver choice matters more than it seems: an H-bridge driver module (L298N, TB6612FNG, or similar) is what sits between your MCU's low-current logic pins and the motor's high-current windings, and picking one rated below your motor's stall current is a common way to damage a board on day one, not because the motor is unusual but because stall current is often several times the running current.
Compute choice follows directly from the embedded systems course: this project doesn't need an SBC running a full OS, it needs an MCU that can run a tight, predictable loop and drive a couple of PWM channels, something like an Arduino-class board or an ESP32 if you want wireless debugging later. Save the SBC for a future project that actually needs vision processing or networking stacks; for this rover, the determinism and simplicity of bare-metal MCU control is the better fit, and it's one less layer to debug when something misbehaves.
