Skip to the content
4 layers56 × 54 mmAutofeeder, the printed circuit board in 3D

ESP32-C6 based chicken feed dispenser controller with Matter, CAN bus, and 18650 battery

Size
56 × 54 mm
Copper layers
4
Thickness
1.6 mm
Parts
44
Nets
54
Pads
181
Tracks, vias
436, 277
Pours
4
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
2 Jun 2026
Updated
17 Jul 2026

Overview

Autofeeder is an open-source printed circuit board by wabolabs, from the wabolabs/autofeedermod repository on GitHub, published under the CERN-OHL-W-2.0 licence. It is a 4-layer board of 56 × 54 mm with 44 parts on 54 nets, routed with 436 tracks and 277 vias.

It is built around the SN65HVD230D, TPS63031DSKR and DW01A, with the FS8205A, TP4056 and DS3231S# among its other parts. Its parts include 7 resistors, 6 capacitors, 6 ICs, 6 switches and 3 connectors. It belongs with the interfaces and adapters boards and the ESP32 and RISC-V boards of this library.

Main components

6

README

README.md

Autofeeder Controller

Drop-in PCB replacement for a timed chicken feed dispenser. ESP32-C6 based with Matter/ESPHome, local standalone operation, motor control, CAN bus, RTC timekeeping, and optional GPS sync.

Features

  • MCU: ESP32-C6-Zero (Matter, WiFi 6, Thread, BLE 5) — socketed via 2×9 2.54mm headers + 7 pogo pins
  • Display: SSD1306 128×64 SPI OLED with full menu system (status, schedules, settings, GPS, manual feed)
  • Motor: DRV8871 H-bridge for 4VDC auger motor
  • Power: 18650 Li-ion with TP4056 charger + DW01A/FS8205A battery protection + TPS63031 buck-boost to 3.3V
  • RTC: DS3231 module (I2C) with CR2032 backup for offline timekeeping
  • GPS: NEO-6M/8M module header (UART) for offline RTC time sync
  • CAN Bus: SN65HVD230 via USB-C SBU pins
  • USB-C: 5V charging + CAN sideband on SBU pins
  • Buttons: 6 tactile switches (GP0–GP5) for menu navigation
  • Standalone operation: Schedules stored in NVS, RTC keeps time without network, full local control via screen and buttons

Project Structure

text
hardware/kicad/          — KiCad design files (generated)
  ├── autofeeder.kicad_sch      — Generated schematic
  ├── autofeeder.kicad_pcb      — Generated PCB (autorouted + verified)
  ├── autofeeder.kicad_pro      — KiCad project settings
  ├── sheet_specs/autofeeder.py — Python schematic generator
  └── autofeeder_pcb.py         — Python PCB pipeline (place, route, pour, verify, export)
hardware/symbols/         — Custom KiCad symbol library
hardware/footprints/      — Custom KiCad footprints (ESP32-C6-Zero socket, OLED module)
firmware/esphome/         — ESPHome configuration
docs/                     — BOM, pinout, mechanical specs
fabrication/              — Gerbers, drill, BOM, CPL (for JLCPCB)
tools/sch_gen/            — KiCad S-expression generation library

Pin Assignments

See docs/pinout.md for full GPIO table.

Key assignments:

  • GP0–GP5: Buttons (individual GPIOs)
  • GPIO19/20: Motor control (TX/RX repurposed)
  • GP14/15/18/12: Display SPI (DC on GP12 via pogo pin)
  • GP21/22: CAN bus
  • GP6: Battery monitor ADC
  • GP13/23: I2C for DS3231 RTC
  • GP7/8: UART for GPS module

Standalone Operation

The controller runs independently of Home Assistant/ESPHome:

  • RTC: DS3231 keeps time with coin cell backup during power loss
  • Schedules: Up to 4 daily feeding times stored in ESP32 NVS
  • Display: Full menu system — status, manual feed, schedule list, time set, GPS status, settings
  • Buttons: POWER (back), TIMER (cycle), MANUAL (feed), SETTINGS (confirm/toggle), UP/DOWN (adjust)
  • GPS: Optional module for offline time synchronization
  • Matter: When network is available, schedules can also be managed via Home Assistant

Build

Schematic

bash
PYTHONPATH=tools python3 hardware/kicad/sheet_specs/autofeeder.py

PCB

bash
# Requires KiCad 9.0+ and Freerouting on PATH
PYTHONPATH=tools python3 hardware/kicad/autofeeder_pcb.py

Firmware

bash
cd firmware/esphome
esphome run autofeeder.yaml

BOM

See docs/bom.md for full bill of materials.

Required additions (not on main board)

  • DS3231 RTC module (ZS-042) with CR2032 cell
  • NEO-6M/7M/8M GPS module (optional)
  • 7× pogo pins 0.9mm × 11mm (for Zero bottom-edge pads)

License

CERN Open Hardware Licence Version 2 - Weakly Reciprocal (CERN-OHL-W-2.0)

Parts

44
QtyValueFootprintReferences
6Alps SKRPADE010Button_Switch_SMD:SW_Push_1P1T_NO_CK_KMR2SW1_POWER1, SW2_TIMER1, SW3_MANUAL1, SW4_SETTINGS1, SW5_UP1, SW6_DOWN1
4MountingHole_2.1mm_NPTHMountingHole_2.1mm_NPTHH1, H2, H3, H4
3100nFCapacitor_SMD:C_0603_1608MetricC1, C3, C6
210uFCapacitor_SMD:C_0805_2012MetricC2, C4
21kResistor_SMD:R_0603_1608MetricR6, R10
247kResistor_SMD:R_0603_1608MetricR3, R4
25.1kResistor_SMD:R_0603_1608MetricR_CC1, R_CC2
11.2kResistor_SMD:R_0603_1608MetricR2_C1
110kResistor_SMD:R_0603_1608MetricR13
1120RResistor_SMD:R_0603_1608MetricR5
11N5817Diode_THT:D_DO-41_SOD81_P10.16mm_HorizontalD1
122uFCapacitor_SMD:C_0805_2012MetricC5
14.7uHInductor_SMD:L_0805_2012MetricL1
1500mAFuse:Fuse_1812_4532MetricF1
1BATTERYConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ1
1DBGConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ4
1DS3231Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ_RTC1
1DW01APackage_TO_SOT_SMD:SOT-23-6_HandsolderingU3
1ESP32-C6-Zeroautofeeder:ESP32_C6_ZeroU1
1FS8205APackage_TO_SOT_SMD:SOT-23-6_HandsolderingU8
1GPSConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ_GPS1
1MOTOR_CTRLConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ_MOTOR_CTRL1
1MOTOR_PWRConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ_MOTOR_PWR1
1OLED_SSD1306autofeeder:OLED_1.3in_SSD1306_SPIDISP1
1REDLED_SMD:LED_0603_1608MetricLED_CHG1
1SN65HVD230Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU6
1TP4056Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU2
1TPS63031DSKRPackage_SON:WSON-10-1EP_2.5x2.5mm_P0.5mm_EP1.2x2mmU4
1USB-CConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J3
1Wabo_Labs_LogoWabo_Labs_LogoWABO_LOGO1

Similar boards

  • 2 layers35 × 100 mmWalkieTalkie, the printed circuit board in 3D

    WalkieTalkie

    GuzziFlipFlops/ESP32-Walkie-Talkie

    An open source ESPNOW based walkie talkie with a 600 meter tested distance, with an OLED and multiple buttons to interact with

    66 parts7MIT
  • 2 layers192.4 × 50 mmOmote, the printed circuit board in 3D

    Omote

    OMOTE-Community/OMOTE-Hardware

    Open Source Remote - Hardware

    187 parts157GPL-3.0
  • 2 layers52.5 × 28 mmKitchen timer, the printed circuit board in 3D

    Kitchen timer

    hggh/kitchen-timer

    kitchen timer

    35 parts16GPL-3.0
  • 2 layers100 × 90 mmAudMix, the printed circuit board in 3D

    AudMix

    I-AM-ENGINEER/AudMX

    Alternative for Deej ( https://github.com/omriharel/deej ) with more features

    85 parts12
  • 4 layers53 × 33 mmLiPo BuckBoost Charger, the printed circuit board in 3D

    LiPo BuckBoost Charger

    potpurri/LiPo_Charger_TP4056_BuckBoost_TPS63020

    This PCB is designed to safely charge a lithium-ion cell and provide a selectable 3.3V or 5V output. It's equipped with components that ensure safe charging and protection for the battery and supports flexible output…

    63 parts9Apache-2.0
  • 2 layers96.2 × 62.4 mmHearingAid ESP, the printed circuit board in 3D

    HearingAid ESP

    AveryLion03/HearingAid

    Plan II Thesis - Avery Atchley

    108 parts3
  • 2 layers30 × 100 mmMoskill, the printed circuit board in 3D

    Moskill

    telagod/moskill

    MosKill - Smart Mosquito Swatter with BLE, Kill Counting & Statistics | ESP32-C3 + KiCad PCB + UniApp

    95 parts2
  • 4 layers76.1 × 25.4 mmCamplight, the printed circuit board in 3D

    Camplight

    codingkatty/camplight

    neopixel thing

    36 parts1MIT

Questions

How big is the Autofeeder PCB?

It measures 56 × 54 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Autofeeder use?

44 parts, built around the SN65HVD230D, TPS63031DSKR, DW01A and FS8205A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Autofeeder KiCad files?

From the wabolabs/autofeedermod repository on GitHub, at the commit this page was made from: the board is hardware/kicad/autofeeder.kicad_pcb and its schematic hardware/kicad/autofeeder.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Autofeeder design in my own project?

Its repository publishes it under the CERN-OHL-W-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).