ShWelcome Box: the Sometimes Friend

Introduction: ShWelcome Box: the Sometimes Friend

Are you searching for company?

Step 1: Introduction

Looking for a friend that will always be there for you through thick and thin? Well look somewhere else because the ShWelcome Box just loves to run away from its problems and people who come too close. Just like architecture students.

People say if it runs away from you enough times, you can find a friend underneath all the shyness...

Step 2: Video

Step 3: Parts, Materials and Tools


1x Sheet of 1.5mm Plywood

2x sheets of 1.5mm white Cardboard

4x Ultrasonic Sensors

2x DC motors

2x Rubber Wheels

1x Arduino Mega

1x Marble

1x Wool sheet

8x 2n2222 Transistors

8x Diodes

8x 100Ω Resistors

Multiple jumper wires - Male/Male and Male/Female


Glue (glue gun recommended so if you make mistakes, you can snap pieces off still)

Scissors to cut wool

Can either hand cut materials or laser cut them (recommended to laser cut)

Step 4: Circuit

For circuitry, there are only really 2 general setups that are repeated across the different motors and the ultrasonic sensors.

For the dc motors, follow the first image in this section, but try to fit everything as close as you can so that they are closer to the Arduino. After you have finished 1, repeat the same diagram next to it in-order for the second motor. Make sure you know which motor is for which side (Left or Right motor).

The 4 ultrasonic sensors are just a matter of connecting the first and last pin into the positive and negative parts of the breadboard, respectively. Then connecting the proper trigger and echo pins into the proper digital pins. Keeping everything in line is your best friend here.

Step 5: Machine Making

When constructing the ShWelcome, it is best to create it in 3 separate pieces. The base that holds the breadboard, Arduino, and the sensors, the lower compartment that contains the motors and the supporting leg, and lastly, the dome/roof of the robot.

Start with the large wooden hexagon shape and the 4 smaller diamonds with 2 holes in each square. Place the squares on the opposites sides and glue them on. Then take the 4 trapezoid-like shapes with openings at the ends, and glue them so that they are below the base and between 2 diamonds. Finally, using the 4 small wooden squares, glue them to the edges of the middle square so that the base can rest on the lower section.

To make the lower compartment, glue the wheels to the ends sticking out of the piece with the rounded end. Place the 1 wheel each onto the outer parts of each motor. Then using 4 pieces, 1 square with a hole in the middle, 1 rectangle with a hole in the middle, and 2 other rectangles, create a box in the middle of the rounded piece so that it can hold up the base. Make sure to feed the wires of the motors through the holes in the squares so that it can be connected to the breadboard above the base. To create the supporting legs, hold the 3 straight pieces together with the different circles, and then slide in the marble after the glue has set. Then place it through the big hole in the middle. We first tried making the bottom out of cardboard, but it couldn't support the weight of the base.

In order to easily construct the roof, you will want to attach the 4 smaller hexagonal pieces side by side, square it up to the top most square piece, and then glue them all together. This will ensure that the hexagons are at the proper angle to fit snugly over the base of the robot. After that, you can glue the fur onto the dome and cut off excess parts.

After that, it's just a matter if placing all the wiring onto the base, sliding the respective sensors into their proper direction, connecting the wires of the wheels through to the proper wires on the breadboard, and then placing the dome on-top of it all.

An H-Bridge could also be used to have the motors be able to run in both directions on command.

Step 6: Programming

The code starts off by making sure to clearly show which sensor's trigger and echo pins are connected to which pins, and where to connect the 8 digital pins in-order to get the motors to be able to spin in different directions.

Then it sets controllable variables such as the speed of the wheel motors and the amount of times it's interacted with before it becomes friendly for a bit.

Everything in the setup is just setting establishing the pin modes for each pin, whether its output or input.

The way we simplified the code is by breaking down how the robot moves into smaller and smaller functions that make it easier to make it do what we want. The lowest level functions are leftForward(), leftBackward(), rightForward(), rightBackward(), which tell each individual motor to move either forward or backwards. Then functions such as forward(), backward(), left(), and right(), respectively call the previous mentioned functions in order to get the robot moving in a certain direction.

Step 7: Results and Reflection

At the end of this project, we were very pleased with how our robot moves but we think there's still room for improvement. We learned a lot from our first design as well.

Our initial design was to have a box with 4 wheels as we thought it would give it move stability and traction. What we found with this iteration is that more motors meant that the power source was divided even more. This meant that each motor was weaker and the robot couldn't really move under its own weight. From this, we decided to reduce the amount of wheels to 2 so that each wheel could be stronger.

The 2 wheeled design was a lot better and the robot moved more smoothly and consistently.

Another problem we experienced with the 4 wheeled design is that sometimes depending on either the surface we tested it on or the alignment of the wheels, the robot would not be flat on the ground which hindered the traction it would have with the ground.

In a future iteration, we would like to try implementing things such as smoother/ non-stop motion, a smaller body (maybe if we used a smaller breadboard), or find a way to make it move faster/more erratic.

Step 8: References and Credits

This project was made for ARC385 course at the University of Toronto, John H Daniels Architecture program

DC motor setup - slide in class (image above)

Arduino Mega

Ultrasonic Sensors Tutorial

Amazon DC motors and Wheels

Ultrasonic sensors

Group members :

Francis Banares

Yuan Wang

Ju Yi

Nour Beydoun

Be the First to Share


    • Big and Small Contest

      Big and Small Contest
    • For the Home Contest

      For the Home Contest
    • Game Design: Student Design Challenge

      Game Design: Student Design Challenge