release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Search | Go
Wiki > Main > DocsIndex > ArchosInfraredRemote

Introduction

We're still using an old Archos Recorder, as a kind of kitchen radio. A big disk and a shuffled playlist across all tracks help it to be the least annoying "radio" I know of.

One nuisance exists: It may well happen that a track is not to our liking, and the player is out of reach at a shelf, while we're sitting at the table. The stereo system has a remote control, with the input set to AUX the CD control buttons of it are functionless. So it is quite logical to make the Archos react to these commands.

The whole project was a birthday present to my wife.

Interfacing

The player and recorder models support an external 6 button cable remote control (ToDo: find link or post picture), the remote is plugged between headphone and jack, sends serial commands into a 4th pin of the headphone jack. This style of remote is supported by Rockbox, too. So no software changes necessary, if my IR receiver behaves the same.

The Archos remote uses two lithium button cells to power its little microcontroller. Something I find very cumbersome. Not practical for an IR receiver, too, since the IR circuit draws a bit of power all the time, versus a button control can be built to wake up only if a button is pressed and draw very little idle current if not.

Inside the Archos, the remote pin is pulled towards the 3.3V logic supply power with a 1kΩ pullup resistor. This allows for my receiver to draw a little bit of current from the unit itself, about up to 1 mA, before the voltage drops too low. Most IR receivers need more, but I found the GP1UX31QS series from Sharp, which needs only 0.3 mA (available from e.g. Mouser or Digikey). Add a tiny microcontroller for the IR decoding, and we're almost there.

Circuit

Two more parts are necessary for elegant power stealing: A p-channel MOSFET transistor and a buffer capacitor. The transistor is made to be something like an active diode, and the capacitor supplies the circuit while the remote pin has to be driven low:

The remote pin is floating high when idle, allowing us to draw a bit of power from it. To transmit a byte, it has to be pulled low with RS232 timing for each bit being "1". Pin 6 of the microcontroller does that job. During the low time we can't supply the circuit, so just before pulling low the transistor gets opened by pin 3 and the circuit has to live from the capacitor charge until the remote line can be left high again, and the transistor is made conductive again.

Very fortunately, a MOSFET has an internal diode from drain to source. This diode makes the circuit start up: current can only flow inward, while the uC is not up and running the capacitor is already been charged. In fact the circuit would probably work with a diode instead of the transistor, but we'll lose the forward voltage, would have less supply voltage, the circuit would be more critical. You can view the transistor as a diode which can additionally be shorted under control of the μC.

The transistor shoudn't be a real power MOSFET because then we'd waste energy to change its high gate capacitance. A small model is fine, with an on-resistance of a few Ohms when driven with 3V logic level. On the other hand, a plain signal transistor won't do well neither, has a high Rds_on. We want something inbetween, therefore the BS250 above.

Software

The microcontroller is an Atmel ATtiny25, programmed in C with gcc of the WinAVR package. I took great care to have this design use as little power as possible. The μC runs with only 128 kHz clock, plus is sleeping in a deep powerdown mode almost all the time. In this mode, it needs only 200 nA. The timing and measuring is done using hardware units, which get switched on only on demand, while the μC can continue to sleep. A bit overengineered, I admit, but I wanted to see how low it can get.

Hexfiles for programming and source code for hacking are attached, see below.

It currently contains an IR decoder for the popular NEC protocol. I also have a Philips RC5 decoder, but not adapted to this project so far, thus not included here.

In order to use it for any other remote than a Yamaha Pianocraft, you'll need to change the code and recompile it, sorry. Currently, the assignment is hard coded. The μC has 2 pins left (3 if the reset pin is cannibalized, too), so it is feasible to add e.g. a button and a very low power LED to give it a minimalistic user interface for a teach-in mode. Since I did not need that for myself, this wasn't done.

In my version, I have only assigned 4 of the 6 buttons: play/pause, stop, next, previous. I've not assigned volume up+down, since I control that with the stereo.

Pictures

Well, you don't have to build it this small, the μC is also available in DIL, but I wanted to fit the circuit in a particular case:

Here is the case, this was once an extension IR transmitter, containing a similar small PCB with only an IR LED:

The finished cable with the IR receiver pigtail. As you can see it is an RCA cable, but plugs into the Archos' headphone jack.

-- JoergHohensohn - 2010-09-26
I Attachment Action Size Date Who Comment
sourcecodehexfile.zipzip sourcecodehexfile.zip manage 27.1 K 26 Sep 2010 - 14:42 JoergHohensohn the source code and the compiled hexfile
r3 - 27 Sep 2010 - 05:49:02 - JustinHannigan

Parents: DocsIndex
Copyright by the contributing authors.