ESP32 automated reptile feeder and 3-zone climate monitor controlling up to 16 servo-driven feeding doors. ![Adafruit PCA9685 16-channel PWM servo driver board and DHT22 climate sensor](docs/images/hero.png) **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](https://gitea.lab.audasmedia.com.au/sam/reptile_feeder)