A heavily modified and optimized version of the automatic pet feeder, designed to completely eliminate feed jamming issues using mechanical adjustments and advanced ESPHome code.
Project remixed from szuchid's original design: Thingiverse Link
Feel free to make any modifications to the project! =)
- Aggressive Anti-Jam Logic: The ESP32-C3 runs a custom ESPHome script that applies micro-vibrations (rapid back-and-forth movements) to break the kibble structure before dispensing.
- Modified Auger: The STL provided in this repository has the auger X/Y scale reduced to prevent pellets from being wedged between the blade and the housing.
- Smart Home Integration: Fully manageable via Home Assistant (ESPHome).
- Musical Feedback: Plays Beethoven's Für Elise via a passive buzzer when the food is successfully dispensed.
- 1x ESP32-C3 SuperMini (or similar)
- 1x 28BYJ-48 Stepper Motor
- 1x Stepper Motor Driver (ULN2003)
- 1x Passive Buzzer
- 6x Dupont Jumpers (Male to Female)
- 1x Breadboard (170-point)
- 1x USB-C Cable
- 1x 5V/2A Wall Charger (e.g., Samsung fast charger)
Software required: Home Assistant with ESPHome Add-on installed.
For the best mechanism flow, it is highly recommended to print the auger in PETG.
PETG has a lower friction coefficient than PLA, allowing the kibble to slide smoothly and preventing the plastic from cracking under the motor's torque.
Use brim in all parts.
- Attach the ESP32-C3 SuperMini to the Breadboard.
- Plug the 28BYJ-48 motor into the ULN2003 driver.
- Follow the wiring table below to connect the components using Dupont jumpers:
| ULN2003 Driver | ESP32-C3 SuperMini |
|---|---|
| IN1 | GPIO 0 |
| IN2 | GPIO 1 |
| IN3 | GPIO 2 |
| IN4 | GPIO 3 |
| VCC (+) | 5V |
| GND (-) | GND |
⚠️ WARNING: Make sure you are connecting the positive pin of the ULN2003 driver to the 5V input of the ESP32 (not the 3.3V) to ensure the motor has enough torque and to avoid power drops.
| Passive Buzzer | ESP32-C3 SuperMini |
|---|---|
| Positive Pin (+) | GPIO 21 |
| Negative Pin (-) | GND |
- Connect the ESP32-C3 to your computer.
- Open ESPHome via Home Assistant.
- Create a new device and flash the provided
esp32-c3.yamlcode. - Add the device to your Home Assistant dashboard.
Once your feeder is integrated into Home Assistant, setting up a daily feeding schedule is straightforward using the built-in UI. You don't need to write any YAML for this part:
- In your Home Assistant sidebar, go to Settings > Automations & Scenes > Automations.
- Click on the + Create Automation button at the bottom right.
- Set the Trigger:
- Click on Add Trigger and select Time.
- Set the exact time you want the food to be dispensed (e.g.,
07:00:00).
💡 Tip: You can add multiple "Time" triggers in this exact same automation if you want to feed your pet at different times of the day (e.g., breakfast, lunch, and dinner).
- Set the Action:
- Click on Add Action and search for Button: Press.
- Under "Entities", select the button created by your ESPHome device (e.g.,
Alimentar Pet (1 Porção)).
- Click Save in the bottom right corner and give your automation a name (like "Cat's Breakfast").
That's it! Home Assistant will now automatically "press" the dispense button at the scheduled times every single day.