A couple of friends of mine that had already built Universal USB to I2S Interface Indicators asked me whether it could be modified to control the Soekris dam1021. It turns out that it could, with a little bit of work.
The way to control the dam1021 is through its serial ports, so it was a matter of adapting the indicator’s PCB to the task. The PCB already had the pads for an Si8642 isolator chip, which (more by coincidence) is exactly what would be needed to isolate a serial port.
My first thought was to utilize the Arduino’s SoftwareSerial library and just use the pins that were already connected to the Si8642’s pads. In the beginning that seemed to work, but it turned out to be unreliable at 115200 baud, plus it was too much of a load for the microcontroller. This made me turn to the microcontroller’s hardware serial port, which proved to be exactly what was needed. The only thing was, the PCB needed to be modded so as to pass the serial lines through the isolator chip. This involved cutting two traces on the top of the PCB and connecting them to the Nano’s TX & RX pins. I decided to use pins 4 and 6 for RX and TX respectively (isolated side) and pins 13 and 11 on the “dirty” side. I used the DAM’s isolated TTL serial port (the RS-232 port is not electrically compatible with the Arduino). Having done that I had a hardware serial connection to the DAM.
Next up was the code. I thought I would treat the DAM like a USB to I2S device and just expand on the Universal USB to I2S Interface Indicator’s code. By the time I was done with most of the functionality it became apparent to me that it would be easier to maintain it if it was a separate project, so I decided to go that way.
The IRremote library supports all kinds of remotes so you shouldn’t have much trouble finding a suitable one. The current version of the code is set to decode all IR signals and to send through the serial port the IR codes that it does not recognise as valid commands. This way it is easy to discover a working remote and to find out the exact IR code that you should put in the relevant section:
#define POWER_CODE 0xFF48B7 // Code for power on/off
#define SOURCE1_CODE 0xFF827D // Code for source 1
#define SOURCE2_CODE 0xFFB24D // Code for source 2
Here is a short video of the prototype in action:
Note that this it my first attempt at 4K video.. Captured in 4K @ 200Mbps and authored in Adobe Premier Pro CC. I think it came out pretty nice. Better watch it in full screen (for obvious reasons..).
The most current version of the code (v0.91) is here: ArDAM1021 Lite Controller (488 downloads)
This is the change log:
- Code cleanup for release.
- Code split from Universal USB to I2S Indicator project.