Published © CC BY-NC-SA

An Internet Controlled 2020 Smusher

Let’s face it: 2020 was a terrible year and we’d love nothing more than to see it disappear.

IntermediateFull instructions provided24 hours465
An Internet Controlled 2020 Smusher

Things used in this project

Hardware components

Raspberry Pi 3 Model B
Raspberry Pi 3 Model B
×1
Google AIY Voice Kit (V1)
×1
mg90s Servo
×2
mg995 Servo
×1
Camera Module
Raspberry Pi Camera Module
×1
Metal servo bracket
×1
Blue, green, pink, black and white felt
×1
Cardboard
×1
Popsicle stick
×2
Playdough
×1

Software apps and online services

Blender
Tinkercad
Autodesk Tinkercad
Google Cloud Platform
Remo.TV
Prusa Slicer

Hand tools and fabrication machines

3D Printer (generic)
3D Printer (generic)
Fabric hole puncher
Scissors
Needle & thread
Sewing pins
Strong glue

Story

Read more

Custom parts and enclosures

Fire

L Shape

Code

Remo Code

Python
# Custom Remo.TV controller code

# Generic imports
import time
import os

# Servo setup
from gpiozero import Servo
rightEyebrowServo = Servo(26)
leftEyebrowServo = Servo(24)
smusherServo =  Servo(12)
smusherServo.max()
leftEyebrowServo.detach()
rightEyebrowServo.detach()
smusherServo.detach()

# Eyebrow positions
# Sad eyebrow position
def sad():
    rightEyebrowServo.min()
    leftEyebrowServo.max()

# Neutral eyebrow position
def neutral():
    rightEyebrowServo.mid()
    leftEyebrowServo.mid()

# Angry eyebrow position
def angry():
    rightEyebrowServo.max()
    leftEyebrowServo.min()

# Sceptic eyebrow position
def sceptic():
    rightEyebrowServo.mid()
    leftEyebrowServo.max()

# Detaches the power from the servos to stop them from shaking
def detachServos():
    leftEyebrowServo.detach()
    rightEyebrowServo.detach()
    smusherServo.detach()

# Moves the smushing servo that holds the fire
def smush():
    smusherServo.min()
    time.sleep(1)
    smusherServo.max()
    time.sleep(1)
    detachServos()

# The robot setup which we've somehow left empty :)
def setup(robot_config):
    return

# This bit is executed when someone presses a button on Remo.TV
def move(args):
    angry()
    time.sleep(1)
    detachServos()
    smush()
    detachServos()
    sad()
    time.sleep(1)
    detachServos()
    time.sleep(1)
    return

Credits

Comments