Fully Functional (non-violent) Squid Games Doll Using Arduino UNO

by codemakesitgo in Circuits > Arduino

5027 Views, 44 Favorites, 0 Comments

Fully Functional (non-violent) Squid Games Doll Using Arduino UNO

Instructable.png
Instructable.png
Squid Games Doll build using ELEGOO UNO R3 kit

Build a fully functional squid games doll! She plays the red-light-green-light game with you. Complete with rotating head, colored eyes, and she talks! She uses ultra-sonic and motion detection to determine if you win or lose. But don't worry, if you lose she just asks if you want to play again.

I used every pin on the Arduino UNO 👍 Which I've never done before so this was an achievement for myself. This project took me 3 weeks to build with 1 week dedicated entirely to printing! It took me 6 days to print this doll. 1 week for the build and another week to edit the video. She stands about 2' tall.

This was a fun build that came out looking really nice and creeps out a bunch of people. But more importantly, it works. 😁

Start Printing

20211123_183157073_iOS.jpg
20211123_200106394_iOS.jpg
20211108_191946149_iOS.jpg
20211109_233950316_iOS.jpg
Screenshot 2021-12-06 174700.png

Printing is going to take a long time. It took me 6 days to print the entire doll out. I also used different color filament so that I can reduce the amount of painting.

I remixed a model I found on thingiverse.com, hollowed out the center, and added access holes for the electronics. I also modified the chest plate for the Servo and Ultra Sonic to be mounted. 

Nobody Likes Painting

Screenshot 2021-12-06 175053.png
Screenshot 2021-12-06 174951.png
Screenshot 2021-12-06 174851.png
Screenshot 2021-12-06 175217.png
20211124_231953750_iOS.jpg

Time to paint. I used generic spray paint for this. I painted the inside of the dolls head (masked off the eyes) so that the LEDs for the eyes will not make the entire face glow. Although this might be the effect you are looking for. I wanted just the eyes to glow.

Magnets Attract But Glue Sticks

Screenshot 2021-12-06 175349.png
Screenshot 2021-12-06 175252.png
Screenshot 2021-12-06 175321.png

One way to attach all of the doll's limbs is to melt magnets into the plastic. This is if you want to be able to take her apart. If I were to do this project again I would probably just glue all the limbs on her. As I see it now, there is little advantage to use magnets aside from she can fit into a smaller box for storage if you want. Only thing you should not attach is the head at this point. 

Program the UNO

Now is a good time to program the Arduino UNO. All the steps from here on out rely on it being programmed. Attached is the working program I used for the video and seems to run well.

The game logic is a state machine inside a state machine. One important thing to watch out for is the use of the timer1. This timer is running at 2000Hz and is used for the servo PWM signal and the updating of the 4 digital display.

The latest code will always be on the GitHub.

https://github.com/CodeMakesItGo/SquidGamesDoll

Downloads

Easy on the Eyes

Screenshot 2021-12-06 175549.png
Screenshot 2021-12-06 175631.png
Screenshot 2021-12-06 175921.png
Screenshot 2021-12-06 180001.png
Screenshot 2021-12-06 180013.png
Screenshot 2021-12-06 180025.png

Start with the easiest step, the eyes. I used tri-color LEDs for the eyes. As you know, you can mix and match RGB colors to get basically any color you'd like. I stuck with primary and secondary colors so I didn't have to PWM the signals. But you can if you are looking for that.

The longest pin is the ground.

Connect the LED as pictured is the wire diagram (below) using 220ohm resistors for each lead aside from the ground.

For mounting, I simply hot glued the LEDs as close to the center of the eyes as I could get but on the reverse side. Be sure to use long enough wires to pass down the neck and into the lower part of her body. 

LCD Menu

Screenshot 2021-12-06 175732.png
Screenshot 2021-12-06 181336.png
LCD Connections.png

The next easiest component is the 16x2 LCD screen. You should use the LCD screen with an I2C adapter. It will make your life much easier and reduces the IO count from 6 to 2. Once this is connected, the LCD should startup with "Welcome to the squid games!" on the display.

For mounting, I printed out a 1mm thick circle. I make this thin so that I can mold it to the doll's back with a heat gun. This is much easier than figuring out the contours of her back ( at least for me ). I installed threaded inserts for the display with nuts on the reverse side to secure the display and the display mount to the body. 

Only Owl Heads Rotate 180 Degrees

Screenshot 2021-12-06 180244.png
Screenshot 2021-12-06 180300.png
Screenshot 2021-12-06 180614.png

The servo was difficult for one main reason, I don't use the servo library. I know that sounds weird but I had to use the timer1 for the 4 digit display update and the servo library also uses this. Luckily, the servo is either 0 degrees or 180 degrees and there is no in between making this a lot easier.

Timer1 is setup for .5ms intervals, 2000hz. The servo period is 20ms. At 0 degrees the pin only needs to be high for 2 counts and low the rest of the period. For 180 degrees the pin needs to be high for 4 counts and low the rest of the period.

There is a nice mount on the chest plate for the servo. You can screw it into place or glue it into place. I used epoxy to secure the servo to the chest plate because it will also add strength to the chest plate and hopefully prevent it from damage.

Sounds Like a Bat

Screenshot 2021-12-06 180427.png
Screenshot 2021-12-06 180326.png
Screenshot 2021-12-06 180345.png
Screenshot 2021-12-06 180614.png

Next we will install the ultra sonic distance module. I have this updating every 250ms. Its also has a nice mounting location on the chest plate. There are only 2 wires for this module.

I used epoxy to mount the ultra sonic to the chest plate.

No Strings Attached

Screenshot 2021-12-06 175838.png
Screenshot 2021-12-06 181023.png

The IR sensor for the remote is only needed if you want to control the game play. I thought this would be fun but don't really use this mode, automatic game play is fun enough.

I chose to mount the IR sensor inside a clip on the doll's hair. You can obviously choose to place it somewhere else. I was trying to hide it but maybe there is a better place because the IR doesn't always see the remote when she turns her head and the sensor is on the other side.

Time to Time

Screenshot 2021-12-06 181144.png
Screenshot 2021-12-06 181126.png
Screenshot 2021-12-06 181254.png
DJI_0316.JPG
4 Digit Connection.png

Next we will setup the timer display. This is a lot of work for a 4 digit display. I will include the connection diagram from ELEGOO. The game play is only up to 5 minutes so I also removed the use of the most significant digit. But you can decide to keep it if you have the IO pin available. To update the display you have to cycle the LED very quickly because you can only have one digit active at a time. This is why they seem to flicker when watched through a camera. I used a 2ms refresh rate which is fast enough that you cannot see the flicker. At 5ms I can start to see it flicker when looking at the display in my peripheral vision. In addition, you will need the shift register 74HC595.

Mounting the display was not fun. I decided it was best to integrate the display into her belt. The original doll in Squid Games does not have a belt of course, but sacrifices had to be made to get this display on her. If you choose this route too, mask off a square the same size of the display then cut it out with a Dremel. I then used epoxy putty to add a gradual transition to the display. But this was not needed, I just thought it looked better this way.

I mounted the 74HC595 to the prototype shield, otherwise you will have wires going all over the place. An alternative solution is to use a different timer display that has a more convenient communication with less pins.

I Saw You Move

Screenshot 2021-12-06 181825.png
Screenshot 2021-12-06 181627.png
Screenshot 2021-12-06 181657.png

The motion detector is a weird little guy. This thing uses infrared to detect movement. One thing I learned is that this sensor needs time to warm up. On startup it needs 1 minute to warm up. That is why there is a 1 minute startup time for the doll. Another annoyance with this module is that the fastest it can update a movement detection is about 5 seconds. The last annoyance is how sensitive this sensor is. Even with the sensitivity turned all the way down, it still can see the smallest of movements and sometimes movement that I don't even know what it is talking about. To help prevent these "false positives" I mounted the sensor inside a horse blinder box. The box has a small hole (7mm) for the motion detector to look out. As a bonus, this prevents you from having to mount this giant sensor on the outside of the doll. The motion sensor only has one binary wire for feedback, motion or not.

To mount the sensor, I printed out the horse blinder and glued it to the inside of the doll. I then drilled a hole through the body. I used threaded inserts on the blinder box to secure the motion sensor. 

Don't Push My Buttons

Screenshot 2021-12-06 182131.png
Button PIN SAVE.png

Finally, we are at the buttons. If you have the extra I/O pins, it is easier to connect each of these to a digital input. But I did not have this luxury for the UNO. Instead I had to use an analog input to read the resistor values to determine which button was being pressed. The values I used were, 1K, 2K, and 5K. Then I had a 220 Ohm resistor to pull the analog input low. Otherwise it will float and get random button presses.

I mounted the buttons on the same mounting plate as the LCD. This was not easy but I didn't have a better way. Soldering the wires onto these buttons then getting them to pass through little holes drilled in the plastic will test your patients. 

Can You Hear Me Now?

Screenshot 2021-12-06 182546.png
Screenshot 2021-12-06 183010.png

Last step and probably the most important is the sound module. This will use the serial port on the UNO so you must add 1K Ohm resistors to the Tx and Rx pins otherwise, you will get blocked from programming the UNO after this connection is made. In addition, you will need to use the "busy" pin so that the UNO knows that a sounds is already playing. This is very important if you have MP3s playing back-to-back.

I mounted the MP3 player module on the prototype shield. This shield makes mounting components like this very convenient because it then just plugs into the UNO. This module will need an 8ohm speaker and has an output of 3W. The speaker was just glued down to the base of the doll. I drilled small holes under the speaker for the sound to come out better. 

Mount the UNO

Screenshot 2021-12-06 182620.png
Screenshot 2021-12-06 182405.png

Install the UNO onto the platform and plugged the prototype shield onto the UNO. Be sure that you have labeled all of the wires, if not you probably don't know where any of them go by now. With a little bit of negotiation, you can get the mounted UNO inside the doll with all the wires connected.

I used threaded inserts to mount the platform to the bottom of the doll. 

Test Fix Test

Fritzing_bb.png

This is when you get to put your debugging hat on. I can tell you the software is working on GitHub so at least that is one less thing to debug. But go ahead anyway if you have doubts and send me any updates you find. 

Let's Play

Screenshot 2021-12-06 183648.png
20211127_181109750_iOS.jpg
Screenshot 2021-12-06 183613.png

Time to test her out and play a game. Here is how the game is programmed.

On startup she turns her head forward.

The motion sensor take a full minute to startup. So there is a timer when it starts. Half way through she giggles and turns her head around. Then announces when she is ready.

 

Depending on if you have the game set to remote she says different things. In Auto mode she asks you to press the play button. In my case, this is the far right button. In remote mode she will ask you to press the power button when you are ready. Then press the play button to toggle to red light or green light.

 

So when you are ready, press the go button and she will give you 10 seconds to get in place. Usually someone else nearby will press this button.

 

Then the game begins. She will start with Green light. For green light you have to get within 50cm to trigger a win. If you are within 100cm she will say indicate that you are getting closer. Green light is only using the sonar.

 

For red light the motion sensor and the distance sensor is being used. If you move enough for the motion sensor to trip or if you move more than 10cm forward, you will loose the game. You will also loose the game if time runs out. She will remind you that time is almost out at 5 seconds left.

 

The last cool feature is that she will also speak in the Korean voice for the red light. This is a menu feature. Press the far left button to toggle the menu item, and the center button to toggle the item options. 

Watch the Build Video

Squid Games Doll build using ELEGOO UNO R3 kit

This video took me a long time to edit. I have probably 30 hours in just editing. But it was fun making it. I think it came out good and is funny but want you to see for yourself. Please let me know what you think and if you have any questions.


Video is here:

https://youtu.be/jd_4a4x3uCw


Code is here:

https://github.com/CodeMakesItGo/SquidGamesDoll


Thank You!