r/minilab • u/borkyborkus • 12h ago
My lab! Rackmate T1 with monitor - wake screen on presence, control pc with hand gestures, automatic fan and LEDs
Enable HLS to view with audio, or disable this notification
Initially posted to esp32 but had second thoughts. Through a few projects I've built up a small pile of Adafruit and Seeedstudio controllers/peripherals, and combined a bunch with this Rackmate project I wanted to show off. My main goal was to build an 'always on' Home Assistant dashboard, but I was concerned about screen burn and knew it would be too much of a headache to manually unlock this screen with a keyboard every time I come into the room.
ESP32 #1 - Adafruit QtPy ESP32-S2 (CircuitPython) - "qtpy"
- Mounted on SeeedStudio Grove expansion board (snapped to smaller size)
- Powers 5v Noctua 120mm PWM fan from 5v/gnd pins (fan draws 150mA, Adafruit says up to 500mA off the pin is ok)
- Adafruit EMC2101 fan controller (tach/fan to noctua at bottom of rack) - NOTE: didn't work without pullup (4.7K from 3v3 on emc2101 to tach)
- Adafruit VCNL4030 (prox, lux, color) - grove i2c to stemma i2c here, then stemma chained to emc/apds
- Adafruit APDS9960 (basic gestures)
- SeeedStudio mmWave sensor (modded grove cable just supplies 3v3/gnd, bounces presence thru HA/bt/mqtt)
ESP32 #2 - SeeedStudio ESP32-C3 (WLED) - "xiao2"
- Mounted to Seeed LED driver board (rated for 3A at 5V)
- Powered by 5V/3A port on Anker hub - USBC to 5V barrel
- Y-connector to 2 loops of 5V WS2812b ECO (BTF-Lighting 4x19" set - 120 LEDs total)
- WLED output capped at 2700mA
- Main turns on with my Hue remote, bottom animations driven by qtpy fan speed
QtPy is attached to a Beelink N95 with the usb passed to a Debian KDE VM called Rackhead, which has full iGPU/HDMI access. It checks the mqtt broker for presence on the mmwave sensor, and moves the 'virtual' mouse every 30s by 1px when presence=1. It checks mqtt for fan_speed/set, which is driven by an HA automation using the EMC2101's internal temp.
All sensors report to MQTT (mostly just informational at this point) and the APDS registers gestures as keystrokes - still figuring this out but got it set up with the arrow keys to start. Current plan is to do maximize/minimize window for up/down, cycle windows for left/right. I realize the mmWave setup is odd; I decided that the cost of running the HA LDE2410 integration and using a grove port was lower than figuring out how to wire/read/report the data from the tx/rx pins in circuitpython.
Pretty happy with how the Rackmate is coming together. The 2 Beelinks (N95 and i5-8279u) each have a brick/wart, but everything else is powered by an Anker 6-port 112w USB-C&A hub. I have a Netgear 8-port switch (using a 12V port w/ USB-C to 12V barrel), a Hue hub, a GLinet mango travel router, the LEDs, and another 4-port usb (the kind that connects to a pc with usb-a but has a +PD type C port), and still have an open A/C outlet and a couple USB-As available.
Here is the repo with the code and some pics. It was generated through back and forth with Claude, the Adafruit docs, and some Gemini. I was able to figure out how to test and print the sensors w/o LLM help, but putting those results into mqtt publish loops was a little more than I care to understand (and the stakes seem low enough here). Still crossing my fingers that the qtpy box doesn't burst open (possibly with flames) with how much is attached and crammed in there.
