Servo-driven cat feeder with weekly schedule and NTP sync

Asked May 13, 2026 Modified May 25, 2026 Viewed 8 times
Servo-driven cat feeder with weekly schedule and NTP sync

Why I built it: my cat had a strong opinion that 5am is breakfast time. I have a strong opinion that it isn't. The feeder mediates.

Mechanical

  • Started from a $15 plastic cereal dispenser from a kitchen store.
  • Removed the manual crank and 3D-printed a coupling that fits over the dispenser shaft on one end and a continuous-rotation servo horn on the other.
  • Mounted the servo to the side of the dispenser with a printed bracket.
  • The whole assembly screws onto a wooden base so it doesn't tip over when the cat tries to 'help'.

Electronics

  • ESP32 DevKit V1 (Wi-Fi for NTP, deep sleep between meals)
  • MG996R continuous-rotation servo — high torque, can move stiff kibble
  • 5V/2A power supply (the servo can briefly pull 1.5A under stall)
  • A small OLED for status (optional but nice)

Why continuous-rotation: a standard servo only sweeps 180°. We need a complete revolution every meal, so it's either a CR servo or a small geared DC motor.

Schedule logic

1. ESP32 connects to Wi-Fi, syncs time with pool.ntp.org via configTime().
2. Computes seconds-until-next-meal (e.g. 7:30am and 6:00pm).
3. Goes into deep sleep using esp_sleep_enable_timer_wakeup().
4. On wake, runs the servo for the calibrated duration (mine = 1.4s, gives one full revolution = ~30g of kibble).
5. Re-computes and sleeps again.

Calibration: weigh 5 dispensing cycles, divide by 5, adjust servo run-time until you hit the desired grams-per-meal. Mine drifts by about ±2g/meal — fine for a cat.

Safety features

  • Maximum servo run-time hard-coded to 3s, so if something jams it can't drain the hopper.
  • A weekly self-test that runs the servo for 0.1s and verifies current draw — flags 'stuck' over MQTT if no current is seen.

Two meals a day, perfectly timed, no more 5am wake-ups. Cat is finally impressed (or at least resigned).