DimDim's ES 9028/9038 DAC Shield For Arduino DUE

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
I started this thread as I am building a Twisted Pear BIII DAC with ES9028 DAC chip. I made a mention of this in the Twisted Pear forum and there was some interest for a thread so here it is.

I knew of Dimitris from his posts and blog using TFT screens on previous BIII DAC's. He continues to provide his expertise like HiFi Dunino did with the ES 9018 DAC.

DimDim has a shield and code for the newer 9028/9038 DAC chips. For those of us whom are software challenged, folks like HiFi Duino and Dimitris allows us to use Arduino to control our DAC's and access all the settings.

I have two of his shields and built one. I am waiting for my TFT screen to see if it all works.

I am no electronics expert or authority, audio is just a hobby to me. I can assemble hardware with instruction but would be lost on my own

DimDim's blog. (The screen name is taken from his first and last name, but it is an oxymoron as there is nothing 'dim' about Dimitris). Look for TFT HiFiDUINO Pro page is up..on right hand side.

Dimdim's Blog | DIY Audio, Arduino, Computers, Music
 

Attachments

  • almost.jpg
    almost.jpg
    234.9 KB · Views: 1,588
Here is link to my digikey parts order list. I have not verified operation yet as I am waiting for my TFT screen.

Digi-Key - Fast Add

You are first hit with page of three items.


"An improved value option is available. View Options"


Click on “View Options” and select increased amount for “increased savings per item” or select actual amount needed. Once you get through this list, you will be taken to order with 22 line items.

Note: You can delete surface mount switch.

CKN9112CT-ND

I needed one surface mount. Through hole reset switch for shield is lower in list.

You could delete one diode, 400v. Original spec part was a 600v, probably doesn’t make any difference?

GF1G-E3/67AGICT-ND

You can also go through DimDim’s shield page as some parts may not be necessary for your build.

Universal Signal Isolator shield for the Arduino DUE | Dimdim's Blog

For keyed connections, check this order. Note that this list does not include all the possible header connections you may use.

Digi-Key - Fast Add

The female connectors use the WM2564-ND, CONN TERM FEMALE 22-24AWG GOLD terminals I had.

There may be other keyed connectors available with different terminals. If someone finds alternatives perhaps they can share it with others.

One thing I found helpful was go to his previous shield pages. There are instructions to download that cleared up connection instructions for the new shield. Many of you probably don't need your hand held like mine...:eek:
 
Last edited:
Registered for the thread.

I am also looking for a software control module for ES9038PRO. I am actually hoping that a ArDAM_Lite kind of module will work: just a Arduino Nano, a ADUM1250 i2c isolator (instead of Si8642), IR sensor, and expansion headers, and of course some codes.

Cheers.
 
Registered for the thread.

I am also looking for a software control module for ES9038PRO. I am actually hoping that a ArDAM_Lite kind of module will work: just a Arduino Nano, a ADUM1250 i2c isolator (instead of Si8642), IR sensor, and expansion headers, and of course some codes.

Cheers.

Considering that glt's (hifiduino's) original code for the 9018 barely fit in an Uno (which has the same capacity as the Nano), that might be hard to accomplish, even without the overhead of a screen. I'm not saying that it's impossible (TPA does it for their Buffalo, even though they do not support IR) but it will definitely require the code to be written from scratch.

The ATMEGA1284p is a better choice IMHO, since it has 128kb of flash, but you will need to design a custom pcb to accommodate it.
 
Considering that glt's (hifiduino's) original code for the 9018 barely fit in an Uno (which has the same capacity as the Nano), that might be hard to accomplish, even without the overhead of a screen. I'm not saying that it's impossible (TPA does it for their Buffalo, even though they do not support IR) but it will definitely require the code to be written from scratch.

The ATMEGA1284p is a better choice IMHO, since it has 128kb of flash, but you will need to design a custom pcb to accommodate it.

Hi, Dimitris,


Thanks a lot for the tips. I was interested in ArDAM but then I am not into digital volume control and backed up. I am designing a ES9038PRO main board and am looking for an easy and elegant solution for control module like ARDAM. I will check your great stuffs on your website and see if I can find any clue. Thanks in advance.


W. YAN
 
Rich,
Thanks for starting the thread. And thanks to DimDim for creating this. I will be watching with interest. I've not yet upgraded to the 9038 so it may be a while for me to do this. Did you get the PCB from DimDim or have it made? What is a recommended display? The ones I found are touch panels. I assume that is not needed.
Mike
 
Happy to help!

From his blog site...this page

TFT HiFiDuino Pro Project | Dimdim's Blog

"3.2″ TFT with resolution of 240 x 400 or 4.3″ TFT with resolution of 272 x 480, compatible with the UTFT library"

The code is written for the two size displays mentioned and you comment out the large display if you use the smaller. You do not need the shield SainSmart has for the display.

The link for 4.3" TFT takes you to SainSmart. If they are out of stock you can check this seller on ebay. Seller name 'trade_spotting.' SainSmart was out so I ordered from this seller, awaiting delivery. SainSmart only shows two in stock now.

SainSmart 4.3 inch TFT LCD Touch Panel for Arduino UNO MEGA2560 R3 | eBay

EDIT: Oh, Dimitris has a link at bottom of shield page saying he sometimes has boards, so contact him via the link.

Universal Signal Isolator shield for the Arduino DUE | Dimdim's Blog
 
Last edited:
It works, kind of...

The encoder doesn't work properly and remote inop. I cannot select other menu options with the encoder. I am using an old Bourns. Any particular encoder I should be using?

In checking the code it says I may need to change to my remote codes. I have a new retail purchase Apple remote. Anyone have proper codes for this list?

Appreciate any assistance.
 

Attachments

  • dimdimshield.jpg
    dimdimshield.jpg
    189.8 KB · Views: 531
  • remote.jpg
    remote.jpg
    118.4 KB · Views: 527
Hi, Dimitris,


I went through your blog about TFT Hifiduino and have a few questions:

1) So I suppose for ESS chip, one can get away with only Si8605, and leave out MCP23008, Si8642 and Adum1250?

2) I find that you have pull up resistors on the clean side, but not on the side of arduino, is it because arduino has internal pull-up?

3) Is mega2560 a drop in replacement for Due? I have one mega on hand.

Thanks.


W. YAN
 
It works, kind of...

The encoder doesn't work properly and remote inop. I cannot select other menu options with the encoder. I am using an old Bourns. Any particular encoder I should be using?

In checking the code it says I may need to change to my remote codes. I have a new retail purchase Apple remote. Anyone have proper codes for this list?

Appreciate any assistance.

The codes Dimdim provided in the source code you've given, it's for an old remote so they don't apply to Apple remote

For Apple remote you can use the following codes
0x02: Menu
0x04: Play
0x07: Right
0x08: Left
0x0B: Up
0x0D: Down

There are many versions of Apple remote, so I'm not sure that they'll work with any Apple remote, so if not use the procedure details in this video

I've used the following code to catch the codes for a variety of remotes that I have handy (receiver pin for Dimdim's shield is pin 9) with my Due (for other arduinos use IRremote.h library)
Just upload it to your arduino, catch the codes using Serial Monitor and then use a Hex to decimal converter.

Code:
/*
 * An IR detector/demodulator must be connected to the input RECV_PIN.
 * Version 0.1 July, 2009
 * Copyright 2009 Ken Shirriff
 * [url=http://arcfn.com]Ken Shirriff's blog[/url]
 */

#include <IRremote2.h>

int RECV_PIN = 9;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup()
{
  Serial.begin(9600);
  // In case the interrupt driver crashes on setup, give a clue
  // to the user what's going on.
  Serial.println("Enabling IRin");
  irrecv.enableIRIn(); // Start the receiver
  Serial.println("Enabled IRin");
}

void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}
 
Last edited:
It works, kind of...

The encoder doesn't work properly and remote inop. I cannot select other menu options with the encoder. I am using an old Bourns. Any particular encoder I should be using?

In checking the code it says I may need to change to my remote codes. I have a new retail purchase Apple remote. Anyone have proper codes for this list?

Appreciate any assistance.

Hi there Rich,

It looks like your Bourns encoder is not behaving like the one that I'm using, which is one like these:

T01276-1.jpg


There is no easy way to adapt the code to your encoder. I would suggest that you get one of the cheap ones off of Ebay, like the one that I use.

But before you go looking for a new encoder, look up the Bourns' datasheet and check that its pinout is the same as the one I'm using.

Regarding your remote's codes, there's an easy way to figure out which codes it uses. My code is set up to output to its serial port any IR codes that it does not recognize. Just look at that and use those codes to replace the ones that I have in the code.
 
Hi, Dimitris,


I went through your blog about TFT Hifiduino and have a few questions:

1) So I suppose for ESS chip, one can get away with only Si8605, and leave out MCP23008, Si8642 and Adum1250?

2) I find that you have pull up resistors on the clean side, but not on the side of arduino, is it because arduino has internal pull-up?

3) Is mega2560 a drop in replacement for Due? I have one mega on hand.

Thanks.


W. YAN

Hi there W. YAN,

1) Yes, that is correct.
2) Exactly.
3) Nope. The code won't fit, and several of the libraries won't work. Plus, it's way too slow for this application. I'd made a video comparing the two a few years back: YouTube
 
The codes Dimdim provided in the source code you've given, it's for an old remote so they don't apply to Apple remote

For Apple remote you can use the following codes
0x02: Menu
0x04: Play
0x07: Right
0x08: Left
0x0B: Up
0x0D: Down

There are many versions of Apple remote, so I'm not sure that they'll work with any Apple remote, so if not use the procedure details in this video

I've used the following code to catch the codes for a variety of remotes that I have handy (receiver pin for Dimdim's shield is pin 9) with my Due (for other arduinos use IRremote.h library)
Just upload it to your arduino, catch the codes using Serial Monitor and then use a Hex to decimal converter.

Good morning Savvas,

You've done good work, but you don't really need extra code to determine the unknown IR codes. The functionality is already built-in to my code.
 
Good morning Savvas,

You've done good work, but you don't really need extra code to determine the unknown IR codes. The functionality is already built-in to my code.

I had to make some changes to the code for a RC5 remote, so it was faster to upload. I had to mask the RC5 code and also the repeated code doesn't work like the other protocols. Also it was the basic test before I gave up on two chinese remotes.

All in all getting the whole thing to work was a simple task. Dimdim instructions and provided files and code made this hussle free. I lost most of my time getting a wrongly setup chinese TFT shield to work.

Big thanks Dimitris. It's music time now.
BTW, Dimitris are the default settings your favorite ?
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.