Archive

Whiteboard

image

For reasons explained elsewhere in detail[1], iPods (and iPhones, etc.) newer than the oldest generations refuse to charge if all you give them is a USB port with the power lines connected and the data lines disconnected. Presumably, it has partly to do with the fact that some of the newer devices can negotiate for more than the 500mA upper limit of USB proper, and possibly that the additional requirements hinder the proliferation of unlicensed peripherals, if only temporarily, so that Apple has an easier time pushing their own.

Fortunately, there’s no actual (digital) data transfer going on. To make the charger visible to the device, a bit of static information is provided on the data lines. Each data line can be held to a voltage as low as 0V (ground) or as high as about 3.3V (USB nominal logic high). Simply setting the lines to some combination of these high and low values[1] reports to the device that it can provide 100mA or 250mA for charging. Newer devices look for cues between high and low; the device reports that it can supply 500mA by holding both data lines at around 2.0V, or 1000mA (1A) by holding D+ to 2.0V and D- to 2.8V. The latter two configurations are what the schematic describes.

This charger should also generally be okay for other USB-charging devices; nothing going on with the data lines is in principle electrically unsafe for a USB device.

  1. [1]ladyada’s notes on iPod chargers’ finicky requirements

♫ SEEEEEEEEEGAAAAAAAAAAAAAAA!!! ♫

Ahem.

To complement my previous post, here is a schematic of the regular Sega Genesis controller. You could actually make one of these from scratch from non-specialty items; unlike the NES controller, which uses a proprietary 7-pin connector, Sega used the common-as-dirt DE-9 female D-sub connector, following in the footsteps of Atari both physically and electrically.

The circuit above could be built in fairly little time using almost exclusively items from RadioShack, if it’s well stocked. There’s probably still a DE-9 connector kicking around there. You’re not likely to find a 74HC157 in a local store, but it’s easy enough to make a 2-1 mux using 74HC00 quad NAND ICs. If you can’t track those down, it appears to be possible to make a non-inverting 2-1 mux in as few as 9 or so transistors (probably MOSFETs), but my personal recommendation, which is more time-intensive but overall less masochistic, is to have a working stock of a key few 74HC-series ICs available for when you get curious.

If I were to do it this way, I’d pull a couple of 74HC00 from my stash. A 2-1 mux—let’s call it MUX(M,N,S)—implements the expression MS OR N(NOT S); that is, “reflect M if S is high; reflect N if S is not high”. That’s equivalent to the expression (M NAND S) NAND (N NAND (S NAND 1)), which is four NAND gates. One 74HC00 = 4 NAND gates = 1 mux.

A 74HC157 packs four of these, but only two are genuinely in use. Most game software probably ignores the left and right signals while the select line is low, so it’s most likely okay to pass the left and right buttons directly out pins 3 and 4 of the port (as is already the case with up and down). As for the rest, pin 6 would be MUX(A button, B button, select) and pin 9 would be MUX(start button, C button, select).

Of course, as if it even bore mentioning, this controller would be a cinch to implement on an Arduino-like platform using just a DE-9 breakout cable. (Hint: Vcc on pin 5, ground on 8, an input on 6, and the rest are outputs.) Do this only on a temporary basis, though—you have better things to do with an Arduino. :-)

image

The “Joule Thief” is an LED flashlight that is designed to be run from a half-dead battery. Using a simplistic DC-DC boost converter, it turns the steady c. 1V supply into an oscillating supply sufficient to operate the LED (which requires c. 3V) in enough bright flashes per second that your eye doesn’t perceive the flicker. So, don’t throw away that dead AA just yet…

I haven’t made one just yet, but a CFL in my house just stopped working so I should have all the parts on hand.