This project is for reasonably advanced electronic nuts...but if you stick with it anyone can make it.
If
you choose to build the Through Hole Technology (THT) version, then you
will be making a Printed Circuit Board (PCB) or at least a matrix
board, soldering electronic components onto it, and then programming a
PIC micro-controller, so you'll need:
- PCB making equipment. I use inkjet transparencies, an ordinary fluorescent desk lamp as a UV source, and Kinsten positive-acting presensitised board, and ferric chloride etchant.
- A good soldering iron with a fine tip. I soldered everything on both the THT and SMT boards with a Hakko T18-B 1 mm ball tip.
- A micro-controller programmer able to program a Microchip PIC18F2550 micro-controller, such as a Pickit2 or you can make your own (search for "pic programmer" on Instructables).
If you choose to build the Surface Mount Technology (SMT) version, then you'll need:
- A PCB manufacturer to make a double-sided PCB. I used a company called ITEAD who have very reasonable rates and manufacture very high quality boards. All the Gerber files are available on SourceForge. You just need to zip them up and email them to the manufacturer, pay your money and wait.
- To be able to solder small Surface Mount Devices (SMDs) to the PCB. That is not as hard as it seems as the design uses only relatively large SMD parts. There are plenty of tutorials on the Internet showing how to handle SMDs. A Hakko T18-B 1 mm ball tip (or similar) is fine - even for the ICs. Use plenty of "no clean" flux.
- A micro-controller programmer able to program a Microchip PIC18F25K50 micro-controller, such as Mikroelektronika's mikroProg for PIC. Unfortunately the PIC18F25K50 is not supported by Pickit2 and even Pickit3 seems to lack support (well, I couldn't get it to work, so I bought a mikroProg which seems to be better anyway).
And in case it doesn't work for you first time, you may find it helpful to have:
- A good logic analyser like Logic (works on Windows or Linux)
- A USB trace capture program like USBTrace or USBlyzer (for Windows) or Wireshark (free on Linux). On Linux, make sure you're using the libpcap 1.1 (packet capture library) or later.
Circuit Diagram
The circuit can be divided into a number of functional groups.
Infrared Receiver Interface
The infrared receiver consists of the TSOP4838 IR receiver module. Its
job is to convert 38 kHz modulated IR signals from your remote control
into digital ones and zeroes. The receiver will output a logical one
(0V) when the remote is transmitting a 38 kHz signal, and will output a
logical zero (+5V) during periods of silence.
Infrared Transmitter Interface
The transmitter consists of a PN2222A transistor (but any general
purpose NPN transistor will work) which drives a series of three
Infrared Light Emitting Diodes (IR LEDs). Driving three IR LEDs is done
to boost the transmitting power. Learning remotes are designed to accept
signals from remote controls in close proximity and remotes are
designed to produce an intense IR signal. Consequently, IRK! must
produce a fairly intense IR signal in order for the learning remote to
be able to "see" it during the learning process.
LCD Interface
The Liquid Crystal Display is a 2x16 (2 lines at 16 characters per
line) unit compatible with the Hitachi HD44780 4-bit defacto standard.
You can use a 4x16, or a 4x20 display if you like as long as it is
HD44780-compatible. These are available on eBay at very reasonable prices.
USB Interface
The USB interface is provided by the USB module built into the
PIC18F2550 microcontroller. It is managed programmatically by the USB
library provided with the MikroC Pro C Compiler.
Activity LED Interface
Hardly an interface as such - a simple LED and a current-limiting
resistor - but if you use a high intensity (8000 mcd) green LED then
I've found that you can make the resistor an insanely...