A while back I cobbled together a custom control board around the hifiakademie PreAmp, which at the time was available as a DIY PCB option. Everything was built into the requisite modushop/hifi2000 case but I lacked the tooling/know-how to complete the plans for the front panel. The actual hifi functionality (switching relays and the PGA2311 volume control) did actually work though.
Fast-forward and I've also acquired the CDPro2LF+SRC4392+DSP+DAC by the same manufacturer (as well as some DSPs and additional poweramps). While the touchscreen that it comes with is great and the project isn't as DIY-friendly, I still have the milled front panel and VFD so it seemed like a "good idea" to build a new controller around that.
Since I had a bunch of spare Atmega328p lying around that's what it ended up using to interface with
- DSA interface for the CD-Pro2LF (directly in REV3 instead of via the hifiakademie 10-pin port)
- I2C interface for the SRC4392 on the main board (*)
- GU280x16 VFD (4-bit parallel interface)
- 5x illuminated switch for controls plus rotary encoder (via MCP23S17 IO expander)
- IR receiver (yeah, RC5 is obsolete but I like the remote)
- Serial port (isolated)
- 3 relays (5V/9V for the drive)
- Magnetic sensor for lid open/close
(*) Slightly risky because that runs at 3.3V
- Experiments with "low-level stuff" on AVR with C++. Yes, there are existing projects (modm.io or avril) that already do this, but "learning by f*ck up" is pretty effective :)
- There's a smaller control board for a power amplifier standby using a attiny85 that will also be integrated.
- Ultimately I expect the serial port to interface with some kind of digital media player (e.g. a Pi) since there are multiple inputs available on the DAC board.
- It's very much in the "wow the boards actually work" bringup phase, but it can actually play a CD.
- But there are quite a few open questions (e.g. menu structure) as well as "details" like supporting the other SRC inputs and ensuring things are routed correctly.
- Main makefiles are in the
cdp_control
and (stubby)amp_control
directories, with the shared AVR stuff inavrx
. Assuming a recentavr-gcc
is in the path that Should Work but can be modified usingTOOLCHAIN_PATH
. - The project can also be built using docker (see
docker
directory) but since that can't follow symlinks, it needs to be run from the main directory:
docker run --rm -it -v $(pwd):/build pld/avr make -C amp_control
- I still use an ancient STK500v2 for uploading :) The type of interface and some parameters like tty port can be set using
PROGRAMMER
andPROGAMMER_PORT
environment variables (I often usedirenv
with a suitable.envrc
).
- Project: GPL-3.0-or-later
- IR decoding in
cdp_control/extern/irmp
provided by IRMP which is GPL ("version 2 ...or later") - Unless otherwise indicated, my code is all MIT (see files themselves)