Hand tools and fabrication machines
This project was designed to amuse my relatives and friends when they visit. It’s a very simple “robot.” The interaction between a person and Mr. Wallplate is scripted. There’s no artificial intelligence or deep learning involved here. When he responds to the person, Mr. Wallplate seems to have intelligence, but it's very artificial. Too artificial to be considered artificial intelligence.
I decided to use common items that would not be normally seen in a robot: a toggle/duplex wallplate for the face, ½ pingpong balls for the eyes, and a ponytail holder for the lips. The eyes seem to follow a person moving around the room, but it’s an optical illusion. A motor moves the lips in sync with the words spoken by Mr. Wallplate. The only sophisticated item is the brain, which is LEGO Mindstorms EV3.
The Mindstorms EV3 Software running on a computer generates a program, which is then downloaded to a microcontroller called an EV3 Brick. The programming method is icon-based and high-level. It’s very easy and versatile.
1 toggle/duplex wallplate
3 bolts, #6 or #8, 1 ½ inches (about 4 cm) long
9 nuts for the bolts
1 pingpong ball with no writing on it, or 2 balls if there is writing.
Thin pice of stiff cardboard, about 2”x4” (5x10 cm) or a bit larger
2 round, dark, stickers about the size of the iris of an eye (about 7/16 inches or 1.2 cm). I used brown screw-head trim-buttons, which are meant to cover screws in furniture.
1 red ponytail holder
Red thread of the same shade as the ponytail holder
2 paper clips
About 4 inches (10 cm) of clear tape
1. Attach bolts to the wallplate
Put 1 bolt thru the hole between the “eyes” and fasten with a nut. A second nut is needed, with a space of ⅝ inches (1.6 cm) between the nuts, to leave space for the ½ pingpong balls.
Twist a nut on each of the other 2 bolts and put them thru the other 2 holes in the wallplate. Fasten another nut on each of these bolts as shown in the photo. The space between the bolt head and the nut, on the front of the wallplate, is just wide enough to accommodate the ponytail holder.
2. Make the front stand
Find the necessary elements in the EV3 set, per the photo, and attach them to each other and to the wallplate as shown.
3. Attach the motor
Again, find the elements in the EV3 set (first photo) and attach together as shown in the second photo. The motor attaches to the wallplate assembly as shown in the third photo. The motor shaft hole lines up with the rectangular hole in the wallplate.
4. Attach the eyes
Cut the pingpong ball in half along the seam if possible. I used a utility knife for part of the cut and small scissors to finish it.
Stick the round stickers in the middle of the inside of the pingpong ball halves.
Place the cardboard on the wall plate as shown in the photo and use clear tape to attach the ½ pingpong balls to the black LEGO element.
5. Make the lips
Bend one of the paper clips to the shape shown in the bottom right of the first photo. This will fit into the shaft hole of the motor and will move the lips when the motor turns.
Bend the inside loop of the other paper clip to one side, and use it to turn the motor to the proper alignment such that the first paperclip will fit horizontally as shown in the second photo. It doesn’t turn easily, and then tends to overshoot.
My ponytail holders are just slightly too large, and the “lips” aren’t closed when placed on the “face.” I used the red thread to make 2 loops about ⅜ inch (1 cm) in diameter. It helps to have a round item such as a pen of the proper diameter. Slide the thread loops onto the ends of the ponytail holder, about ⅜ inches (1 cm) from the end. Push the ponytail holder onto the bolts as shown in the third photo.
6. Make the rear stand
Find the elements in the EV3 set (first photo) and attach together as shown. This rear stand fits onto the back of the wallplate assembly as shown in the third photo. There is only one place where it will fit.
7. Make the “hair”
Several EV3 elements are needed for one side of the “hair” as shown in the first photo. The gray connector is 2 3/16 inches (5.5 cm) long. They are attached as shown in the second photo.
The other side of the “hair” is a mirror image of the first side, except it has 3 elements on top instead of 4, and so a shorter (1 ⅞ inches or 4.7 cm) black connector is used instead of the gray connector. The first photo is a guide to what elements are needed.
Additional EV3 elements are needed as shown in the middle of the third photo, and they are all attached as shown in the fourth photo. This isn’t as tricky as it may seem, but it’s important to look closely at the photos.
8. Attach the “hair”
The “hair” attaches to the black element behind the eyes. The bolt fits into the middle hole of the gray element.
9. Develop the program
LEGO Mindstorms has a very convenient icon-based programming method. Blocks are shown at the bottom of the display screen and can be drag-and-dropped into the programming window to build a program. The screen shot, above, shows the EV3 window when a project is first started. The project name is assigned when a program is first saved.
The program makes Mr. Wallplate interact with a person speaking to it. The responses are scripted. There is no artificial intelligence or deep learning involved here.
Each interaction is composed of three blocks:
1. A Wait Block (in the orange Flow Control category) gives time for a person to make a comment.
2. A Sound Block (in the green Action category) makes words or sounds. The rightmost option in the block is set to “1” (Play Once) in order for the next block (the Motor Block) to begin immediately. The motor therefore turns while the sound is being made. The only exception is the second-last block, which has “0” (Wait for Completion) in the rightmost option.
3. A Medium Motor Block (in the green Action category) moves the lips, one half rotation for each syllable spoken by Mr. Wallplate. The Power option is set at 48 to sync the lip movement with Mr. Wallplate’s speaking.
I couldn’t figure out how to set up downloading of the program to you folks, and so I’m showing a list of the blocks below. It shouldn’t take much time for you to develop the program and/or change it to suit your needs. As always, it’s a good idea to save the program periodically when developing it.
1. The Start Block is present automatically when a program is being developed.
2. Wait Block waits 3 seconds. The person says “Hello, Mr. Wallplate.”
3. Sound Block says, “Hello.”
4. Medium Motor Block turns the motor 1 rotation, which opens the lips twice.
5. Wait block waits 1.5 seconds and the person says, “How are you?”
6. Sound Block says, “Fantastic.”
7. Medium Motor Block turns the motor 1.5 rotations, which opens the lips three times.
8. Wait block waits 2 seconds and the person says, “You’re looking well.”
9. Sound Block says, “Thank you.”
10. Medium Motor Block turns the motor 1 rotation, which opens the lips twice.
11. Sound Block makes a “Blip 2” sound.
12. Wait block waits 3 seconds and the person says, “How many fingers?” while holding up 4 fingers in front of Mr. Wallplate.
13. Sound Block says, “Four.”
14. Medium Motor Block turns the motor.5 rotation, which opens the lips once.
15. Wait block waits 3 seconds and the person says, “Do you have any pets?”
16. Sound Block says, “Yes.”
17. Medium Motor Block turns the motor.5 rotation, which opens the lips once.
18. Wait block waits.5 second.
19. Sound Block makes an elephant call.
20. Wait block waits 3 seconds and the person says, “An elephant?”
21. Sound Block laughs.
22. Medium Motor Block turns the motor.25 rotation, which opens the lips.
23. Wait block waits 1 second.
24. Medium Motor Block turns the motor.25 rotation, which closes the lips.
25. Wait block waits 3 seconds and the person says, “Okay, we’ll see you again sometime.”
26. Sound Block says, “Goodbye.”
27. Medium Motor Block turns the motor 1 rotation, which opens the lips twice.
28. Sound Block makes a power-down sound. This is the only Sound Block that has “0” (Wait for Completion) in the rightmost option.
29. Stop Program Block (in the blue Advanced group) stops the program.
10. Connect the EV3 Brick to Mr. Wallplate
Use one of the flat cables in the EV3 set to connect the motor to Port A on the EV3 Brick.
11. Download the program to the EV3 Brick
The EV3 Brick may be connected to the computer by either a USB cable, Wi-Fi or Bluetooth. When it’s connected and turned on, this is indicated in a small window in the lower right-hand corner of the EV3 window on the computer. The “EV3” text in the right-most side turns red. Clicking the proper icon below this “EV3” will download the program to the EV3 Brick and run it immediately.
After downloading, the EV3 Brick may be disconnected from the computer and the program may be initiated on the EV3 Brick.
When time permits, I’m thinking of making the head turn to follow a person moving around the room. This would need a base to hold a motor to turn the head, and a motor and ultrasonic sensor to locate the person.
This was a fun project. I hope you also find it interesting.