Creepy Pumpkin

A Halloween prop pumpkin that will definitely creep people out.

Public Chat
Similar projects worth following
A couple of years ago I saw this project by BLAKE RODGERS on the Nerdist for a pumpkin with moving eyes: I decided to try to make one. I got most of the way there, but I got busy with work and ran out of time. Last year I revisited the idea, but got to thinking about how I could one-up that project. I’d started playing around with a OpenMV M7 board for a different and much larger project, but was looking for something a little smaller to get started with. The idea occurred to me that, if the eyes could move in 2 dimensions, I could use the M7 to find faces and have the eyes track them. This would make a pumpkin with eyes even more freaky!

I’d started playing around with a OpenMV M7 board for a different and much larger project, but was looking for something a little smaller to get started with. The idea occurred to me that, if the eyes could move in 2 dimensions, I could use the M7 to find faces and have the eyes track them. This would make a pumpkin with eyes even more freaky!

I did some image searches for a simple 2D eye pointing mechanism and this is what I settled on:

I oped to use wire for the links and substituted shrink tubing for the printed flex couplings, stripped out every thing for the second eye, and made the whole mechanism more compact: 

I decided to reuse the eye balls I purchased for the first year’s attempt (Hobby Lobby Plastic Eyeballs), so I printed up a chuck to hold them on my Taig lathe to cut the backs off of them.

My wife suggested I buy a plastic pumpkin rather than using a real pumpkin, for ease of attaching things and so we could use it annually. I found a decent one at Hobby Lobby (Orange Craft Pumpkin - Extra Large), and while it wasn’t cheap it turned out to be a very good choice. It is made of a fairly stiff foam, ~8 mm - 10 mm thick. I used some Shapelock (Polycaprolactone) to make a workable mounting interface for each eye assembly and the PCBs, which would generally stick to the pumpkin interior. These were molded using 3D printed molds coated with mold release. In cases where the Shapelock didn’t stick, cleaning with lacquer thinner and some contact cement fixed the problem. Magnets embedded in the Shapelock and eye assembly mounting ring allow for a secure eye mount and easy removal of the eyes for repair.

One key detail was to make sure all the mounts were oriented so the elevation axis (the axis an up/down motion rotates around) of camera and eyes are as level as possible, hence the stainless steel pins in the eye mount molds being aligned with where the magnets line up. This orientation makes the math for calculating where to point each eye quite a bit simpler (one less coordinate rotation to screw up).

Once all the mounts were in place, I needed to measure the linear and angular offsets between the eyes and the camera. To do this I build a variety of tools to help: A proxy for the camera, plugs that mated to the eye mounts, a tube that would fit into each to make angle / height measurements with marks a known distance from the eye / camera lens center. I used a plumb bob to mark out coordinates of points on the tube, projected to a surface at the bottom of the pumpkin, while mounted in each eye / camera lens center.

After that, I measured the height of each of these location marks. Finally, I measured where each of the marks were relative to each other on the paper I marked up. With these measurements I had enough information to calculate exactly where each eye is, relative to the camera, and how each points in traverse and elevation relative to a global coordinate frame.

I loaded all the coordinates into CAD to calculate the angle / offsets between the eyes and camera. The rest was just programming up some vector math to calculate the traverse / elevation angles to get the eyes to point at the ‘victim’. All the eyes will try to look at the detected face, even if they can’t quite point directly at it, which looks genuinely creepy. When the OpenMV doesn’t detect a face, the eyes wander about just like Blake’s version, which adds to the effect too.

One last detail I needed for night time use was to remove the IR filter from the Ultra Wide Angle Lens (purchased from the OpenMV store) installed on the camera.  Then I set up a IR flashlight to illuminate the front of the house so the reflected light would show faces effectively without ruining the ambiance of my...

Read more »

The lates script for running the Pumpkin, with NeoPixel back lighting.

text/x-python-script - 24.79 kB - 07/19/2019 at 03:23


Debugged NeoPixel library that will work with the OpenMVM7.

x-python-script - 4.92 kB - 07/19/2019 at 03:22


This is the basic script for running the Pumpkin.

text/x-python-script - 22.80 kB - 07/19/2019 at 02:59


Assembly Mount.stl

This mount has four pockets for 1/4" Dia X 1/8" Thick magnets (K&J P/N ZD42E) to hold the entire eye assembly in place.

Standard Tesselated Geometry - 1.17 MB - 07/19/2019 at 02:02


Servo Bracket.stl

Mount for two SG51R type servos; one for traverse and one for elevation. This press fits into the Assembly Mount.

Standard Tesselated Geometry - 75.08 kB - 07/19/2019 at 02:02


View all 13 files

  • 1 × OpenMV M7 The OpenMV Cam is a small, low power, microcontroller board which allows you to easily implement applications using machine vision in the real-world. You program the OpenMV Cam in high level Python scripts (courtesy of the MicroPython Operating System).
  • 1 × Ultra Wide Angle Lens This lens give the OpenMV cameras a 185° FOV.
  • 16 × SG51R RC Servo 9 gram micro servo.
  • 1 × Adafruit 16-Channel 12-bit PWM/Servo Shield - I2C interface Used to drive all the eye servos.
  • 8 × Hobby Lobby Plastic Eyeballs We only need the front half of these. I could have printed hemispheres, but I like the art work on these.

View all 8 components

  • Back Lighting!

    N. Christopher Perry07/19/2019 at 03:19 0 comments

    Last year I just stood a flashlight inside the Pumpkin to illuminate the eyes, so you could see them in the dark.

    This year I decided to add some Neopixels to each eye so I could more efficiently light them upend also have them change color, with them being yellow normally and have them turn red when they are all pointing at someone!

    I designed a little bracket to hold Adafruit Breadboard-Friendly Neopixel boards at a good angle, and included pockets to add more magnets so they could mount to the back of the eye assembly bracket:

    Had a bit of debugging to do to get the ws2812 python library to work with the M7, but once that was sorted out updating the main script was pretty quick!

View project log

Enjoy this project?



Mike Szczys wrote 07/26/2019 at 20:23 point

The backlights make this so satisfying! I also wonder about the sound of it in operation. Hopefully the pumpkin muffles it just enough so anyone nearby has their attention drawn but can't quite figure out what they're hearing. Love it :-D

  Are you sure? yes | no

N. Christopher Perry wrote 07/27/2019 at 13:21 point

Thank you!  You can hear the servos, but it’s subtle.  The pumpkin does muffle most of the sound.  A little mood music is more than enough to drown it out.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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