
SlidersOfSociety PCB
OE1KHZ/SlidersOfSociety-PCB
A CANbus controlled closed loop motor fader module based on Microchip's PIC18F25K83

An interface that connects a classic 2-wire analog intercom handset line (Polish: domofon) to an ESP32-C3 SuperMini (HW-466B) running ESPHome, so the intercom can be used from Home Assistant.
Domofon is an open-source printed circuit board by pit3k, from the pit3k/domofon-esp32 repository on GitHub. It is a 2-layer board of 55.5 × 45.9 mm with 31 parts on 21 nets, routed with 128 tracks and 0 vias.
It is built around the LTV-814, BAT85 and AQY214EH, with the LM-NP-1001-B1L, MTJ-642BX2 and P6KE220CA among its other parts. Its parts include 12 resistors, 8 capacitors, 3 diodes, 2 crystals and 1 IC. It belongs with the ESP32 and RISC-V boards of this library.
An interface that connects a classic 2-wire analog intercom handset line (Polish: domofon) to an ESP32-C3 SuperMini (HW-466B) running ESPHome, so the intercom can be used from Home Assistant.
Status: design only — not yet tested on real hardware. Schematic, single-sided PCB, BOM and firmware are complete; the board has passed KiCad DRC, but nothing has been built or measured yet.

| Entity | Name | What it does |
|---|---|---|
binary_sensor | Domofon dzwonek | on while someone rings (50 ms on / 1.5 s off filter) |
switch | Domofon otwórz furtkę | sends the DTMF sequence; stays on while the tones play and turns itself off when they finish (does not change off-hook) |
text | Brama - sekwencja DTMF | digits to dial (default 1; 0-9 * # A-D, comma = pause) |
number | Brama - czas … | pause before, tone length, inter-digit gap, pause after (defaults 1000 / 200 / 80 / 1000 ms) |
switch | Domofon off-hook | manual off-hook / on-hook (always off after reboot; also forced on-hook by the time limit) |
number | Domofon - maks. czas off-hook | maximum off-hook time, any cause (default 60 s, range 10–3600 s) |
event | Domofon DTMF | fired for every decoded digit (0–9, *, #, A–D) |
text_sensor | Domofon DTMF ostatnia cyfra | last decoded digit |
text_sensor | Domofon DTMF sekwencja | digits concatenated, cleared after 3 s silence or on-hook |

├── README.md
├── docs/
│ ├── design-notes.md # English summary of the circuit
│ └── design-notes-pl.md # full design notes (Polish): netlist, pin numbers, rationale
├── hardware/
│ ├── schematic/
│ │ ├── schematic.py # source (schemdraw)
│ │ └── schematic.svg/.png # generated output
│ ├── pcb/
│ │ ├── domofon.kicad_pro/.kicad_pcb/.kicad_dru # KiCad 9 project (single-sided, THT)
│ │ ├── drc-report.txt # KiCad DRC: 0 violations, 0 unconnected
│ │ ├── README-pl.md # PCB notes (Polish)
│ │ ├── gerbers/ # Gerber X2 + Excellon (mm) — input for CNC
│ │ ├── previews/ # PNG renders
│ │ └── scripts/ # Python/KiCad generators, autorouting, DRC, export
│ ├── bom/
│ │ ├── bom.csv # full bill of materials
│ │ └── tme-order.csv # original TME order (history, pre rev. 5)
│ └── enclosure/ # 3D-printed wall box (CadQuery source, STL, 3MF, STEP, previews)
├── firmware/esphome/
│ ├── domofon.yaml
│ ├── secrets.yaml.example
│ ├── intercom-package.example.yaml # HA builder example (packages)
│ └── components/gerbers/domofon-F_Cu-jumpers_DO_NOT_MILL.gtl only models the wire jumper for DRC — do not mill it.| Placement | Bottom copper (mirrored, as milled) |
|---|---|
![]() | ![]() |
Requirements: Python 3, schemdraw + pillow; KiCad 9 (kicad-cli and the pcbnew Python module); rsvg-convert (librsvg) for previews; optionally Freerouting 2.x + Java for re-routing.
# Schematic -> hardware/schematic/schematic.svg + schematic.png
cd hardware/schematic
python3 -m venv .venv && .venv/bin/pip install schemdraw pillow
.venv/bin/python schematic.py
# PCB checks and outputs (run from anywhere)
hardware/pcb/scripts/drc.sh # DRC -> hardware/pcb/drc-report.txt
hardware/pcb/scripts/export_gerbers.sh # -> hardware/pcb/gerbers/
hardware/pcb/scripts/make_previews.sh # -> hardware/pcb/previews/
# Full re-generation of the board from footprints.py / netlist.py / placement.py (optional)
FREEROUTING_JAR=/path/to/freerouting.jar JAVA=java hardware/pcb/scripts/build_and_route.sh 30
# -> hardware/pcb/work/routed.kicad_pcb ; review, then copy to hardware/pcb/domofon.kicad_pcbAutorouting is not deterministic; the committed domofon.kicad_pcb is the reviewed result.
cd firmware/esphome
cp secrets.yaml.example secrets.yaml # fill in Wi-Fi credentials
esphome run domofon.yamlThe DTMF components are fetched from this repository (ref: ${git_ref}, default main) by external_components in domofon.yaml, so no extra files need to be copied.
Create a new device in the HA ESPHome builder and paste firmware/esphome/intercom-package.example.yaml. It pulls domofon.yaml as a package from main with refresh: 0s (re-fetched on every build). Add the secrets from secrets.yaml.example to the builder's Secrets. The example configures the device name, API encryption, OTA, Wi-Fi, fallback AP, and captive portal; these device-level settings are kept out of the reusable firmware package. To pin a version, set git_ref in substitutions to a commit SHA or tag; it selects both domofon.yaml and the DTMF components (default main). The HA URL defaults to http://homeassistant.local:8123; override ha_url in substitutions if needed.
Prompts are generated automatically during compilation by the dtmf_tone component: "wprowadź kod", "drzwi otwarte" and "kod nieprawidłowy" are rendered by Home Assistant's Piper TTS (tts_get_url API), and ringback is a synthesized 425 Hz tone (1 s on / 4 s off). Add to the builder's Secrets:
ha_token: "<long-lived access token>" # HA profile -> Security -> Long-lived access tokensResults are cached in the build directory, so rebuilds work even if HA is unreachable (the first build needs HA reachable). No WAV files are needed. Voice or language can be changed per clip with tts: {text, engine, language, voice}.
Each prompt is a switch ("Domofon głos: …"). Turning it on plays the clip and the switch turns itself off when playback finishes, so an automation can turn it on and wait for off instead of watching the diagnostic "Domofon audio aktywne" sensor. The same applies to "Domofon otwórz furtkę" (the DTMF sequence). These switches do not take the line off-hook and do not change the DTMF decoder, except the gate switch, which pauses the decoder for the duration of its own tones. "Domofon sygnał oczekiwania" is the exception: it plays ringback in a loop and stays on until something turns it off (a manual turn-off, another clip starting, or hangup — including the off-hook time limit). In YAML: dtmf_tone.play_wav: {id: dtmf_gen, name: enter_code, loop: false}; stop with dtmf_tone.stop.
3D-printed flat wall box: 93 × 68 × 26 mm, a base glued to the wall plus a lid held by 4 countersunk M3×10 screws in brass M3 Ø4×4 heat-set inserts. The PCB is flipped (components toward the wall) and shifted +25 mm to the right, leaving a 25.3 mm left chamber.
hardware/enclosure/. The Polish print and assembly guide is in its README.Machine: PrintNC + Flexi-HAL (grblHAL), sender ioSender.
Ready G-code lives in cnc/gcode/.
Operator guide (PL): cnc/OPERATOR_GUIDE.md.
Overview / regenerate: cnc/README.md.
Do not mill domofon-F_Cu-jumpers_DO_NOT_MILL.gtl — solder jumper JP1 as a wire on the component side.
Vendor datasheets are not included in the repo; see e.g. Adam Tech MTJ-642BX2, Bourns LM-NP-1001-B1L, Liteon LTV-814, Panasonic AQY214EH, Diotec P6KE220CA, WIMA MKS2 1 µF/100 V.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 220n | domofon:CFILM_P5.08 | C2, C3, C6 |
| 3 | 4k7 | domofon:R0207_P7.62 | R1, R10, R11 |
| 2 | 330R | domofon:R0207_P7.62 | R8a, R8b |
| 2 | BAT85 | domofon:DO34_P5.08 | D4, D5 |
| 1 | 100R | domofon:R0207_P10.16 | R6b |
| 1 | 100R | domofon:R0207_P7.62 | R6a |
| 1 | 10k | domofon:R0207_P7.62 | R3 |
| 1 | 10u/16V NP | domofon:CP_D5_P2.0 | C4 |
| 1 | 10u/25V | domofon:CP_D5_P2.0 | C1 |
| 1 | 1u/100V | domofon:CFILM_P5.08 | C5 |
| 1 | 2k2 | domofon:R0207_P7.62 | R9 |
| 1 | 330 | domofon:R0207_P7.62 | R4 |
| 1 | 330 1W | domofon:R0414_P15.24 | R5 |
| 1 | 33n | domofon:CFILM_P5.08 | C7 |
| 1 | 470n/250V | domofon:CFILM_P7.62 | C8 |
| 1 | 4k7 CA9V | domofon:CA9V | R7 |
| 1 | AQY214EH | domofon:DIP4 | K1 |
| 1 | ESP32-C3 SuperMini HW-466B | domofon:ESP | ESP |
| 1 | LM-NP-1001-B1L | domofon:T1 | T1 |
| 1 | LTV-814 | domofon:DIP4 | U1 |
| 1 | MTJ-642BX2 | domofon:MTJ642 | J1 |
| 1 | P6KE220CA | domofon:DO15_P5.08_V | D2 |
| 1 | XY308-2P 5V/GND | domofon:XY308_2P | X2 |
| 1 | XY308-2P LINIA | domofon:XY308_2P | X1 |
| 1 | zworka drut | domofon:WIRE_P10.16 | JP1 |
It measures 55.5 × 45.9 mm and has 2 copper layers, 1.6 mm thick.
31 parts, built around the LTV-814, BAT85, AQY214EH and LM-NP-1001-B1L. 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 pit3k/domofon-esp32 repository on GitHub, at the commit this page was made from: the board is hardware/pcb/domofon.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask pit3k before reusing the design.

OE1KHZ/SlidersOfSociety-PCB
A CANbus controlled closed loop motor fader module based on Microchip's PIC18F25K83


schmidtmt/openmotorbridge
The comprehensive technical specification is split into 18 logically organized chapters:

Miceuz/triac-bloc
An universal power block based on triac. In essence this is a solid state relay with some bells and whistles

MayaPosch/DebounceHat
Fully isolated, input debounce Hat for Raspberry Pi, for up to 6 switches, relays and powered devices

Domochip/WTeleInfo
Un D1 Mini et quelques composants pour envoyer votre Téléinfo (Compteur EDF) sur votre Domotique

tdouez/TeleinfoMySensors
Interface Téléinfo pour compteur Linky avec MySensors

synfinatic/GoProControl
GoPro WiFi controller board using an ESP8266 allowing easy integration with other circuits