
Smart Plant
JGAguado/Smart_Plant
The Smart Plant is a board that can be plugged directly on the soil, close to the plant, that allows the measurement of the environment (soil moisture, environment temperature & illuminance), and presents the…

Project on esp32 to automate cat feeding
CatFeeder is an open-source printed circuit board by 12romis, from the 12romis/CatFeeder repository on GitHub. It is a 2-layer board with 11 parts on 15 nets.
It is built around the TP4056. Its parts include 3 ICs, 2 capacitors, 1 resistor, 1 diode and 1 switch. It belongs with the ESP32 and RISC-V boards of this library.
Automatic dry food dispenser. An ESP32-C3 SuperMini drives a 28BYJ-48 stepper motor through a ULN2003 module, turning a 3D-printed auger screw that dispenses food pellets. Feeding is triggered by a time schedule or by a physical button press. The device runs from a single 18650 cell and sleeps between events.
| Ref | Component | Notes |
|---|---|---|
| U2 | ESP32-C3 SuperMini | MCU + BLE 5.0 |
| U1 | TP4056 module | 18650 charging + protection |
| U3 | AP3602A boost module | 5 V rail for motor |
| M1 | ULN2003 driver module | stepper driver |
| SM1 | 28BYJ-48 stepper | auger drive |
| BT1 | 18650 Li-Ion cell | main power source |
| SW1 | Momentary push button | manual feed / wake |
| D1 | LED | status indicator |
| R1 | 220 Ω | LED current limit |
| C1 | 100 nF | power decoupling |
| C2 | 1000 µF | motor current buffer |
See schematic in schema/KiCad/cat_feeder.pdf
or open the KiCad project at schema/KiCad/CatFeeder.kicad_sch.

Pin map (ESP32-C3 SuperMini):
| GPIO | Connects to | Direction |
|---|---|---|
| 2 | ULN2003 IN1 | OUT |
| 3 | ULN2003 IN2 | OUT |
| 4 | ULN2003 IN3 | OUT |
| 5 | ULN2003 IN4 | OUT |
| 8 | LED via 220 Ω to GND | OUT |
| 9 | Button to GND (INPUT_PULLUP) | IN / wake |
| 10 | AP3602A boost EN | OUT |
Power path: 18650 → TP4056 → ESP32-C3 VIN (always on)
and 18650 → TP4056 → AP3602A VIN → 5 V → ULN2003 + motor (switched via GPIO 10).
/dev/ttyACM0 on Linux)CatFeeder/ folder in VS Code (it is the PlatformIO project root).c3 — ESP32-C3 SuperMini (production target)s3 — ESP32-S3 DevKitC-1 (breadboard test; same GPIO numbers)pio run -e c3 --target uploadpio device monitor -e c3Flash mode on C3 SuperMini: if the board doesn't enter download mode automatically, hold BOOT (GPIO 9) while pressing RESET, then release RESET.
All configuration is done by typing commands in the PlatformIO Serial Monitor
(line ending: \n or \r\n).
The device has no RTC chip. On every cold boot (power-on after battery removed or discharged) it connects to Wi-Fi, fetches UTC time from NTP, then immediately disconnects. Wi-Fi is never used after deep-sleep wakes — only on cold boot.
WIFI_SSID MyNetwork
WIFI_PASS mypasswordCredentials are saved to flash and never need to be entered again. If Wi-Fi is unavailable, the device falls back to manual time entry:
SET_TIME 1750420800Get the current Unix epoch in your terminal:
date +%sTimes are in UTC. Up to 8 entries, space-separated.
SCHED 07:00 18:30The schedule is saved to flash (NVS) and survives power-off.
Between scheduled feeds the device is in deep sleep. It wakes automatically at each scheduled time, runs the motor, then sleeps until the next entry.
Scheduled feed limits (config.h):
| Limit | Default | Description |
|---|---|---|
MAX_PORTIONS_PER_DAY | 4 | Max scheduled feeds per day; extras are skipped |
MIN_INTERVAL_SEC | 1800 s | Min gap between scheduled feeds (30 min) |
These limits apply only to the schedule. Button press and FEED serial command
are always allowed regardless of how recently the motor ran.
Portion size is defined in stepper steps, not time. Calibrate by weighing:
CAL 512 ← run motor 512 steps; weigh the dispensed food
CAL 768 ← try a different value
SAVE ← commit the chosen step count to flashRepeat CAL until the dispensed amount matches the desired portion weight.
SAVE must be sent explicitly — until then the new value is not persisted.
STATUS ← show time, steps, portionsToday, schedule with next feed countdown
FEED ← manual feed (no limits)
RESET_DAY ← zero portionsToday and lastFeedEpoch (for testing)| Command | Description |
|---|---|
WIFI_SSID <ssid> | Save Wi-Fi network name to flash |
WIFI_PASS <pass> | Save Wi-Fi password to flash |
WIFI_SYNC | Connect and sync time via NTP now |
SET_TIME <epoch> | Set wall clock manually (Unix seconds UTC) |
SCHED HH:MM [HH:MM ...] | Set feeding schedule (UTC, up to 8 entries) |
CAL <steps> | Run motor N steps without counting as a feed |
SAVE | Save the last CAL step count to flash |
FEED | Dispense one portion (no limits) |
STATUS | Print current device state incl. schedule and Wi-Fi SSID |
RESET_DAY | Zero portionsToday and lastFeedEpoch |
| Press | Action |
|---|---|
| Short press | Dispense one portion |
| Double click (gap < 300 ms) | Dispense two portions |
| Long press ≥ 2 s | Enter deep sleep immediately without feeding |
| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | 1000uF | Capacitor_THT:CP_Axial_L11.0mm_D8.0mm_P15.00mm_Horizontal | C2 |
| 1 | 100nF | Capacitor_THT:CP_Radial_D4.0mm_P1.50mm | C1 |
| 1 | 18650 3.7V | Battery:BatteryClip_Keystone_54_D16-19mm | BT1 |
| 1 | 220 | Resistor_SMD:R_0201_0603Metric | R1 |
| 1 | 28BYJ-48 | Resistor_SMD:R_0201_0603Metric | SM1 |
| 1 | AP3602A Boost 5V | RF_Converter:Anaren_0805_2012Metric-6 | U3 |
| 1 | Button (wake) | Button_Switch_SMD:Nidec_Copal_CAS-120A | SW1 |
| 1 | ESP32-C3 SuperMini | Module:Arduino_Nano | U2 |
| 1 | LED | LED_THT:LED_BL-FL7680RGB | D1 |
| 1 | TP4056 | Varistor:RV_Disc_D7mm_W3.4mm_P5mm | U1 |
| 1 | ULN2003 Driver Module | Motors:Vybronics_VZ30C1T8219732L | M1 |
11 parts, built around the TP4056. 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.
From the 12romis/CatFeeder repository on GitHub, at the commit this page was made from: the board is schema/KiCad/CatFeeder.kicad_pcb and its schematic schema/KiCad/CatFeeder.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask 12romis before reusing the design.

JGAguado/Smart_Plant
The Smart Plant is a board that can be plugged directly on the soil, close to the plant, that allows the measurement of the environment (soil moisture, environment temperature & illuminance), and presents the…


hhuysqt/esp32s3-keyboard
USB/BLE keyboard driver based on ESP32S3-WROOM-1


jerry20091103/Teensy_Grovebox
A portable synth and music multi-tool made with Teensy 4.1

