For a long time I've wanted to do some kind of DIY audio project, it's one of those ideas I come back to every now and then but never actually do anything with. Recently I installed a copy of Pi MusicBox on my spare Raspberry Pi 3B+ and hooked it up to an amp: For the curious, that's a pHAT DAC sticking out the top of the Pi. The main purpose of this little setup over here was somewhere to house & play my retro systems - as you can see, that is still something of a work in progress... Side note - those cube storage things make great places for curious kitties to curl up and sleep... But I was pretty impressed at how well that little amp performs - it's an SMSL SA-50 I picked up on Amazon recently. I mean, it's not exactly the best quality amp out there, but for background music or hooking up retro consoles it's more than good enough. It turns out that this amp is basically a reference implementation of the TDA7492 IC. "I bet I can do that!", goes my somewhat misguided inner voice. So I looked up the data sheet. "Yeah, you know what, no thanks!", went my somewhat more sensible inner voice... I mean... sure... I could do it eventually... but there's a bit of an art to designing PCBs/layouts for audio use, and there are loads of pre-built amp boards you can buy which implement this IC or similar. Which leads us to the start of this project... I quickly realised that I could probably string together some off-the-shelf parts to create my own custom amp & network music player. So I have a number of features I want to integrate into this project: Amplifier - minimum 50W Raspberry Pi music player Bluetooth input At least 3 external inputs Display showing current input Motorised volume pot Remote control Microcontroller to run everything Therefore, I've started ordering bits and pieces so I can get prototyping. First up, the amp. I bought this board based on the TPA3116D2: I am going to have to modify it at some point so I can replace that pot with a motorised one. I will also need to do something about the on-off switch - I might switch it via the microcontroller as part of the startup process, or I might just wire it so it's permanently on. Next, power supply. The amp board takes DC instead of AC, which is WAY easier! I bought this beastie from Amazon - 24V 15A output power, so that should be more than enough! Three output terminals, which will come in handy later. I will definitely be using a fused IEC socket in front of that power supply in the finished version! Bluetooth input! After a bit of hunting around I chose this module: This will all be inside some kind of aluminium enclosure when I'm done, so those piddly little PCB antennas are not going to work. This module however has an external antenna connector - handy! It also has built-in voltage regulation that accepts between 5V and 35V - meaning, I don't need a 24V to 5V module, I can simply feed in the output of the power supply. IR module next. I went for this off-the-shelf board for the sake of simplicity when prototyping, but there really isn't much going on here, I'll roll my own further down the line. Of course I wanted a screen, so this 128x64 I2C OLED module will do for now! I've no idea what kind of refresh rate I'll get. Arduino might not cut it, but I have a spare Arduino Pro Micro gathering dust so that'll do to get on with. I may also want a larger screen, but this will do for prototyping purposes. Next, a bunch of breadboarding stuff for prototyping/development. Not really much to say about this TBH! So. That's pretty much it for the off-the-shelf stuff. The last big puzzle piece is the input switcher. I found this project on Hackaday. It's an audio input switcher using Panasonic TQ2 relays and controlled by a Node32 microcontroller board; it's also open source, which is absolutely perfect. I really like the white soldermask! Here's the schematic: I'll be implementing everything except the Node32 part - I'm keeping the input resistors and transistors, but it remains to be seen whether it's needed or not. The Node32 uses 3v3 instead of 5v; these are 5v relays, which is why the transistor driver was needed in the first place. I might well be able to drive the relays directly from an Ardiuno because it uses 5v; even if I leave the transistors in place all I'll need to do is change the resistor value at the base. So I spent a bit of time in KiCad this afternoon and came up with this schematic: The relay designators have the suffix '_BLC' because I customised the parts to re-arrange the pins - this just lets me know that it's my part and not the standard one . An hour or two later and I had this PCB knocked up and ordered: As @Bloody_Pete already pointed out, this is a completely unoptimised layout! This is a pure prototype at this stage - I need to see whether the circuit actually works, and I need some hardware to start development with. I've got a lot of microcontroller code to write and it'll really help to have hardware here to work with. Eventually this board will be a lot larger, but for now this will do. So that's pretty much as far as I am so far. I'm afraid there probably won't be an update on this for a while. I've got a lot of parts I'm waiting for at the moment, and there are already a couple of retro projects on the go which are blocking up workbench space!