ESP32 automated reptile feeder and 3-zone climate monitor controlling up to 16 servo-driven feeding doors.
Status: in progress
What it does
- Controls up to 16 independent servo motors via PCA9685 I2C driver to open and close feeder hatch doors
- Reads temperature and humidity across 3 enclosure zones using DHT22 sensors every 30 seconds
- Exposes Web UI on port 80 and streams real-time MQTT telemetry to Home Assistant
- Supports Over-The-Air (OTA) firmware updates for hands-off maintenance
Bill of Materials
| Part | Quantity | Purpose |
|---|---|---|
| ESP32 Development Board | 1 | Microcontroller running Wi-Fi web server, MQTT, and OTA |
| Adafruit PCA9685 PWM Driver | 1 | 16-Channel 12-bit PWM I2C servo controller board |
| TowerPro Servos (SG90/MG996R) | Up to 16 | Actuators for opening/closing reptile feeding hatch doors |
| DHT22 Temperature/Humidity Sensors | 3 | Multi-zone climate sensors on GPIO 6, 7, and 18 |
| 5V 5A External DC Power Supply | 1 | High-current power source for servo motor rails |
How it works
Firmware uses I2C (SDA GPIO 10, SCL GPIO 11) to offload PWM servo timing to the PCA9685 chip, avoiding ESP32 interrupt jitter. Sensor readings from 3 DHT22 pins are published to Home Assistant via MQTT every 30 seconds.
What broke
- Initial simultaneous movement of multiple SG90 servos caused voltage sags on the 5V rail, causing the ESP32 to brown out until a dedicated 5V 5A external power supply was separated from the ESP32 logic power.
Links
- Gitea Repository: sam/reptile_feeder
Description
Languages
C++
100%
