22
Project Watcher
It all started when I decided to make something interesting yet simple for Halloween—so the universe basically nudged me to do something wild. It was meant to be a weekend project.

The core idea came quickly—the very first thought was to make a mechanized eye. And it absolutely had to rotate in two directions—might as well challenge my inner engineer. I couldn’t find an implementation online that I wanted to replicate, so I dusted off Fusion 360 and started designing.

Reinventing the wheel is something I already know how to do; in the previous project I embedded motors inside a tracked chassis. I decided to do the same here—no linkages or bell cranks, just direct drive, pure hardcore. To achieve two‑axis control, we need to place two servos perpendicular to each other so that one rotates on the other. The first prototype turned out rather bulky even with small servos. But I had two of the most common SG‑90 servos lying around, so I decided to assemble a prototype with them.
I optimized dimensions as much as I could; with direct drive on these servos it won’t get any smaller—the eye ended up 42 mm in outer diameter. I puzzled over how to mount the servo inside so it would slide in easily without ruining the sphere’s exterior (i.e., no screws from the outside). The answer came from woodworking—dovetails. I modeled a servo mount and two spacers: one to transfer motion from the servo, and the second serving as the rotation axle.
It’s easier to understand this in practice: screw on the servo, then attach the connectors and insert it into the eye. This way you can easily reprint individual parts, for example, swap the eye.
Print the parts, test‑fit—everything matches.

Software
What about control?
Since we live in an age of almost free developer power in the form of AI, I decided to build an original control interface—with drag‑and‑drop, animation presets, and a chaos mode (it’s a Halloween project, after all; we need more madness). ChatGPT assembled the interface on its canvas—not on the first try, but successfully.

Next we need to hook it all up to the hardware—out of the box comes an ESP8266 in the form of a Wemos D1 mini board, and I wrote a “backend” for it in Cursor. We take the already written interface as the base and add only the backend API—coordinate control, starting animations, and all that.
Connect, flash, test... and we get a jittery, buggy mess that boots but reboots during movement even when powered from a power bank. Is AI to blame? No—electronics. Even these small SG‑90 servos draw over 1 amp each at their peaks (especially if you don’t smooth the motion—and I want something wild and twitchy). For testing I powered the controller directly from the laptop’s USB port and left the servos powered by the power bank. The key is to tie grounds together with such power.
We run it—everything rotates and obeys as it should. To fix the power properly, add a capacitor to the circuit instead of the second supply. For now, let’s switch to something more interesting.
Model
The guts are ready; what about the looks? Once again, AI to the rescue. What single‑eyed thing can you make for Halloween? Of course, some kind of monster. Not a pumpkin. I mean—what pumpkin?

I tried different options for a while until I arrived at this statue.

It looks a bit dull, but it fits the concept. Let’s see how far we can develop this idea. Fantasy? Better. Dark fantasy? It turns into zombies and half‑skeletons.

Cyber‑horror—now that’s more interesting and on theme, but it’s complicated to realize in terms of modeling, printing, and embedding the internals.

Nevertheless this was my main direction until I saw this...

A monster straight off Lovecraft’s pages, horrifying by its very look—perfect across the board.
Take the image, generate a model in Tripo3D, and you get a 3D model. Download the STL and open it in Blender—some areas look rough, so I refined them by hand in sculpt mode. The main task, of course, was to stretch the eye onto... a sphere.

Next, we need to figure out how to place the internals inside—and not just place them, but how to actually insert them.
Obviously, the only path is from below. Before, I would import the mesh into Fusion 360, convert it to a solid, and cut out everything needed in place. But that approach proved unviable on the previous project. Fusion struggles with such meshes because of the high triangle count. So I went the other way and modeled a shroud that would later be boolean‑cut from the STL in Blender.

At first glance it looks monstrous—let me give a brief tour of the technical decisions:
- the mechanism will be inserted from below and then snapped in by moving it forward. To do this I added a separate bracket on the X‑axis mount with a protrusion that will lock into the shell. It’s also clever—so it can flex downward, the eye must be turned downward. Why wasn’t one‑sided mounting to the servo enough? Because then you could push the eye inward due to the long lever. To verify, I cut the necessary part of the model right in the slicer, printed it, and confirmed it works—everything is good.

-
the bracket also has a central hole so there’s at least a theoretical possibility to insert a screwdriver through it and drive a screw into the servo. You’ll need to bend the top mount out of the way—and find a suitably long screwdriver;
-
I also ordered two more servos—just in case. It turned out that random Chinese servos are truly random—their dimensions literally differ, even though both are labeled SG‑90. Critically, the newly purchased ones are 1 mm taller, so I had to revise the models so they can mate with both variants.
-
suppose the mechanism is installed—how do we secure it? I initially planned to bolt the X‑axis servo from below (schematic), but decided such a long and narrow screwdriver would be hard to find. In the best traditions of over‑engineering I designed a derpy robot. Not intentionally, though. Let me show how that happened. The servo needs something to rest on; it’s reasonable that a plate is needed. The bottom is too far from the servo to mount from there. That leaves only the side walls. One side is already at minimum thickness—nowhere to shrink. The other side can’t be widened either; along the lower part the cutout fits the model exactly. So full‑fledged ears for screwing would only get in the way. I didn’t come up with anything smarter than snap‑fits. I put 1 mm protrusions on the walls so they don’t interfere with inserting the mechanism, and also made a plate with bendable “ears” in the first way that came to mind. To test, I printed a slice of the model and the plate—and, surprisingly, everything worked. With some skill it even unclips back out.

- the rest is less interesting—power will be via USB‑C, so I need to model some kind of mount. I didn’t want to bring the connector outside, especially since there’s enough space in the center—so I quickly drew the connector and cable and built the housing around them. I didn’t forget about the ridges in the channel either, so the cable doesn’t fall out and stays securely in its niche.
Printing
If you’re observant, you might notice that the recess for the bracket inside the figure is also clever—made in several layers so that no supports are needed and everything prints as bridges. I’ve known this life‑hack for a long time but rarely use it—you don’t always need to place a hole high up.

I don’t print large figures very often, and some elements here are quite... peculiar. I ran several tests of the parts I was most interested in:
-
head — I was curious how the eye socket sphere and the insertion cavity would print; everything fit.
-
a section of the back cloak with hanging elements — everyone knows how painful it is to print something “in the air” on supports, but surprisingly everything went smoothly. The overhangs practically grew without gripping onto anything. As a bonus, I also checked whether the cable inserts into the channel and how it holds there—it worked for me; I didn’t make any adjustments.
-
several variants of mounts, connectors, and eyes—mostly because of the new servos with larger dimensions.
Now for the full model—despite the successful test attempts, not everything went smoothly here and some dangly bits fell off. I managed to save some in time by hand and with a 3D pen—literally re‑glued a torn support back to the bed.

Otherwise—no issues. Carefully remove the supports, clean up the excess, and everything is ready for assembly.
And then assemble:

The assembly process and demonstration are better watched on video—this is a full DIY piece from start to finish, with much more content.
P.S. I noticed that after switching to video content I almost stopped taking process photos; instead there’s a bunch of video. So there aren’t that many pictures in this article, and some had to be cut from the video. I need to keep in mind that both photos and videos are needed.
No comments yet
-
Goback - easy backups
I finally decided to properly tackle backups. Once again, I had to rely on cust… -
Universal AI Telegram Bot
Want to launch your own AI Telegram bot in just a couple of steps? -
YouTube Watch History Analysis
Ever wondered how much time you spend watching videos? Let's count it. -
Image2model with Tripo3D and Blender
Sometimes you want a drawn or AI-generated character to become real. -
Local Telegram Emulator
Have you ever written Telegram bots? -
Reviving Coat Hanger Bases
We have a couple of coat hangers with hangers at home, where clothes are conven…