
BananaSchplit
pms67/BananaSchplit
Single rail DC (<12V) to split rail DC supply (+/-12V and +5V).

This project implements a dual-channel Direct Digital Synthesis (DDS) signal generator on the ESP32 platform. It features:
PCB Interface is an open-source printed circuit board by Domfunkle, from the Domfunkle/NHP_Synth repository on GitHub. It is a 4-layer board of 42.8 × 67.5 mm with 80 parts on 77 nets, routed with 426 tracks and 125 vias.
It is built around the LM324DT, TPS65131RGER and ZX-PM2.54-1-20PY, with the CESD3V3D3, MBR120LSF and AO3401A among its other parts. Its parts include 30 resistors, 24 capacitors, 7 diodes, 5 ICs and 2 inductors. It belongs with the interfaces and adapters boards of this library.
This project implements a dual-channel Direct Digital Synthesis (DDS) signal generator on the ESP32 platform. It features:
wf[a|b]<freq>: Set channel A or B frequency (Hz)wp[a|b]<deg>: Set channel A or B phase (degrees, -180 to +180)wa[a|b]<ampl>: Set channel A or B amplitude (0-100)wh[a|b]<order>,<pct>[,<phase>]: Mix odd harmonic to channel A or B (e.g. wha3,10 for 10% 3rd harmonic, or wha7,20,-90 for 20% 7th harmonic at -90° phase)whcl[a|b]: Clear all harmonics for channel A or Bhelp: Show help messageNHP_Synth/
├── firmware/ # ESP32 firmware (ESP-IDF project)
│ ├── main/ # Main application source
│ ├── .devcontainer/ # ESP-IDF development container
│ └── .vscode/ # ESP32-specific VS Code settings
├── host/ # Python host control interface
│ ├── synth_control/ # Python control library
│ ├── examples/ # Usage examples
│ ├── .devcontainer/ # Python development container
│ └── .vscode/ # Python-specific VS Code settings
├── tools/ # Shared utilities and scripts
└── .vscode/ # Root workspace configurationNavigate to the firmware directory and use ESP-IDF:
cd firmware
idf.py build
idf.py -p /dev/ttyUSB0 flashOr use the convenient script for multiple devices:
./tools/flash_multiple.shA Python interface is provided for programmatic control:
cd host
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Run examples
python examples/basic_control.py
python examples/harmonic_sweep.pyConnect to the ESP32 UART (default 115200 baud) and type commands as described above. Type help for a list of commands.
# Generate a square wave on Channel A at 50Hz
printf "wha3,33\r" > /dev/ttyUSB1
printf "wha5,20\r" > /dev/ttyUSB1
printf "wha7,14\r" > /dev/ttyUSB1
printf "wha9,11\r" > /dev/ttyUSB1
printf "wha11,9\r" > /dev/ttyUSB1
printf "wha13,8\r" > /dev/ttyUSB1
printf "wha15,7\r" > /dev/ttyUSB1
printf "wha17,6\r" > /dev/ttyUSB1# Clear all harmonics for Channel A and B
printf "whcla\r" > /dev/ttyUSB1
printf "whclb\r" > /dev/ttyUSB1# Rolling harmonic phase for Channel A and B
ph=-180
while true; do
printf "wha5,20,%d\n" "$ph" > /dev/ttyUSB1
invph=$((ph * -1))
printf "whb3,10,%d\n" "$invph" > /dev/ttyUSB1
sleep 0.03
ph=$((ph + 1))
if [ "$ph" -gt 180 ]; then
ph=-180
fi
doneOpen the multi-root workspace for unified development:
code .vscode/NHP_Synth.code-workspaceEach component has its own development container:
tools/flash_multiple.sh - Flash firmware to multiple devicestools/uart_test.py - Test UART communicationfirmware/main/main.c: Main ESP32 application sourcefirmware/build/: Build artifacts (ignored by git)host/synth_control/: Python control libraryhost/examples/: Python usage examplestools/: Shared utilities and scripts.gitignore: Excludes build and config files from version controlMIT License (or specify your license here)
| Qty | Value | Footprint | References |
|---|---|---|---|
| 7 | 10k | Resistor_SMD:R_0603_1608Metric | R1, R2, R3, R4, R11, R12, R22 |
| 6 | 22u/16V | Capacitor_SMD:C_0805_2012Metric | C11, C13, C20, C21, C22, C24 |
| 5 | 100n | Capacitor_SMD:C_0603_1608Metric | C1, C2, C5, C6, C12 |
| 5 | 47k | Resistor_SMD:R_0603_1608Metric | R5, R6, R16, R24, R29 |
| 4 | 100k | Resistor_SMD:R_0603_1608Metric | R7, R8, R9, R10 |
| 4 | 330 | Resistor_SMD:R_0603_1608Metric | R17, R18, R19, R20 |
| 2 | 100k | easyeda2kicad:RES-ADJ-SMD_TC33X-2-104E | R26, R27 |
| 2 | 100k | easyeda2kicad:RES-ADJ-TH_3296P | RV1, RV2 |
| 2 | 10u | Capacitor_SMD:C_0603_1608Metric | C3, C4 |
| 2 | 15p | Capacitor_SMD:C_0603_1608Metric | C18, C23 |
| 2 | 1n | Capacitor_SMD:C_0603_1608Metric | C7, C8 |
| 2 | 22k | Resistor_SMD:R_0603_1608Metric | R13, R14 |
| 2 | 22p | Capacitor_SMD:C_0603_1608Metric | C14, C15 |
| 2 | 470p | Capacitor_SMD:C_0603_1608Metric | C9, C10 |
| 2 | 4k7 | Resistor_SMD:R_0603_1608Metric | R23, R30 |
| 2 | 4u7 | easyeda2kicad:IND-SMD_L5.4-W5.2_FXL0530 | L1, L2 |
| 2 | CESD3V3D3 | easyeda2kicad:SOD-323_L1.8-W1.3-LS2.5-RD | E1, E2 |
| 2 | LM324DT | easyeda2kicad:SOIC-14_L8.7-W3.9-P1.27-LS6.0-BL | U3, U4 |
| 2 | LOGO | LOGO | G***, G*** |
| 2 | MBR120LSF | easyeda2kicad:SOD-123_L2.8-W1.8-LS3.7-RD | D1, D5 |
| 2 | RED | easyeda2kicad:LED0805-R-RD | LED2, LED3 |
| 2 | SMF9.0CA_C19077504 | easyeda2kicad:SOD-123FL_L2.7-W1.8-LS3.8-BI | D3, D4 |
| 2 | ZX-PM2.54-1-20PY | easyeda2kicad:HDR-TH_20P-P2.54-V-F | U10, U11 |
| 1 | 100 | Resistor_SMD:R_0603_1608Metric | R15 |
| 1 | 10n | Capacitor_SMD:C_0603_1608Metric | C16 |
| 1 | 220n | Capacitor_SMD:C_0603_1608Metric | C19 |
| 1 | 4n7 | Capacitor_SMD:C_0603_1608Metric | C17 |
| 1 | 560k | Resistor_SMD:R_0603_1608Metric | R21 |
| 1 | 59k | Resistor_SMD:R_0603_1608Metric | R25 |
| 1 | 750k | Resistor_SMD:R_0603_1608Metric | R28 |
| 1 | AO3401A | easyeda2kicad:SOT-23_L2.9-W1.3-P1.90-LS2.4-BR | Q1 |
| 1 | GREEN | easyeda2kicad:LED0805-R-RD | LED1 |
| 1 | TPS65131RGER | easyeda2kicad:QFN-24_L4.0-W4.0-P0.50-TL-EP2.6 | U9 |
| 1 | WJ15EDGRC-3.81-6P | easyeda2kicad:CONN-TH_WJ15EDGRC-3.81-6P | CN1 |
The 76 most common of 80 parts.
It measures 42.8 × 67.5 mm and has 4 copper layers, 1.36 mm thick.
80 parts, built around the LM324DT, TPS65131RGER, ZX-PM2.54-1-20PY and CESD3V3D3. 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 Domfunkle/NHP_Synth repository on GitHub, at the commit this page was made from: the board is PCB_Interface/PCB_Interface.kicad_pcb and its schematic PCB_Interface/PCB_Interface.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 Domfunkle before reusing the design.

pms67/BananaSchplit
Single rail DC (<12V) to split rail DC supply (+/-12V and +5V).

gallicchio/AMOD-and-RFMOD
The tutorial's 2x12 adapter (/mudd/133electronics/icepi-zero-dac-adc/adapterboard/) with a 2 x 6 right-angle Pmod socket on a 15 mm extension of its right-hand end, so an Icepi Zero can drive AMOD-A's and RF-MOD's Pmod…

kingMordred/single_to_split_rail_dc_power_supply
PCB design using KiCad 10.0 for a single to split rail dc power supply, converting an input of +6V ~ +12V to a +5V rail or a +12V/-12V rail.

karistonf/template_kicad
Some templates that are very useful for developing PCBs in KiCad

cjheath/jlcbasic
JLC Basic parts library for Kicad fetched and converted from EasyEDA



apcountryman/pcb-main-nautilus-atmega4809
A Microchip ATmega4809 based mainboard PCB.