Skip to content

Final Project - Transportation Robot

Progress Overview

Task Status
Design and 3D print bearing blocks
Insert ball bearings into bearing blocks
Manufacture drive wheels with belt pulleys
Laser-cut top and bottom plates
Purchase and integrate drive shafts
Develop first version of control app
Design and 3D print external casing
Redesign motor driver PCB
Redesign ultrasonic sensor PCB (GRV 4-pin)
Integrate power supply and voltage regulation
Programm a react native app to control the robot
Integrate automatic obstacle avoidance
Film a video of the functionality of the final version of the robot

Spiral Development Plan

The development of the Robo-Buddy is structured in iterative stages, each one delivering a working prototype and building toward the final functionality.

SpiralDevelopment

  1. Spiral 1 – Core Mechanics: Assembly of chassis, drive shafts, wheels, and bearing blocks. Ensure stable movement and structural integration.
  2. Spiral 2 – Basic Control: Implement remote control functionality using the smartphone app. Test basic movement: forward, backward, turn.
  3. Spiral 3 – Sensor Integration: Add and test obstacle detection using ultrasonic sensors using I2C between boards.
  4. Spiral 4 – Power System: Add final power supply, including voltage regulation and battery integration. Test full mobility.
  5. Spiral 5 – Enclosure & Aesthetics: 3D model and print the robot shell and integrate the dome, mounting slots, and covers.
  6. Spiral 6 – Final Debug & Optimization: Refine PCBs, clean wiring, stress-test interaction between modules, and prepare final documentation.
  7. Spiral 7 – Add additional features: Add features like RF- Follow Me - Mode.

Initial Concept

Inspired by R2D2 builders, the idea for this project was to create a robo - assistant that follows its owner, carries their belongings, and integrates with voice commands. The concept evolved into a smart companion robot with real-time tracking and obstacle detection. As the time of the fabacademy is limited, I am going to concentrate on building a robot that follows you where you are going and carrying your belongings first and may upgrade smart features in the future.


First Draft

I started with a rough sketch to visualize my project.

First Draft


Modeling

2D-Modeling

One way to produce the bearing blocks for the drive of my final project is to design them in 2D and cut them out with the metal laser cutter. For this reason, I will first model the bearing blocks in Inkscape. For my final project, I need two bearing blocks, which accommodate a 13mm ball bearing and connect the two shafts to each other via a toothed belt. I therefore need a bearing block to which the stepper motor is attached and the drive shaft for the tires, as well as a counterpart that receives the drive shaft.

w2-1

The dimensions should be 130mm x 60mm. I also need two recesses. One for the ball bearing and one for the motor shaft.

w2-3

After I have drawn the first circle and entered the dimensions 6.5 mm radius Rx and Ry at the top, I draw the second circle with the diameter of the drive shaft. The Nema17 stepper motor has an outer shaft diameter of 8mm.

Next, I want to center the circles. To do this, I first mark all the elements.

w2-8

Next, I use the align tool and select center on horizontal axis.

w2-6

w2-9

Now the holes with which the motor block is attached are still missing. The frame size of the Nema17 is 42mmx42mm. In the data sheet I found out that the distance between the screw holes is 31mm.

In addition, M3 is used for the screws. I looked in the ISO thread table DIN 13, T1 and found that the through hole for an M3 fine thread is 3.2mm. So I draw 4 holes with the corresponding dimensions.

w2-10

Next, I draw a circle with a diameter of 32mm around the elements for orientation.

w2-11

The distribution tool helps to distribute the through holes accordingly on the auxiliary circle. Next, the circle that we needed to distribute the objects is deleted.

w2-13

I group the elements so that they can no longer move in the future. A little hint: Unlike most programs, Inkscape uses Shift to select multiple objects.

w2-15

w2-16

When drawing, I noticed the error that the motor should not float in the middle of the bearing block, but must be placed at the bottom. So I move the group and save the file as .svg.

w2-17


3D-Modeling

Next, I modeled the second bearing block in Fusion 360 3D. This has the advantage that I can simply print it out for testing and don't have to use so much aluminum for the first prototypes. I start by creating a sketch in Fusion and create a square measuring 600 mm x 700 mm.

w2-18

Next, I press Finish Sketch to finish the sketch.

w2-19

Then I extrude the cuboid.

w2-20

The next step is to model the drill holes in the lower part of the block. To do this, I switch back to the sketch view, select the underside of the block as the basis and draw a guide line in the middle. I create a circle and would now like to have it on both sides of the block, which is why I mirror it on the auxiliary line.

w2-21

After removing the auxiliary line, it looks like this.

w2-22

Then I finish the sketch again and cut out the drill holes with the Extrude tool at a depth of 15mm.

w2-23

The model then looks like this:

w2-24

Next, we take care of the recess for the ball bearing. Since the ball bearing only has a depth of 5mm and we have a material thickness of 10mm, we have to draw a circle with 13mm and drill 5mm deep.

w2-25

We want to leave a margin of 2mm. To do this, we select the same center point and draw a circle with a diameter of 11mm, which we then drill through to the full thickness of the material.

w2-26

w2-27

w2-28

w2-29

w2-30

Our model for the bearing block is finished.


3D modeling of the final project

The two parts of the final project shown here are only small components. At the same time, I tried to construct the robot in Fusion 360 for the first time.

w2-31

I started with the construction of the base plate, in which I made two cut-outs for the wheels and four screw holes for attaching a 360-degree rotating wheel. I positioned 8 slots on the edge into which the 3D printed cover will later be inserted. I also added 4 threaded rods to connect the two plates together.

w2-32

A second plate with the same slots and holes for the threaded rods was then placed on the threaded rods. The dome was then mounted on top of this and a compartment inserted.


Distance Measuring with ESP32

I chose the ESP32 for my project because of its built-in connectivity features and its simplicity to program. In addition it has many pins for connecting different sensors and devices and supports multiple energy-saving power modes.

Since I will need two ultrasonic sensors in my final project for obstacle avoidance I simulated the usage in week 4 of the fabacademy.


Simulation of a Microcontroller

I used wokwi.com to simulate the operation of a microcontroller.

Wokwi

Wokwi is an easy-to-use online tool that provides simulations for four different development boards and their simulation on their homepage.

As I want to use the ESP32 in my final project, I decided to use that microcontroller this week too.

I selected the "Starter Template" of the basic ESP32 and by pressing the play button, I compiled the "hello world" - script.

Wokwi

Next I wanted to simulate the operation of two ultrasonic sensors.

Ultrasonic Sensor

By clicking the "+" button, you can add components to your simulation. I added two ultrasonic sensors and wired them to the ESP32.

Circuit

The next step was to write a program. I did a little research and found out that the ultrasonic sensor calculates the distance by using the duration the sound needs to be reflected by the object and returning to the sensor. Thus, the formula to calculate the distance is: (duration × sound speed) / 2.

At the beginning of my program I defined the values for SOUND_SPEED, TIMEOUT and the trigger and echo pins of the sensors.

Then, in the void setup(), I set the baud rate to 115200. The Baud rate represents the number of signal changes or symbols transmitted per second. If you select the wrong Baud Rate, your computer will not be able to understand the transmission as it doesn't know where a symbol ends. Therefore it is important for the serial communication with your computer.

Finally, I set the pinMode() of the used pins to OUTPUT for the trigger pins and INPUT for the echo pins.

That's it for the setup.

In the loop, I measured the duration of the left and right sensors and calculated the distance. Finally, I printed the results to the simulated computer via Serial.print().

Loop

By clicking on the sensors, you can change the measured distance.

Editing Sensors

At the bottom of the picture, you can see the measured distances.


Obstacle Avoidance – First Prototype

As part of my final project – I need a way to detect obstacles and maintain a safe distance to users or surroundings. For that purpose, I plan to integrate two HC-SR04 ultrasonic distance sensors into the robot system.

During Week 9 (Input Devices), I designed and milled a custom PCB that acts as a prototype for the sensor interface of my robot. The board is based on the Seeed Studio XIAO ESP32S3 and includes two dedicated pin headers for connecting ultrasonic sensors (VCC, TRIG, ECHO, GND), as well as a separate I2C header for communication with the main control board.

While testing the setup, I realized that the sensors require a 5V supply, which was not ideal for my 3.3V-optimized board. Fortunately, I had added a 5V fallback header. This important insight will influence the next revision of the sensor board for the final robot, where I will route 5V power directly to the sensor headers and finalize the communication interface between boards.

PCB with ultrasonic pin headers

Sensor attached to prototype board

Building and testing this prototype in Week 9 was a really important step for my robot project – it helped me figure out how to connect the sensors properly, get reliable measurements, and prepare everything for future I2C communication between the boards.


PCB Design

Considerations about PCB design and voltage regulation

Cable Management


Manufacturing Components

Bearing Blocks

I took the NEMA 17 dimensions from the manual.

Bearing Block 5

Bearing Block 2

Bearing Block 3

Bearing Block 4

Bearing Block 1

Bearing Block 6


Wheels

Wheel 1

Wheel 2

Wheel 3

Wheel 4

Wheel 5

Wheel 6

Wheel 7

Wheel 8

Wheel 9

Wheel 10


Chassis

You can find a detailed description of the manufacturing process of my bottom and top plate on [Assignment 16][https://fabacademy.org/2025/labs/bottrop/students/annasophia-brokuf/assignments/17/]

Chassis 1

Chassis 2

As you can see on the following pictures some postprocessing was necesarry.

Chassis 3

Chassis 4

To ensure a better look of the robot I painted the top plate black.

Chassis 5


Enclosure


Additional Parts like battery enclosure


Basket

I made a cardboard template to determine the exact size of the basket and decide where to place the magnets. Basket 1 After that I designed the basket in Fusion and printed it. (Pictures of the design process will follow)

Basket 2

PCB Design and Manufacturing

Since I wanted to do as much as possible at home and had just gotten my new BambuLab H2S with a plotter, I thought about the best way to make PCBs using copper foil and fiberglass-reinforced plastic (FRP) boards.

First, I tested various plotter settings in combination with the copper foil.

PCB 1 PCB 2

Although the settings improved, at some point the copper foil still peeled away from the slippery backing film, making it impossible to cut the material precisely.

So, as a test, I stuck a piece of copper foil onto the fiberglass panel and then plotted it to see if it would work that way. PCB 3 PCB 4

Fortunately, this looked promising, so I started cutting the GFK sheets to the right size and glued the copper foil onto the cut pieces.

PCB 5 PCB 10 PCB 11 PCB 12 PCB 13

After plotting the copper foil I removed the unwanted parts.

PCB 6 PCB 9

Out of curiosity, I placed the components on the circuit board and saw that they fit. PCB 7 PCB 8

After manufacturing the PCBs, I had to prepare them for soldering. To do this, I sanded down the copper foil and applied solder mask to the PCBs.

PCB 14

Then I soldered the components onto the circuit boards.

PCB 15 PCB 16 PCB 17 PCB 18 PCB 19


Programming the App

Assembly

Assembly 1 Assembly 2

Assembly 3 Assembly 4 Assembly 4 Assembly 5

For mounting the aluminum rods that connect the plates for stability I had to drill holes inside the plate. Assembly 6 Assembly 7

Testing the components

Testing 1

To be continued...