Arduino Kinematic Car

Designing an Arduino-powered car that analyzes its own basic kinematics using GPS and Python.

Project Overview

In this project I designed an Arduino-powered car that analyzes its own basic kinematics (displacement, velocity, acceleration) using a GPS and Python code. The project was broken down into three main parts; movement, design and electrical layout, and kinematic analysis.

CAD Overview
Car Overview

Movement

The Arduino car was equipped with four wheels, each with its own servo motor. I implemented a simple yet effective movement system by controlling the left and right sides of the car independently (for example, to turn left, the left side moves forward while the right side reverses).

The movement system was controlled through the "Arduino BlueControl" app, which connected to an Arduino Bluetooth module. The app sent different inputs to the console based on button presses, and I wrote C++ code to control the motors accordingly.

Design and Electrical Layout

While the basic frame of the car was provided, I had to determine the optimal placement of components and ensure their protection. Components were distributed across two shelves to balance the weight evenly, and I selected lightweight parts that maximized performance. Two battery packs were connected in series and placed on opposite ends of the bottom base, which resolved previous power issues. For increased durability, the Arduinos, breadboard, and wiring were soldered together, and a protective cover was installed.

Electrical CAD Layout
Final Electrical Layout

Kinematic Analysis

An Adafruit GPS was chosen which outputted the car's coordinates and timestamps to an Arduino console. I then converted the console data into a text file, which was read by Python and visualized using the Matplotlib library. Adding constants such as mass and acceleration due to gravity allowed for work and kinetic energy to be analyzed as well.

Final Result

Project Details

Technologies Used

  • Arduino
  • Python
  • C++
  • GPS
  • Matplotlib