Arduino Robot Car — Component Bring-Up and Velocity Estimation

All projects

Robotics & Manufacturing

Role
Sole builder and programmer (self-directed)
Technology
Embedded robotics application; sensor, motor, and speed-estimation integration
Languages
Arduino C++
  • Arduino C++ firmware
  • component bring-up
  • sensor integration
  • ultrasonic ranging
  • servo control
  • DC motor control
  • velocity estimation
  • system integration

Situation

A self-directed build on the ELEGOO Smart Robot Car Kit V3.0: a four-wheel-drive chassis with an Arduino Uno, a motor driver, four DC gearmotors, an HC-SR04 ultrasonic rangefinder panned by a micro servo, and a Bluetooth module.

The kit ships with ready-made SDK/demo programs. Omar used one as a starting point and modified it to measure the car's speed.

Actions

  • Brought up components before integrating them, using small test programs for

the motors, servo, ultrasonic rangefinder, and other modules.

  • Integrated the tested components into a single working car, with all subsystems running together.
  • Modified a kit SDK sample to add car-speed estimation.
  • Used the car's sensors to estimate velocity by two methods:
  • Ultrasonic — sampling range to a surface over time and differentiating it to obtain velocity.
  • Timed traverse — measuring the time taken to cover a known distance.

Outcome

A fully functional car with every component integrated and running, including a modified SDK sample for speed estimation.

There was no application objective beyond making the integrated system work, and the two velocity methods were each tested individually rather than compared against one another, so the project produced two estimates but no measure of how well they agreed.

Lessons / safety

Bring-up before integration is the right order. Testing each component in isolation means a fault found after integration can be traced to the interaction between parts rather than to an unknown part. This approach helped Omar understand the system before adapting a supplied SDK/demo sample.

The obvious next step is cheap. The robot still works. Running both velocity methods on the same traverse and comparing them would show how far the differentiated ultrasonic estimate drifts from the timed reference — and the likely culprits are worth predicting in advance: differentiating a noisy range signal amplifies its noise, and any acceleration during the run means the two methods are averaging different things. That comparison would turn two estimates into a validated measurement.

Skills demonstrated

  • Arduino C++ programming
  • component-level bring-up and testing
  • sensor integration: ultrasonic ranging, servo actuation, DC motor control
  • velocity estimation from sensor data by two methods
  • system integration

Evidence

The physical robot survives and was photographed on 2026-09-12, showing the HC-SR04 on its servo mount, the Uno and shield stack, the Bluetooth module, the four gearmotors, and the battery pack. Kit documentation archives are retained locally. No source code survives.