Your Pixel Store
Ocular Vox
Animatronic Skull Controller
Ocular Vox Controller Board

Contents

  1. 1. Hardware Setup
  2. 2. MicroSD Card & Audio Files
  3. 3. Power
  4. 4. Menu System
  5. 5. Eyes
  6. 6. Audio & Jaw Servo
  7. 7. Trigger Input
  8. 8. Line-In Audio
  9. 9. Custom Eyes
  10. 10. Firmware Updates
  11. 11. Troubleshooting
  12. 12. Specifications

1. Hardware Setup

LCD Eye Displays

Connect the two round LCD displays using the FPC ribbon cables. The connectors are on the top edge of the board, labeled LEFT EYE and RIGHT EYE.

FPC connectors: two different latch types.
Board side (LEFT EYE / RIGHT EYE): flip-type latch. Lift the latch up, slide the cable in, press the latch back down to lock.
LCD side: slide-type latch. Pull the latch straight back (toward the cable), insert the cable, then push the latch forward to lock.
In both cases: pins face down, blue reinforcement tab faces up. If it's fighting you, flip the cable around — it goes in one way only.
Board FPC connectors
Board connectors (LEFT EYE / RIGHT EYE) — flip-type latch, lift to open
LCD FPC connector
LCD connector — slide-type latch, pull back to open

Speaker (Optional)

Connect a 4Ω 3W speaker to the screw terminals labeled SPKR. Polarity matters — + and are labeled on the terminal. You can also use the line-level audio output to feed powered speakers or an external amp.

Line out: When a cable is plugged into the line-out jack, the onboard speaker output is automatically disabled.
Speaker connector
SPKR screw terminals — observe + and − polarity markings

The onboard DAC is surprisingly good. You'll hear it.

Jaw Servo

Standard 50Hz hobby servo. Plug into the 3-pin vertical SERVO header. The connector is oriented with GND on top, +5V in the middle, and SIG on the bottom. Black or brown wire goes on the top pin (GND).

Servo connector
SERVO header — GND (top), +5V (mid), SIG (bottom)
First boot: The jaw servo is intentionally disabled on first power-up. This prevents your skull from unexpectedly chomping before you've set the travel limits. Go to Menu › Jaw, set Open and Close positions, then save. The servo will come alive after that.

Mounting

The board has a 40mm × 40mm mounting hole pattern using M3 screws. This is a standard spacing compatible with common prop mounting brackets and 3D-printable mounts available at ocularvox.com/resources.

Connector Reference

ConnectorDescription
LEFT EYE / RIGHT EYEFPC connectors for LCD eye displays (flip-type latch)
SPKRScrew terminals for 4Ω speaker (+ and − labeled)
SERVO3-pin jaw servo header (top=GND, mid=5V, bot=SIG)
MicroSDMicroSD card slot (FAT32, up to 32GB)
TRIG3-pin trigger input (pin1=GND, pin2=+5V, pin3=IN)
LINE IN3.5mm audio input jack (line level)
LINE OUT3.5mm audio output jack (line level); disables speaker when connected
USB-C5V power input + firmware updates
DC JACK12–24V barrel jack power input

2. MicroSD Card & Audio Files

Card Requirements

Audio Format

All audio files must be 16-bit PCM WAV format. We recommend 44.1kHz, Stereo for best results. Other formats (MP3, 24-bit, compressed) are not supported.

If your tracks don't play, the answer is almost always "it's not 16-bit PCM WAV." Every time.

Folder Structure

MicroSD Card (FAT32)
├─ /audio/ — Triggered voice tracks (up to 32)
│  ├─ 01_welcome.wav
│  ├─ 02_spooky_greeting.wav
│  └─ 03_go_away.wav
├─ /ambient/ — Background loops (optional)
│  └─ creepy_ambience.wav
└─ /eyes/ — Custom eye files (optional)
    └─ demon_fire.eye
Track order: Files in /audio/ play alphabetically. Prefix with numbers (01_, 02_, 03_) to control the playback order. Or enable Shuffle mode for random picks.

3. Power

The Ocular Vox has two power inputs:

InputVoltageBest For
USB-C5VBench testing, firmware updates
DC Barrel Jack12–24VPermanent installations, cleanest audio
Never connect both at the same time. Pick USB-C or barrel jack. Not both. This is the kind of mistake you only make once, and we'd prefer you didn't make it at all.
Audio noise: Cheap USB hubs and computer USB ports can inject buzzing or sweeping noises into the audio. For clean sound, use a quality phone charger (5V USB-C) or the barrel jack with a dedicated 12V supply.

Controls

ActionWhat It Does
RotateNavigate menu items / adjust values
PressSelect item / enter edit mode / confirm
Long-pressSave all settings and exit menu instantly
Rotate (idle screen)Adjust volume — Voice Vol during playback, BG Vol otherwise
Saving: You can save two ways: long-press the encoder from anywhere in the menu, or scroll to [Save & Exit] at the bottom. The menu also auto-saves after 60 seconds of inactivity. If you want to discard your changes, just power cycle before saving.

Full Menu Reference

5. Eyes

The Ocular Vox drives two round 240×240 GC9A01 LCD displays. Depending on the model, the displays may include precision-cut glass lenses optically fused for a seamless finish, or standard bare LCDs.

Built-In Eye Styles

The firmware includes 9 built-in eye styles stored in flash memory. They load instantly and are always available, no MicroSD needed. These include human, demon, reptile, alien, and more.

Flip & Swap

Depending on how the LCDs are physically mounted in your skull, the eyes might appear upside down or swapped left/right. Instead of rewiring:

Changes preview live as you toggle them. No need to save and restart.

6. Audio & Jaw Servo

Triggered Playback

WAV files in the /audio/ folder are your triggered voice tracks. When the skull is triggered (by the trigger input, AutoPlay, or Browse Audio), it plays the next track in sequence (or a random one if Shuffle is on).

Use clean vocal-only tracks. The FFT analysis picks up all audio energy in the vocal frequency range — it does not isolate vocals from music. Background music, sound effects, and ambient noise will all make the jaw move. For best results, create dedicated vocal-only audio tracks. Save the music and effects for your ambient tracks instead.

Background Audio

Enable BG Audio in the Audio menu to play ambient loops from the /ambient/ folder. If you have multiple files in the folder, they play sequentially and loop back to the first when they reach the end. The jaw does not sync to ambient audio — it's background atmosphere, not speech.

Volume Controls

There are two independent volume controls:

The encoder knob adjusts volume from the idle screen. During triggered playback it adjusts Voice Vol. At all other times it adjusts BG Vol. A popup shows which one you're changing.

They don't cross. Voice Vol won't turn down your ambient, and BG Vol won't touch your triggers. We thought about it for like five whole minutes.

Jaw Servo Setup

On first boot, the jaw servo is disabled. This is intentional — nobody wants a servo flailing around before limits are set.

  1. Go to Menu › Jaw
  2. Set Jaw Open to the position where the jaw is fully open (live preview — the servo moves as you adjust)
  3. Set Jaw Close to the resting closed position
  4. Optionally adjust Exaggeration
  5. Save & Exit

How Jaw Sync Works

The Ocular Vox performs real-time FFT analysis on the audio output, measuring energy in the vocal frequency range. This energy level drives the servo position between your open and close limits. The result is realistic lip-sync with zero programming — as long as you feed it clean vocal tracks.

Exaggeration

The Exaggeration setting (100–200%) scales the vocal energy before mapping it to servo position. At 100%, the jaw moves proportionally to the audio. Crank it up toward 200% for more dramatic movement, especially useful for quieter tracks where the jaw might otherwise barely move.

200% exaggeration on a whispery ghost track is chef’s kiss.

Safety: All servo pulses are clamped to your configured open/close limits. The servo physically cannot move beyond the positions you set, regardless of audio level or exaggeration.

7. Trigger Input

Wiring

The trigger terminal has three pins:

PinLabelFunction
1GNDGround — connect one side of your button/sensor here
2+5V+5V convenience output for powered sensors (PIR, etc.)
3INTrigger input — connect the other side of your button/sensor here

Basic Wiring (buttons & simple sensors)

Wire your button or contact closure between pin 1 (GND) and pin 3 (IN). When the circuit closes, the IN pin is pulled to ground and the skull triggers. That's it — two wires.

Trigger connector
TRIG header — pin 1 (GND) on left, pin 3 (IN) on right. Basic sensors wire between pin 1 and pin 3.

Powered Sensors (PIR, etc.)

Pin 2 provides +5V as a convenience output for sensors that need power, like PIR motion detectors. Connect the sensor's power to pin 2, ground to pin 1, and signal output to pin 3.

Compatible Sensors

Cooldown

After a triggered track finishes playing, a cooldown timer prevents re-triggering. The default is 30 seconds. Adjust in the menu from 5 to 120 seconds. The cooldown starts when the audio finishes, not when the trigger fires.

Menu lockout: The trigger input is intentionally ignored while you're in the menu or audio browser. Exit the menu to return to normal trigger operation.

8. Line-In Audio

The 3.5mm audio input accepts line-level audio from external sources. This audio is passed through to the speaker and also drives the jaw servo — perfect for live puppeteering.

Compatible Sources

Microphone Note

The input is line-level only. Passive electret microphones (most cheap 3.5mm mics) will produce no sound — the board doesn't provide bias voltage. Use a self-powered microphone, a dynamic microphone, or add an inline battery-powered preamp.

Recommended preamp: A compact inline preamp like the Fosi Audio one on Amazon works great. Plug your mic into the preamp, plug the preamp into the Ocular Vox, and you've got live puppeteering. Talk into the mic, the skull talks back.

How It Works

9. Custom Eyes

Eye Creator Tool

Design your own eye textures using our free online tool at ocularvox.com/eyes. No account required, no software to install. Everything runs in your browser.

You can:

Installing Custom Eyes

  1. Download the .eye file from the Eye Creator
  2. Copy it to the /eyes/ folder on your MicroSD card
  3. Insert the card and power on (or reset the board)
  4. Go to Menu › Eyes › Eye Style and scroll to your custom eye
  5. Save & Exit

Custom eyes are scanned at boot and appear in the eye selection menu alongside the built-in styles.

Reload: The MicroSD card is scanned at boot. If you add or remove .eye files, you'll need to reset or power-cycle the board for the changes to appear.

10. Firmware Updates

  1. Download the latest .uf2 firmware file from ocularvox.com/resources
  2. While the board is powered off, hold down the USB_BOOT button on the RP2040
  3. While holding USB_BOOT, connect USB-C to your computer
  4. A drive called RPI-RP2 will appear on your computer
  5. Drag and drop the .uf2 file onto that drive
  6. The board will reboot automatically with the new firmware
Settings preserved: Your saved settings (eye style, volume, jaw limits, etc.) are stored in a separate flash region and survive firmware updates. You won't lose your configuration.

11. Troubleshooting

ProblemSolution
No sound Check speaker wiring and polarity. Verify WAV files are 16-bit PCM. Make sure volume isn't at 0. If a cable is in the line-out jack, the speaker is disabled.
Buzzing / noise in audio Use a quality power supply. Computer USB ports and cheap hubs inject noise. The 12V barrel jack gives the cleanest audio.
Jaw doesn't move Jaw is disabled until you set limits. Go to Jaw menu, set Open and Close positions, save.
Jaw doesn't move with ambient audio By design. The jaw only syncs to triggered voice tracks and line-in audio, not ambient background loops.
Trigger doesn't fire Make sure you've exited the menu. Trigger is ignored while the menu is open. Also check the cooldown timer.
Trigger fires on menu exit This was fixed in firmware v1.2. Update your firmware.
No line-in sound Turn BG Audio OFF. Line-in only works when ambient audio is disabled. Also verify your source is line-level (not a passive mic).
Eyes upside down / swapped Menu › Eyes › Flip L / Flip R / Swap. No rewiring needed.
MicroSD card not detected Must be FAT32. Cards over 32GB are usually formatted exFAT by default — reformat as FAT32.
Mic doesn't work The input is line-level only. Passive mics need a preamp. See Section 8.
Settings not saving Long-press the encoder or select [Save & Exit]. Power cycling without saving discards changes.
Custom eyes not showing up MicroSD is scanned at boot. Reset or power-cycle the board after adding .eye files.

If all else fails, try turning it off and on again. It’s a cliché for a reason.

12. Specifications

FeatureDetails
ProcessorRP2040 dual-core ARM Cortex-M0+ @ 125 MHz
Eye Displays2× GC9A01 round LCD, 240×240 pixels, SPI
Eye Styles9 built-in + unlimited custom via MicroSD
Audio DACPCM5102A I2S, 16-bit stereo
Audio ADCES7243E I2S, for line-in passthrough
AmplifierPAM8406 stereo, 4Ω 3W per channel
Menu DisplaySSD1306 OLED, 128×64, I2C
User InputEC11 rotary encoder with push button
Jaw ServoStandard 50Hz hobby servo output, 5V
TriggerOpto-isolated, active-low, GND-to-IN
StorageMicroSD, FAT32, up to 32GB
Audio Format16-bit PCM WAV, 44.1kHz recommended
Mounting40mm × 40mm, M3 screws
Power InputUSB-C (5V) or barrel jack (12–24V DC)
Firmwarev1.2.0 (April 2026)