Introduction: Emo - DIY Companion Robot
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
1 x Raspberry Pi 4
1 x 8ohm speaker
2 x SG90 servo motor
1 x MG90 motor
1 x Vibration sensor
1 x Perf board
1 x Female header
Step 1: Video
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.
Step 2: Design
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.
Step 3: 3D Printing
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.
Step 4: Preparing Base
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.
Step 5: Getting the Head Ready
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.
Step 6: Setting Up the Body
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.
Step 7: Circuit
The Emo robot has been built according to these circuits.
Step 8: Calibration
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.
Step 9: Final Results
Just plug in Emo and see the magic!
Step 10: 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: