Thursday, September 29, 2022

DJ Hero teardown

 

I was looking for something that could act as a rotating platter for clay sculpting, and came across a DJHero at the thrift store.  Mine is missing the adjacent gadget that is has slide controls.


There are interesting videos online that show how one could be used, but I didn't think they went into enough detail about the inner electronics, so here we go.

On the side that has the data port, there is the port itself, which contains 4 contact points inside, and a hole to its left, which houses a momentary switch.  That switch can be used to identify the device on I2C, so two of these can be on the same I2C bus, as long as they have different switch settings (depressed vs. not).

Overall structure

There are several layers to the device, and I take them apart from the bottom up.  Viewed from the top down, you have

1.  the spinning platter top (exposed layer, where you have buttons)

2. the spinning platter underside (holds the button PCB and optical encoder

3. the middle layer honecomb (supports the spinning platter and has a hole that lets the encoder stick through)

4. the middle layer underside (nothing too special)

5. the lower layer top (all those little teeth!)

6. the lower layer underside (another honeycomb-type support layer)

7. the base top and bottom

Once you remove all the screws, the base bottom can be removed from the base top.  There aren't any annoying plastic clips holding things together.

Base top/bottom

On the underside of the DJHero, which is the underside of the "base bottom", you find four circular feet, each held in place by a T-10 "star"-type screw.  Then, there are five more T-10 screws in the middle, and two T-9 screws closest to the data port.

With the bottom removed from the top, you can see the wires connecting the data port and switch, and all those send wires into the next layer.

The bottom of the DJ Hero has a sliding switch.  It's a physical thing that slides plastic into place so that it locks the side gadget to the DJ Hero.  That can be removed with a Philips screwdriver.  Don't lose the spring.  Also, those parts aren't really necessary, so if you want to route some wires through a hole somewhere, you could just take out the plastic bits and feed the wires through there.

It's a good idea here to unscrew the circuit boards.  You might have to break off some aged glue in order to do this.  It's just a matter of removing the plastic bits, and then removing two screws for each board.  The switch PCB has smaller screws.   If you don't remove the PCBs now, you might have too much tension in the wires as you try to get the other layes apart.

I should mention at this point that any further disassembly isn't really necessary.  In fact, getting to this level may not really be necessary.  It can be useful opening up this first layer (base top/bottom) in order to tap into the wires, or replace the switch mechanism (e.g., with a real SPST switch).  In short, you can stop here, or even stop before opening up the base. 

If you do go past this point, be very careful not to break off the little teeth seen in the next layer.  Don't say I didn't warn you.

Now, going to the combined lower+middle+top layers, remove the four Philips screws around the center.  That will let you separate the lower layer from the middle+top layers.


 

The lower layer

Be very careful here.  This layer has a ring of plastic teeth. The photo below shows the middle layer removed from the lower layer, and the middle layer is flipped upside-down.


Here are the little plastic teeth.  They serve as photo interrupters as part of a quadrature encoder-type mechanism.


After a few more Philips screws, you can remove the middle layer from the top platter.

The middle layer

This is what the innards of the middle layer top, and the platter underside look like:


 Note how there's a hole in the middle layer.  That's where the quadrature encoder sticks through (from the platter layer) and "reads" the light pulses formed by the ring of plastic teeth.

The wiring simply feeds through this layer up to the control board that's housed on the underside of the platter.

This is a closer view of the encoder board.  The white ribbon cable connects to the button PCB.


This is a view of what's happening on the other side of the button PCB.  It's just three contact-type (graphite paint-type) switches, just like in many keyboards, and a common ground (the red stripe).

This is what's going on on the opposite side of the encoder PCB.

The buttons connect to pins labeled P1, P2, P3, and G (ground).

The wires from the base connect as G, ID, C, D, G, and V.

By wire color, and based on other documents online, they correspond to

G = blue

ID = white = identifier

C = green = I2C clock, aka SCL

D = yellow = I2C data, aka SDA

G = black = ground

V = red = Vdd, 3.3v

The SCL and SDA lines appear to have 1k series resistors, which kind of suggests tolerance to 5v.  But the examples I've seen on other pages suggest using 3.3v works ok.

The onboard chip is labeled HA2003 | I/SS021 | 0933GHE.  I'm guessing its something aking to a PIC16.  All it has to do, I think is count quadrature events, light the quadrature's LED, do I2C communications, and handle button clicks.

The blue and white lines are interesting.  Blue is actually hardwired to ground way back at the momentary switch PCB.  When the momentary switch is pushed, white is connected to blue, meaning it's brought low.  Therefore, I assume ID is biased high.

Hooking in

I rebuilt things back to the point where I just have the base top and bottom apart, and the PCBs are removed.

This is what the back side of the data port PCB.  It's just direct wiring: green, red, black, and yellow wires hooked to connector pins.  


 

The ground line (black) hooks over to the switch PCB.  There, it's joined to blue wire directly.  The white wire comes off the switch, and gets joined to ground when the switch is depressed.


At this point, I had a few options for getting to the data signals.  One would be to disconnect the existing wires and port, butt-weld some wires, and feed them through a hole.   Another would be to solder to the same pads as the data port PCB itself, but that's not great, because they're already surface-soldered (which means attempting to solder there probably would cause the existing wires to pop off).

What I opted to do instead is make my own little board to use the actual data port.

The data port is just the right size for a double-side board to slot in.  There are two connection points on each side.  It's about 7mm wide.  With the device right-side-up, the inside port pins connect as:

yellow black

green red

I started down the path of Fusion 360'ing a board design, but then just decided to make it by hand.  (It's surprisingly hard to just draw some vectors and say "mill on or inside or outside the line" in F360.  It's way easier in VCarve.)  

I band sawed a 7mm-wide strip, and then sanded the edges and did a test fit for insert.  That worked great, and you could see visible scribe lines where the pins touched copper.

I then cut it to around 15mm length.

I scored a line down the center of the board (very carefully) with a razor, and tested to make sure the sides were not longer in contact.

Then, it was just a matter of a Q tip, dabbing on a bit of solder flux, tinning the pads, and soldering wires.  Along the way, I kept continuity-testing to make sure it was safe.


By the time it's all together again, and because there's no "keying" of the board, it's easy to get it upside-down, so I was careful to continuity-test the dongle's wires against the internal wires prior to reassembly.

Here's what it looks like when the patient's in post-op.


and zoomed in so you can see color coding

A side note re: the underside feet.  Note that they're "keyed".  There's a little nub in the base, and there's a corresponding slot in each foot.  Make sure they're aligned before screwing things back on.



 

What's next

Now that I have the breakout board, I have to decide on a programming platform.  I'm used to Arduino, but it runs I2C at 5v, so I'll need a bidirectional 5v/3.3v level shifter to get that working safely.  I may instead do this using Raspberry Pi.

I'll probably put a glob of hot glue onto the breakout board to make sure the wires stay isolated and solid.

Then, I'll do it all again, because I found a second DJ Hero at another thrift store!  Yay.

What that means, then, is that I can move from there to replicating the DJ Hero Etch-a-sketch that someone else did.  Or, make a wheelchair-type HID.

The other thing I want to do -- and part of the initial impetus for getting this device -- will be to use the DJ Hero as part of a 3D scanner.  I could use a vertical line laser alongside it, and use the encoder readings to know the rotation position.




1 comment:

  1. If you need a 3.3v Arduino variant I really like the Teensy 3.x/4.x series. Tons of performance and very reliable.

    ReplyDelete