Close
0%
0%

Hacking Seasonal Yoda

From the clearance bin to our hearts! Modding Yoda to be a companion bot

Public Chat
Similar projects worth following
Modifying a clearance-rack $50 holiday "Master Yoda" animatronic, into a freely programmable talking 3-axis skull. Definition of Done: Be able to play "Sea Gulls! (Stop it now)" by Bad Lip Reading, and have Yoda sing along. #makerobotfriend This page is a work in progress, thanks for your patience as I get it off the ground. https://www.youtube.com/watch?v=PvwhKqiAzew https://youtube.com/shorts/jfygCYoRjw8 https://youtube.com/shorts/E_Typ3TmwVw

In 2023, Home Depot released its annual line of Halloween and Christmas seasonal animatronics, and this year’s lineup included a Master Yoda (from the Star Wars series, if you somehow did not know), wearing a Santa hat and holding a lightsaber behind a cartoonish faux wooden sign. The expression on his face was considered a bit… off-putting… to some. 

However, when I saw it in person, I was impressed with the expressiveness and the amount of articulation! His eyes move! They blink! He speaks! He ignites his lightsaber and waves it (sort of) as he goes on and on about… the Seasons?!

Yes, because this Yoda animatronic is MULTI-SEASONAL!

Yes, it comes with a… witches hat, and a different sign? Yoda’s speech actually directly avoids mentioning any holiday by name, or anything other than… good feelings, I guess.

This would be in an effort to make it a multi-holiday decoration, that you could leave up, from October to January maybe. I don’t really get it.

Well, apparently, neither did anyone else. Because the holiday decoration that began at a completely reasonable $199, and the prices were slashed, eventually settling at $50 each at Home Depot.

A traditional “talking skull”, where a user can provide their own audio to a prop skull and appears to talk is expensive to buy outright, with many of them ** beginning at the $300 ish price range ** for some of the nicer ones.

Then the price shoots upward when you add the ability for the skull to turn its head and nod/tilt, also known as a “3-axis” skull.

As of this writing, a 3-axis skull from a more reputable haunt site is over $1,000 USD, and then climbs up once you add in theming, such as a silicone “skin”, clothing etc.

So, $50 for a life-size (honestly, probably slightly larger than full scale) Master Yoda animatronic with 3+axis? With 8 servos, 2 DC motors, a “lightsaber”, and various brick a brack. That is a deal! No, that might even be a steal!

And at that price point, I felt that I could fail at this project and still have gotten my money’s worth.

(Note: Prices vary, $50 is the lowest I’ve seen for new in box, with prices averaging $100-$150 on eBay)

The Challenge: Could I reprogram this animatronic to do my bidding?

(Spoilers: Yes.)

IMG_6339.JPEG

Custom "hover sled", esp32-s3, 2 reclaimed brushlless DC motors from a hoverboard, and 2 zs-x11h motor controllers from the 'zon.

JPEG Image - 695.71 kB - 03/20/2025 at 21:26

Preview

IMG_5010(2).jpg

Doesn't he seem so much happier now?

JPEG Image - 2.65 MB - 12/05/2024 at 09:30

Preview

IMG_4995.jpg

We custom 3d printed new hands and feet to make him look a bit closer to the Jedi master we know and love.

JPEG Image - 1.83 MB - 12/05/2024 at 09:30

Preview

IMG_4998(2).jpg

An "in the wild" shot of the SBC, a Youyeetoo brand X64 Windows single board computer, in a metal enclosure.

JPEG Image - 1.50 MB - 12/05/2024 at 09:30

Preview

IMG_5004(1).jpg

A down the barrel view of the "spinal column" of servo extension wires.

JPEG Image - 899.52 kB - 12/05/2024 at 09:30

Preview

  • 1 × Seasonal Yoda from Home Depot Originally retailing for $199 at Home Depot, Master Yoyo's price dipped to a low of $50 after the Christmas season. Can be found for anywhere within that range on eBay/Offerup
  • 1 × Adafruit PCA9865 16 Channel Servo Controller or a compatible clone
  • 1 × ESP32-S3 (or any other Arduino-compatible MCU) I used an Adaftruit ESP32-S3 QtPy, but any MCU that can be wired to the PCA9865 ought to do the trick. If you want standalone animation playback from the mcu, get something fast.
  • 1 × Jemmy Talk board or a DC motor module I use the Jemmy Talk from JMann on Haunt Forum as I had it on hand. You can substitute this for an l298n module, and drive the motor with arduino code.
  • 1 × Optional: Secondary MCU to offload mouth animation features If you DIY instead of get a Jemmy Talk, I recommend separating control of the mouth animations from the rest of the servos, but you do you

View all 7 components

  • tl;dr - self-hosted AI Yoda Speaks, Listens

    savant4210/03/2025 at 19:02 0 comments

    My Mom said to go make a friend. So I made a friend.

    LOTS of updates, I'll just get to the link first: https://github.com/thesavant42/chainloot-Yoda-Bot-Interface

    That is the chat Interface for Yoda's AI stack. 

    He can now hold conversations on his own, using speech recognition, text to speech, and voice cloning.


    And did I say, locally, self-hosted? All of the parts are OpenAI API compatible, but open source / open models, running on my desktop PC with the graphics card it came wtih. (Ok, so the graphics card isn't terrible yet. Let's do the rundown.


     Hardware 


    - RTX 4070, 12 Gigs of VRAM), 

    - 64 Gigs System Ram

    - i7 somethinorother 

    Software


    - Docker, via WSL 2 on Windows 11 for hosting the containers
    - TTS-WebUI with Chatterbox TTS for Text to Speech and Whisper STT services

    - LM Studio for GGUF Model hosting, will likely swap out for llama.cpp once I finalize on the base model, so I can tune for performance. I have an ollama docker container I will test, as well.

    Model(s)

    - Using Qwen3 as a baseline, as it offers a decent mix of tool usage capabilities, reasonably decent at instruction following, and the Q4 quants are pretty ok for under 10 gigabytes. 
    - phi4 performs very well at chatting and role playing but is less reliable at tool usage in my testing, but I concede I have not tuned it whatsoever.
    - Smollm3 from Huggingface is shockingly capable for how smol it is. The unsloth quantization clocks in at ~ 1.8 gigabytes for 128k context. Not a typo, 128k context, under 2 gigs. WAT. If I can get this to use tools reliably, this is the one.

    - Voice Cloning utilizes the chatterbox model + some optimizations, but best of all is how it utilizes compiled flash_attn for speed boosts.

    Lesson learned on tts latency: Don't stream the text, stream the audio. Even if the model supports streaming characters in "real time", don't make the mistake of thinking that will help text to speech times. The TTS engine needs complete sentences to avoid audio artifacts, or even worse, waiting forever for the stream to end.

    https://github.com/rsxdalv/TTS-WebUI The real hero of the show

    https://huggingface.co/unsloth/SmolLM3-3B-128K-GGUF  How'd they do that?

  • GitHub Link

    savant4209/18/2025 at 18:47 0 comments

    I'm still trying to figure out how to make this site work with my brain, but it seems to me this link got buried. So, here's where the code lives.


    https://github.com/thesavant42/y0da

  • Portability (Throwback Thursday)

    savant4209/18/2025 at 18:46 0 comments

    Throwback to early experiments in portability.


  • LayerOne 2025 Video

    savant4209/18/2025 at 18:45 0 comments

    LayerOne

    Firstly, here's the LayerOne Talk. I am pretty happy with how it turned out, but I will admit I was working until the 11th hour on trying to complete the drive-train, and didn't leave myself enough time to polish the slides. As a result, I feel I rushed it, and glossed over some important details. Next time it will be better.

  • Video: Seagulls! (Stop it NOW!)

    savant4204/18/2024 at 04:52 0 comments

  • The story so far

    savant4204/18/2024 at 04:19 1 comment

    Current Status: 

    Main goal is functional, the Robot can be animated in real time, with an xbox (or similaer) controller, in animated sequences via Bottango, or in Bottango's "standalone driver" mode, which more closely mimics a seasonal decoration, and all animation lives on the microcontroller.

    ### Why did I do this?
    - big fan of combining technology and story to create magic
    - to learn the technologies involved
    - to see if I could
    - to have my own robot friend

    ### Who am I?
    - 15+ years in Information Security as an "penetration tester" (hacked applications and networks managed by my employers)
    - Raised in SoCal, big fan of animatronics, and in particular of the audioanimatronics featured in Disney Parks.

    # How does it work?
    ## How it works (unmodified)
    Yoda's animations are triggered by a passive infrared sensor mounted to his robes, which can also be bypassed to use a contact-closure trigger (step-pad, remote, whatever) or be set to "lights only" mode, wherein he just kinda...wiggles around. I didn't spend much time in this mode. 

    ### Control Panel
    Inside his control panel, yoda's animations are driven by a microctroller SoC from FMD. This soc is responsible for driving the left arm motor, the lightsaber LED, and passes off signals from audio recordings on the control board, off to Yoda's head via a 4-wire bus to his head. 

    ## Surgery: Opening Yoda's Head
    There is not a way that I've found to get around this step: You're going to have to open up Yoda's head. This requires getting to 4 cross-head screws that are obscured by the silicone on the back of Yoda's head. 

    The two screws nearest the neck's opening are within channels that can be seen through the opening of the neck, so it's pretty straight forward to follow them to their opening. The two near the top of Yoda's head are a little trickier, but you can feel them with your fingers if you're patient.

    I was able to take a phillips screwdriver, with about a 3" reach, and pierce the silicone over each screw. I then unscrewed them, and then fought the stupid screws to make sure I didn't lose them.

    With the 4 screws removed, the silicone covering is all that holds the two halves of the skull together. 

    ### Silicone Skin, ugh
    Silicone is neat, and skin like in several ways. It's also a pain to have to glue things to. As everyone is quick to tell me, "Only silicone sticks to silicone". To get the skull halves apart, you can delicately separate the pieces along the seam, which is visible from the outside of the Skull, and travels along the path of the shell's seam. The silicone is glued together and is jammed within channels of the head shell. Larger pieces of silicone are bridged together to form a tab within the skull. If possible, try and keep those tabs intact, as they are important in reattaching the skin to the shell. 

    [If you would like you glue the skin back together, you're going to need to buy a specialty silicone adhesive, such as Silpoxy. Note, this stuff is pricey, so have a plan when you use it.]

    [[ EDIT: No longer true! I found an inexpensive silicon glue that will work just fine. ]]

    With some patience and practice, eventually you will be able to get the two halves of the shell apart. BE DELICATE WHEN YOU PULL THE TWO HALVES APART, THERE ARE WIRES CONNECTING THEM TOGETHER!

    Now you can see the inner working of Master Yoda's 900 year old noodle: a smattering of servo wires, connecting up to a breakout board, which is also joined by a 2 wire motor connection for driving Yoda's mouth, and a 4 wire bus back to the main control panel. Sadly, this connector is NOT in fact i2c. It is +3v3, GND, Motor -, Data. Connecting my logic analyzer confirmed PWM on the Data wire, and these pins matched the silkscreen on the OEM control panel.

    ### Breakout within Yoda's Head

    There, it connects to a breakout board, and is joined by 8 3-wire servos, which connect to the board in a **JST PH 2.0mm** 2.0 plug-end connector, as opposed to...

    Read more »

View all 6 project logs

Enjoy this project?

Share

Discussions

number1computerguy wrote 06/22/2024 at 00:59 point

Is there a motor or servo that controls the head tilting up or down?

  Are you sure? yes | no

savant42 wrote 08/12/2024 at 06:08 point

There are both! Servos For head left/right, for head up/down, and for some reason independent servo control over each eyeball. That was kind of a pain at first since I had to do extra work to keep them in sync. For now I just have each eye mapped to the same stick to keep them synchronized. 

  Are you sure? yes | no

Does this project spark your interest?

Become a member to follow this project and never miss any updates