February 3, 2019
EmojiBot is happy, unless he isn't. You choose. A chat-controlled robot that lets viewers create faces and animated expressions during live-streams. It's like Mr Potato Head...except completely different.
Make faces during live-streams.
In Development: Prototype 2
Reproduction plans (CC BY-SA) and limited release prototypes will be available after final.
Some products purchased through links may earn me a small commission to help fund further inventing to share with you. Thank you for your support.
OVERVIEW:
EmojiBot is my first interactive, chat-controlled robot to let viewers physically interact with live-streams. It's a simple 5 servo system that would let viewers change the eye, brows, and mouth positions to make expressions using simple IRC chat commands.
Each part can be independently positioned and animated.
The trickiest part was mapping the eyes/mouth to 360o and positioning the gear interface correctly.
He's not always happy.
There are many ways to do this. I chose the NodeJS+Arduino route.
DESIGN NOTES:
- Used NodeJS with wired Arduino UNO as it was the fastest, easiest, best documented, and most accessible solution for people.
- To get full 360o rotation from the 180o servo motors I used 2:1 printed spur gears.
- Body parts were created using lasercut 1/4" MDF with a removable front/back panel.
- Used some salvaged parts (legs & eyeballs) to speed up development for the first POC and PROTO1.
- Uno is powered via USB cable, so only need external 6V supply for servos.
- To interface with an IRC other than Twitch, you'll need to replace the tmi module with a module designed to interface with other IRC. You'll also have to write interface functions to map the new module to the bot code.
KEY COMPONENTS:
- NodeJS + Johnny-five IO module + TMI module (Twitch chat)
- 1x, Arduino UNO
- 2x, 180o Mini Servo (Brows)
- 3x, 180o Standard Metal Gear Servo (Mouth + Eyes)
- 1x, Ultrabright Green LED
Notes on controlling EmojiBot. Select a tab to learn more. All commands can be pasted directly into the live-stream chat field.
!eb1.[part abbreviation][degrees]
Part Abbreviations:
- Right Eye: re
- Left Eye: le
- Both Eyes: es
- Mouth: m
- Right Brow: rb
- Left Brow: lb
- Both Brows: bs
Degree Ranges:
- Right Eye: 0-360
- Left Eye: 0-360
- Both Eyes: 0-360
- Mouth: 0-360
- Right Brow: 0-180
- Left Brow:0-180
- Both Brows: 0-180
Examples:
- !eb1.re145 (move right eye to 145 degrees)
- eb1.le45 (move left eye to 45 degrees)
- !eb1.m190 move mouth to 190 degrees)
- !eb1.es45 (move both eyes to 45 degrees)
- !eb1.rb180 (move right brow to 180 degrees)
- !eb1.lb0 (move left brow to 0 degrees)
- !eb1.bs30 (move both brows to 30 degrees)
- You may "stack" up to 5 part commands to create a custom face in one command. For Example: !eb1.re35.le160.rb75.lb130.m90
Scripted positions for parts:
Face:
- Random Face: !eb1.random
Eyes:
- Eyes Left: !eb1.esleft
- Eyes Right: !eb1.esright
- Eyes Up: !eb1.esup
- Eyes Down: !eb1.esdown
- Eyes Right-Up: !eb1.esrightup
- Eyes Right-Down: !eb1.esrightdown
- Eyes Left-Up: !eb1.esleftup
- Eyes Left-Down: !eb1.esleftdown
- Eyes Inward: !eb1.esin
- Eyes Outward: !eb1.esout
Brows:
- Brows Left: !eb1.bsleft
- Brows Right: !eb1.bsright
- Brows Up: !eb1.bsup
- Brows Flat: !eb1.bsflat
Mouth:
- Mouth Up: !eb1.mup
- Mouth Down: !eb1.mdown
- Mouth Left: !eb1.mleft
- Mouth Right: !eb1.mright
- Mouth Right-Up: !eb1.mrightup
- Mouth Left-Up: !eb1.mleftup
- Mouth Left-Down: !eb1.mleftdown
- Mouth Right-Down: !eb1.mrightdown
Notes:
- Stacking commands is not supported for positions for now.
Scripted expressions you can invoke:
- Crazy: !eb1.crazy
- Happy: !eb1.happy
- Sad: !eb1.sad
- Mad: !eb1.mad
- Scared: !eb1.scared
- Surprised: !eb1.surprised
- Disgust: !eb1.disgust
- Confused: !eb1.confused
- Terror: !eb1.terror
- Anticipation: !eb1.anticipation
- Smug: !eb1.smug
- Devious: !eb1.devious
- Drunk: !eb1.drunk
Notes:
- Stacking commands is not supported for expressions for now.
Scripted animations you can invoke:
- Look Left: !eb1.lookl
- Look Left-Down: !eb1.lookld
- Look Right: !eb1.lookr
- Spin Eyes same direction: !eb1.spin
- Spin Eyes Opposite: !eb1.spino
- Cat Clock: !eb1.catclock
- Confused: !eb1.confused
- Wiggle Brows: !eb1.wigbs
Notes:
- Stacking commands is not supported for animations for now.
Twitch Only
Invoke these emotes in chat and watch EmojiBot's face emulate the emote.
- FeelsBadMan
- FeelsGoodMan
- PogChamp
- Kappa
- TriHard
- 4Head
- cmonBruh
- LUL
- haHAA
- MrDestructoid
- gachiGASM
- laboraSnax
- laboraIdea
- labora8ball
Notes:
- Only the first Emote encountered in message is triggered.