My Universal Signal Isolator shield now has its own page, complete with the board’s schematic and PCB.
I have tried to document the shield as best I could but feel free to comment if you see something that is not clear or is missing.
My Universal Signal Isolator shield now has its own page, complete with the board’s schematic and PCB.
I have tried to document the shield as best I could but feel free to comment if you see something that is not clear or is missing.
I’m talking about my new Universal Signal Isolator PCBs:
I built one to test it out and everything seems to be working as it should. Next step is a page for the project, with schematics, a BoM and build instructions.
It is compatible with the current versions of both the ArDAM1021 and TFT HiFiDuino projects.
For now you can find more info in this post.
I did a little work on the TFT HiFiDuino code, incorporating most of the enhancements I made to the ArDAM1021 code.
These are the enhancements:
Plus a few minor bugfixes here and there.
The new version of the code is here (v2.13): TFT_HiFiDuino_v2.xx (14634 downloads ) (Note: As always, the code on this page may not be the current one, i.e. there may be a newer version available. The latest version is always up at the project’s official page.)
I will also update the code’s official page with the new version of the code.
Three weeks back I released the first public alpha of the ArDAM code, stating that it was very very alpha. I was meaning every word of that sentence.
Since then, Soren has released the new firmware for the DAM and I have resumed work on the project. Today I am happy to release the first usable version of the code (v0.74): ArDAM1021 Code (105937 downloads )
Changes include but are not limited to:
The download now also includes all the necessary fonts. Let me know what you think.
The project’s page will be edited later today.
A few years back I designed a little Arduino shield who’s main function was to provide electrical isolation between an Arduino and a DAC (specifically a TPA Buffalo III).
The years have passed and my needs have changed with the introduction of the dam1021 DAC and its serial interface. My first though was to design a new shield specific to the dam but then I said “why not design a universal isolator shield?”. It would provide electrical isolation for both I2C as well as serial signalling.
Thus was born the Universal Signal Isolator shield for Arduino DUE & MEGA:
OK, it does look a lot more complicated than my first shield but remember, you only need to solder in the parts that your DAC actually needs.
So, what does this thing do?
1) Electrical isolation of I2C signals, complete with support of 8 isolated inputs or outputs (via an MCP23008 IC). Three of the MCP’s pins are high current outputs (up to 100mA).
2) Electrical isolation of up to 2 serial ports (implemented with an Si8642).
3) Electrical isolation of the second I2C interface of the DUE (implemented with an ADUM1250).
4) Powered either by 5VDC, 8-15VDC (non-regulated) or 7-12VAC (includes support for on-board rectification and filtering).
5) Support of a 5VDC power relay (up to 100mA).
6) Header for connecting a Nextion display.
7) On-board EEPROM memory (24LC256).
8) And of course full compatibility with the previous shield (same pinouts for the encoders, IR, TFT, etc.).
I will release the Eagle files once I have confirmed that the shield works as expected (I’m waiting for the first (and hopefully last) batch of PCBs).
A few days ago Soren announced that the release of the new firmware for the dam1021 was close.
In light of that announcement I have decided to release the Arduino code that I had written a few months back, even though it is not quite finished.
I am doing this to help fellow Arduino & dam1021 enthusiasts in their quest of remote-controlled color TFT bliss.
So, for now, no real documentation – this is no polished piece of software, but it works (for the most part).
Since it is based on the TFT HiFiDuino code, you can get started by reading its documentation. It should not be hard to get started with this. The code itself also contains useful comments.
I should remind you that the dam1021 at the moment only “talks” real RS-232, meaning that a circuit that converts the TTL level serial port of the Arduino to a real RS-232 port is necessary.
However, we were promised that with the firmware upgrade the second, isolated TTL serial port would be enabled, so here’s hoping..
Also, I have come across a strange problem with the serial communication with the dac. In the beginning all is well but after a while the dam no longer responds to the commands that are sent by the Arduino. However, it (the dam) is still sending data back to the Arduino – when the sampling rate changes, the new SR is displayed properly on the TFT.
I have verified that the Arduino is indeed sending the commands to the dam:
I hope the problem gets sorted out in the new firmware release.
Anyway, here is the code: ArDAM1021 Code (105937 downloads ) The project also has its own page: https://www.dimdim.gr/arduino/ardam1021-project/
Let me know what you think. I promise to put more work into it in the next few weeks..
Over at avclub.gr we designed a custom PCB to ease the implementation of the Universal USB to I2S Interface Indicator. It was a joint effort between myself and Manolis (a.k.a. lemon at avclub.gr). I did the circuit design and Manolis did the PCB design work.
This is the schematic of the final version of the circuit:
When the PCB design was finalized, a GB was organized. When the GB was finished we placed an order on seeedstudio.com’s Fusion PCB service. About 3 weeks later the PCBs had arrived:
The production quality was truly excellent.
From top to bottom we have:
Next up is the socket for the Arduino Nano. You will notice that the USB port should be on the right.
At the bottom of the board we have:
Note that in the future a Si8642BA may be used in place of U2. With proper support from the code that will turn 2 of the 4 inputs into outputs, so that they may be used to control a DAC board (for example to select an input).
This is the full BoM:
Part | Description |
FB1, FB2, FB3 | Ferrite Bead 0805 |
R1 | 2.7K 0805 |
R2, R3 | 8.75K 0805 |
R4 | 100R 0805 |
R5 | 10K 0805 (optional) |
C1, C2, C3, C4 | 100n X7R 0805 |
C5 | 10uF 10V X7R 0805 |
Q1, Q2 | BC808 or equivalent SOT-23 |
U1 | Si8065AA-B-IU |
U2 | Si8045AA-B-IU (optionally Si8642BA-B-IU) |
In case you want to have your own PCBs made, these are the Gerber files: Universal USB to I2S Interface Indicator PCB Gerbers (7549 downloads )
You will also need an Arduino Nano, a suitable OLED display and some cables, connectors, etc. (see project page).
As soon as I received the boards, I built a prototype with whatever components I had lying around (thus the wrong size of most of the resistors & capacitors).
And proceeded to test it out with an Amanero Combo384 board:
Everything worked as it was expected. 🙂
At the moment this board (and relevant Arduino code) has been tested with the following USB to I2S interfaces:
Amanero Combo384
Note that R1 should be installed for proper operation.
Luckit WaveIO
You will notice that there is no Vcc pin on J9. In order to power the isolator, we will have to “steal” power from elsewhere on the board. A good place to tap is the power pin of the on-board I2S isolator, just to the left of the I2S LRCK U.FL:
Following up on a number of feature requests made over at avclub.gr I made a few rather interesting additions to the code:
1) The OLED display will show the type of signal (PCM or DSD) for 3 seconds if a change in signal type occurs. Only supported on USB interfaces that support it (obviously).
2) IR remote control support via the well-known IRremote Library. Support for power on/off and source selection (S/PDIF or USB).
3) The OLED display will display the name of the selected source, permanently if it is S/PDIF or for 3 seconds if it is USB.
More details on the new features will be added to the project’s home page, as will the new version of the code.
Here is a short video of the prototype in action:
I just put up a new page for a small side project: a Universal USB to I2S Interface Indicator.
Have a look here: https://www.dimdim.gr/arduino/universal-usb-to-i2s-interface-indicator/
I bought this inexpensive (something like $3 delivered) Ethernet module a few years ago, only to discover that there really wasn’t a decent library to support it. So it got tossed into a drawer..A few days ago I realized that I needed a low cost Ethernet interface for one of my projects. It wouldn’t really need to do much, so I thought the ENC28J60 would probably be able to handle the task.
Doing the customary Google search for Arduino support turned out a full Ethernet library for it! 🙂
It’s called UIPEthernet and it is fully compatible with the original Ethernet library for the Arduino. What this means is that every piece of code written for the Ethernet library (in other words for the “classic” Arduino Ethernet Shield) can be made to work with a dirt-cheap ENC28J60 just by changing
#include <Ethernet.h>
to
#include <UIPEthernet.h>
This I had to see for myself, so I hooked it up.
The module that I have needs 3.3V power (not 5V!!) but its SPI pins are 5V tolerant so it will pair nicely with any Arduino.
The necessary hookup for the UNO, MEGA or DUE can be found in the library’s page: https://github.com/jcw/ethercard
I decided to try a classic Ethernet example sketch: The WebServer sketch. This one reads a few analog inputs on the Arduino and then serves them on a web page.
Sure enough, all I had to do to get it to work was just change the #include statement. It worked like a charm!
So, there you have it. You can add full wired Ethernet connectivity to your Arduino for less than $3.