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.
UPDATE (June 2017): I ran a GB over at diyaudio.com for a PCB designed for the ArDAM Lite project. It ended up looking like this:
More info on the board (schematics, etc.) can be found at this build guide: ArDAM Lite Build Guide (15879 downloads)
If you’d like one of these boards, contact me either through diyaudio.com or here.
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.
Like in the Universal USB to I2S Indicator, I am using the excellent u8glib library to drive the OLED and the also excellent IRremote Library for the IR stuff.
The IRremote library supports all kinds of remotes so you shouldn’t have much trouble finding a suitable one. However, you will need to adapt the code to work with your particular remote.
To make this procedure as easy as possible, I have written a small Arduino program that detects the IR code that is sent from the remote and displays it on the OLED as well as through the serial port: ArDAM Lite IR Scanner (15929 downloads)
To upload the code you should (as always) unplug your Nano from your PCB. You will also need to connect the IR receiver and the OLED (optionally – you can just as well skip the OLED and just use the Serial port to see the detected IR commands).
For example, when I press the “Power” button on my remote, I get this:
I then go to my main program and put in the code that I just saw, proceeded by a “0x”:
That’s it. Now my IR remote’s Power button will be used as the POWER_CODE.
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.92) is here: ArDAM1021 Lite Controller (17158 downloads)
This is the change log:
- Diyaudio.com GB edition (changed IR pin).
- Code cleanup for release.
- Code split from Universal USB to I2S Indicator project.