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
Materials:
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
Exacto-knife
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)
Group members :
Francis Banares
Yuan Wang
Ju Yi
Nour Beydoun