Emo - DIY Companion Robot

by CodersCafeTech in Circuits > Arduino

10408 Views, 40 Favorites, 0 Comments

Emo - DIY Companion Robot

IMG_4369.jpg
IMG_4351.jpg
IMG_4347.jpg
IMG_4386.jpg

Introducing Emo, the personal companion robot that will capture your heart! With the latest Raspberry Pi 4 technology and open-source design, Emo is the perfect fusion of style and innovation. But he's more than just a robot - he's a living, breathing presence with his own unique personality and emotions.

Supplies

Video

Emo - A DIY Companion Robot With Raspberry Pi 4

As with all our projects we have made an accompanying detailed video tutorial. If you would like to see the Emo in action then take a look at the first of the video.

Don't worry, we will also add every step in detail here.

Design

Emo bot V2 3.png
Emo bot V2 2.png
Emo bot V2 4.png

The whole design was done in Autodesk Fusion 360 and the design incorporates a combination of solid and free-form modeling techniques. To streamline the printing process, we divided the robot body into several parts that can be easily assembled using screws. We carefully considered the placement of the power source, situating it at the base and allowing ample space for the power cable's unrestricted movement. While addressing the cable movement was our primary concern, we also ensured that the body maintains a slight contact with the base to enhance stability during motion.

To elevate the robot's visual appeal, we chose an attractive blue-and-white color scheme.

3D Printing

3d print.jpg
3d print2.jpg
3d print3.jpg
3d printed parts.jpg

Our material of choice for 3D printing was PLA, and we opted to print each component individually, resulting in significant time investment. To reinforce the base's durability, we printed it using a 40% infill density, while the other parts were printed with a 20% infill.

Now we have successfully printed all the necessary components, we can proceed with the assembly process.

Preparing Base

base1.jpg
base5.jpg
Base6.jpg

To begin the assembly, we first mounted the micro USB module onto the base section to serve as the power source for the robot. In close proximity to the USB module, we positioned the SW-420 vibration sensor, which would detect any vibrations generated. The base section consists of three wires: Vcc, Gnd, and an output wire from the vibration sensor.

Lastly, we securely attached the lid to the base section using M3 x 10 mm screws, finalizing the assembly of the base section.

Getting the Head Ready

head4.jpg
head1.jpg
head3.jpg
head2.jpg
head6.jpg
head7.jpg

For touch sensing capabilities on the robot's head, we incorporated a compact capacitive touch sensor, which fits perfectly in the designated area. The central component of the head section is a 2-inch IPS display from Waveshare, responsible for conveying the robot's emotions. To secure the display, we utilized black supporters and a small amount of hot glue. To enable audio playback, we integrated an 8-ohm 0.5-watt speaker on the left side of the head, accompanied by a PAM8403 amplifier for sound amplification from the Raspberry Pi.

Next, we firmly attached the bottom part of the head to the robot's body using M3x15mm screws. Finally, we completed the head section by connecting and securing the previously assembled upper head part.

Setting Up the Body

body7.jpg
body1.jpg
body2.jpg
body5.jpg
body6.jpg
body10.jpg
body8.jpg
body9.jpg
body12.jpg
body11.jpg

Within the body section, we incorporated three servo motors: two SG90 servo motors for the hands and one MG90 servo motor for body rotation. To conveniently control these motors, we integrated the PCA9685 - 16 Channel Servo Motor Driver.

To secure the MG90 servo motor to the front of the body, we utilized M2 nuts and bolts. The PCA9685 was positioned in the same area to distribute the body weight evenly. Moving on to the hands, we affixed the SG90 servo motors to both ends and carefully secured them to the servo shaft.

To establish connections with the Raspberry Pi, we opted for a perf board combined with a female header, offering a more organized and efficient solution than a direct wire attachment. Through soldering, we ensured the components were properly connected while minimizing wire entanglement.

For power supply, we utilized a small male USB board sourced from an old mobile charger to provide power to the Raspberry Pi. The audio transmission was facilitated using a TRS audio jack.

To complete the assembly, we secured the Raspberry Pi to the back of the body using screws. Additionally, we used a 2mm transparent acrylic sheet at the front end to conceal the gap between the outer cover and the LCD module. This acrylic piece was created using laser-cutting technology at a local shop. We provided them with a DXF file of our design, which was obtained from the design.

Circuit

circuit1.jpg
Cicruit for driver.jpg
vib&touch_bb.jpg
speaker.jpg

The Emo robot has been built according to these circuits.

Calibration

calibration.jpg

After assembly, we tested all components to check whether they are working properly.

Then we started writing the code for making emotions, the emotions are constituted by servo movements and animations. To run these multiple processes simultaneously we used the multiprocessing python package.

The animations were made in adobe after effects and exported as image sequences.

So that's all about the build.

Final Results

IMG_4383.jpg
IMG_4349.jpg
IMG_4355.jpg
IMG_4368.jpg

Just plug in Emo and see the magic!

Support Us and Be a Catalyst

We're proud to be a team of tech enthusiasts, constantly pushing the boundaries of innovation with our exciting projects. If you're as passionate about technology as we are, then show your support by joining our Patreon or Buy Me a Coffee page

Patreon: https://www.patreon.com/CodersCafe

Buy Me a Coffee: https://www.buymeacoffee.com/coderscafetech

Feel free to check out our YouTube channel for more awesome projects:

https://www.youtube.com/channel/UC2mz6m0znd29fKwG_fZ82tg