30 lines
1.7 KiB
Markdown
30 lines
1.7 KiB
Markdown
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](https://gitea.lab.audasmedia.com.au/sam/reptile_feeder)
|