How to Not Build Your Best Friend

by alexandra-argiriou in Circuits > Arduino

142 Views, 2 Favorites, 0 Comments

How to Not Build Your Best Friend

B3262C6A-B7D8-4BF9-8819-711E11D60ED8.jpeg

Step into my world as I embark in a documentation of my journey to create my ultimate RO-Bestie (Robot Bestie). Get ready to come along my journey of assembling mechanical parts and coding to perfection, but to also see first hand everything that is going into this masterpiece. Together we will go through the process of gathering the ideal components, coding a perfected personality, and the fine tuning of each step as I pour my heart and soul into bringing my RO-Bestie to life. Through a series of documentation and diary entries, I will finally discover what it means to truly connect with a friend, even if that means through wires and circuit boards!


Diary Entry #1: February 18th 2024

Dear Diary,

Today I have come up with my best and most important project yet: building my very own best friend! I am thinking of a friend who will not only be by my side following me around but one that will sing my favorite songs with me and share smiles with me as we journey together. This is going to be an exciting challenge, and I am beyond excited to bring my RO-Bestie to life!

This is my first major project as a coder and component circuit creator! It is going to be interesting to see my process of a project like this one and how my skills will grow from my any mistakes made!

Supplies

02A9493A-4B36-418F-9660-2C1148C3527E.jpeg

Diary Entry #2: February 19th 2024

Dear Diary,

Today marks the beginning of Project RO-Bestie. I have spent the day gathering materials to bring my vision to life. Before diving into the building process, I need to understand each component, and how they work. I have decided to start with the sensors, considering both the PIR and Ultrasonic options from my kit (Smraza Starter Kit for Arduino Projects 200pcs). Im going to need to get 4 of each sensor, each designated to a specific side of the body based off of my design. For movement, I am leaning towards using my 4WD motors that I found at Creatron. For the expression and sound of my robot I will be testing and using an LCD and active buzzer. For the final and most important part, the body: I am leaning towards wood for sturdiness but testing Matboard is also a step in the process. Last but not least, my Arduino UNO R3, Breadboards, wires, and plenty of batteries are essential to bring this project to life. Tomorrow I will start to dive deeper into each component getting one step closer to making my RO-bestie to life.


Breakdown of Supplies:

Sensors:

  • PIR Sensor x 4
  • Ultrasonic Sensor x 4

Motors:

  • DC Motors
  • Lasercut Wheels (Wood)
  • Elastic Bands
  • 4WD Motors x 4
  • connection screws and acrylic components to connect the motors to the base (found in motor kit)
  • Wheels from the kit x 4

Actuators:

  • LCD Screen
  • Active Buzzer

Heart of the System:

  • Arduino UNO R3

Other Components:

  • Breadboard x 2
  • Lots and lots of wires varying in sizes (mainly red and black)
  • H-bridge x 1
  • AA Batteries x 8
  • 9V battery x 2
  • Portable Battery Pack x 1

Body:

  • 3mm Plywood Sheets 18" x 32" x 2
  • Weldbond x 1
  • Electrical Tape and Masking Tape x 1

PIR Motion Sensor Exploration

5BBD5612-730E-44F7-9EF6-EE68216F8259.jpeg
PIR Wheels Video

Diary Entry #3: February 20th 2024

Dear Diary,

Today I started my testing steps towards perfecting the functionality of my RO-Bestie! I decided to start with testing the PIR Sensors that detect motion! I started by connecting them to my Arduino and breadboard arranging them strategically on all four sides each facing a different direction with hopes that the robot would detect me from all sides! these sensors work based on the detection of infrared radiation emitted by any and every object that generate heat. It was pretty interesting to experiment with.

Using my coding knowledge I started to program the sensors to detect my motion and move accordingly. Through this experimentation, it proved to be extremely sensitive detecting far more than I had anticipated. Due to the sensitivity the results were really inconsistent causing the motors to spin randomly without logic. This is not going to align with the intentions I had for my robot. Its time to go back to the drawing board and try to test more options.

Up next: Ultrasonic Sensor Testing!!

Ultrasonic Distance Sensor Exploration

AE5D567C-3125-4A47-83BE-2842AB85F72F.jpeg
Screenshot 2024-03-07 at 1.50.30 AM.png

Diary Entry #4: February 21st 2024

Deary Diary,

After experiencing a setback with the PIR sensors, I have decided to start fresh today, this time with the Ultrasonic sensors. I have discovered that these sensors function by measuring distance with ultrasonic waves. The sensor essentially emits an ultrasonic wave that bounces off of an object and returns it back to the sensor. By measuring the time between the emission and reception, the sensor calculates the distance to the object.

I found working with these sensors to be a lot more promising compared to the PIR sensors that I tested yesterday. Through coding I managed to program a system where the motors would activate when an object was detected within a certain distance. This will allow for my RO-bestie to respond to the detection of objects and move accordingly.

When testing I set up the ultrasonic sensors similarly to the PIR sensors placing one on each side facing different directions. Initially I connected one motor to all sensors to establish a baseline before I add more motor and test further. After running tests with this setup, these are the sensors that are ideal for this project!

Up Next: Motor and Wheel Testing!!

Motor and Wheel Exploration

0599D769-3541-43CF-9C2F-4EB2A3D80A47.jpeg
Screenshot 2024-03-07 at 1.47.12 AM.png

Diary Entry #5: February 22nd 2024

Dear Diary,

Today I dedicated my time into testing the strength of the motors that I have. I have four DC motors that I had in my kit along with 4 4WD motors and wheels that I found at Creatron as a backup. I first setup the DC motors on a breadboard with a base utilizing four buttons as "direction buttons" as temporary placeholders for the sensors. Through coding motor directions and rotations, I managed to program the motors to change directions based on my intended movements.

I crafted circular wheels using a laser cutter, incorporating grooves to accommodate rubber bands for enhanced traction. However during testing, I encountered a significant limitation with the DC motors - they lacked the necessary power and strength to run and would stop when faced with any friction.

I then moved towards testing the 4WD motor and wheel it that I found. Although considerably more powerful, they demanded a lot of power. To power these motors, I connected eight AA batteries at 1.5V each powering the wheels, and a 9V battery to power the buttons. The use of the 4WD motors and wheels had a huge improvement over the DC motors. with this setup, there was a fluid motion without stopping or lag due to added weight or friction. It is safe to say that I will be using the 4WD motors and wheels for project RO-Bestie!

Up Next: LCD Screen and Active Buzzer Testing!!

LCD Screen and Active Buzzer Testing

A308F8DB-9E1B-4304-9660-F7E1ED75468A.jpeg
Happy Birthday Buzzer Video
Blinking LCD Face
Better Eyes Video

Diary Entry #6: February 23rd 2024:

Dear Diary,

Today was dedicated to exploring the functionalities of the LCD screen and the Buzzer, aiming to use these components to add emotions to my robot and to give it the ability to sing.

Beginning with the LCD screen, I utilized the Arduino's base code to establish the setup, using it as a foundation to understand how the screen worked. Through experimentation, I started learning to draw stick figures, and various other characters using them to create different emotions and meanings. Refining the code, I gave the LCD screen blinking eyes to add some life to my RO-Bestie. I ran into a bit of an issue where the eyes would blink one at a time instead of simultaneously but further troubleshooting allowed me to resolve this.

After this was tested and solved I shifted my focus into learning about the Buzzer and how it could be used to teach my robot how to sing. This involved a long process of coding each and every note of songs into beeps which took alot of patience that I did not know I had. Starting with a "simple" Happy Birthday song, I learned the basics of the buzzer and how it works to then shift into coding some of my favorite songs!

Next Step: Putting Everything Together!!

Wiring and Putting Everything Together

D7882EFA-6719-4445-B599-084012498E34.jpeg
Wiring Assembly

Part 1: Assembling the Wheels and Motors

The first step of putting the components together requires the motors to be powered and grounded through a breadboard with 8 AA batteries that are isolated from the rest of the components. Each motor is then assembled into an H-bridge accordingly to ensure the inputs and outputs are correct allowing for the change in motion to be possible.

Learn from me: Make sure that the correct wires are plugged into the H-bridge and that the component is actually an H-bridge driver so that you don't fry it, like I almost did!

Also Learn from me: Don't leave your battery pack unattended. You don't want to know what could happen.

Part 2: Adding the Ultrasonic Sensors

The second step in assembling all of the pieces requires for each ultrasonic sensor to be powered and grounded through a breadboard and for the trig and echo pins to be connected to the Digital pins in the Arduino according to what it is set at in the code below. This will allow for each sensor to be outputting the correct motions depending on where it is sensing from.

Part 3: Add Buzzer

The buzzer is connected to the opposite end of the breadboard with the wheels connected to it and is powered by a separate power source. The Buzzer is attached to the named Analogue Pin in the Arduino to play the songs that have been coded to play. For Part's 1-4 use the Final_Main code to run this portion of the project!

Part 4: Add LCD Screen

For this part you will need an additional Arduino and power source to attach the LCD screen. Due to the amount of digital pins that are required for this component, we do not have enough space! Attach the correct pins to the Digital Arduino pins according to the code below and make sure to power the Arduino using a 9V battery that comes in the kit! Use the LCDScreen_Eyes code to run this part of the project!

Body Construction

IMG_2390.JPG

Diary Entry #8: February 25th 2024:

Dear Diary,

Today was dedicated to finalizing the body of my RO-Bestie and laser cutting each piece for assembly. The design went under a test with both Matboard and Wood to find the perfect fit for my best friend. Using some of the pieces from the 4WD kit, I strategically designed the wheel base with cutouts resembling those on the acrylic base provided in the kit, ensuring a secured attachment for the motors. Additionally, I left ample space within the design to accommodate components, breadboards, wires, and the Arduino, with additional room for flexibility during the assembly.

To ensure a perfect fit, I incorporated cutouts in the walls of the body that align perfectly with the Ultrasonic Sensors. as for the head, I designed a cutout tailored to fit the LCD screen snugly, while also providing adequate room for wires and an additional Arduino that I am using for the eye screen.

The assembly process was pretty straightforward. Using the acrylic pieces for the wheels, I placed them into the cutouts to screw the motors to the base board before assembling the pieces of the walls and body. Similar to a puzzle piece. Next I focused on assembling the head and top piece. The head piece once assembled was glued to the body top piece. The top piece had a circular cutout to allow for the LCD screen and wires to fit through. Just in case, I decided to keep the top piece and the head separate from the body to be able to trouble shoot if needed if the internal hardware had issues.

The first build was required to be completed with Matboard due to the workshop being sold out of 3mm Birch Plywood. This first build resulted unsuccessful. The matboard ended up being too thin and flimsy and required a second set of cutouts to be made to make the walls more sturdy. In the end it did not look as pleasing and would benefit from a material change.

The second build was a lot more successful after being completed using wood. The walls were stiff and taking the time to rotary sand each piece resulted in a smooth, and clean looking finish. The wood has alot more structural integrity and was worth re-assembling the body of the robot.

If you are interested in making your own RO-Bestie, learn from my mistakes and use wood the first time around!!

Overall the structural assembly process is fairly smooth and it is so exciting to finally see my RO-Bestie come together!

Next Step: Running my RO-Bestie!!

Testing My RO-Bestie

My RO-Bestie (Not)
Singing Video
Eddy Yelling

Diary Entry #9: February 26th 2024:

Dear Diary,

Today was supposed to be the big day - the day I finally plugged in my robot for the first time. I've put so much effort and time into this project, and I was so excited for today to finally bring my creation to life. As many inventors do I counted down to "takeoff": 5.....4.....3.....2.....1.....Power!! But unexpectedly, something went really wrong. The robot did not at all act like a best friend, someone to stay by my side. It did the complete opposite! It seemed to have developed a mind of its own! Every time I even tried to get close to my RO-Bestie, it drove away from me as fast as it could!

And just when I thought that was the worst part, it mocks me! As soon as it runs away, It taunts me by playing Mario Kart's Coconut Mall soundtrack. Being the one that brought the robot to life, this is definitely not the way to thank me for it. All my hard work really doesn't seem to be paying off.

I am no professional at Robotic Best Friend making but I don't think that this is how it is supposed to work. Where did I go wrong? Why does the robot that I created to be my best friend avoid me at all costs?



This project was created as a part of ARC385: Physical Computing a the John H. Daniels Faculty of Architecture, Landscape, Urbanism, and Design HBA in Architectural Studies program at the University of Toronto

Team Members: Faizah Ahmad, Dora Sun, Eddy Chan, Frankie Mancuso, Alexandra Argiriou

Huge thank you to Maria Yablonina for all her help and support!

Conclusion and Reflection

This assignment is clearly intended to be satirical, as the robot was programmed and designed to run away from the user and to mock them with the Mario Kart soundtrack. This process narrated in diary form briefly touches on our successes and challenges with each step after building and evolving from the first. Most issues arose during the sensor testing with the PIR sensors being to sensitive and the ultrasonic sensors at points not detecting when it is supposed to leading to unpredictable outcomes. This was due to both code errors and partly due to the size of the sensors but we were able to grow tremendously as we worked to resolve these issues.

Originally we intended for the robot to sing and mock the user at the same time it was driving away to add even more to the humor of this project but this proved challenges among other issues we had. With more time this could have been overcome but due to the time constraints we feel we have reached our maximum.

Another issue we encountered was the limited access to digital pins on the Arduino Board. Research was done to add other pins to the board but was a confusing process that we chose to stay away from. This limited the ability to connect the LCD screen to the sensors to possibly add more emotion to the robot but again due to time constraints, the robot is left continuously blinking with our solution of just using two separate Arduinos; one for the sensors, motors, and buzzer, and then the other solely controlling the LCD screen.

Despite our obstacles encountered we were able to overcome as many as possible and we are extremely happy with the outcome of this project. Our vision truly came to life.