Peter's electronic projects

Infra/radio remote control transmitter/receiver with PIC

v4.2 designed by Peter JAKAB in 2004-2005
old version in December, 1999

NOTE for beginners: PICs are general purpose microcontrollers which have to be programmed before you can use them in the actual circuit! Check out this link to learn more.

If you are looking for walkie-talkie or RF circuits, please check here (this page has nothing to do with walkie-talkie circuits).

RF transmitter a
RF transmitter, built-in antenna
RF transmitter b
same RF transmitter with external antenna
RF receiver
RF receiver, 4 channels
IR receiver
same receiver PCB with IR module

description

This is a general purpose remote control project with using programmable PIC microcontrollers. Schematics are shown for using infrared (RF) or radio (RF) media. If you are not familiar with microcontroller programming, you can use fixed encoder and decoder integrated circuits instead. Well-known such IC-s are Holtek HT-12D, HT-12E and Motorola MC145026, MC145027, MC145028.

Remote controls usually consist of encoder/decoder parts connected to a transmitter/receiver module which takes care of the transmission of digital signals by radio or infra waves. The format of this project's signal is designed to be ideal even for the cheapest ASK RF modules (using 50% signal/silence ratio), and it is similar to the Philips RC-5 format used in infrared remote controls. The transmitter has a varying number of buttons and sends the states of these inputs to the receiver. The receiver device decodes the message and sets the outputs accordingly.

general schematic for remote controls
general schematic for remote controls

encoder methods

There are two different methods for encoding/decoding channel information:

remote control

Current devices have 4 or 8 channels - it means they are capable of controlling the state of 4 or 8 switched outputs. Each transmitter and receiver has an address, and the transmitter address must match the address of the receiver to control the channels. The transmitters are capable of sending three different types of codes for the available channels:

All the receivers have an indicator LED showing that a valid packet was received. Receivers can have different type outputs for each channel:

Combining different code-type transmitters with receivers with different type channels, great versatility is achieved. The possible combinations are described below.
transmitter channel type code receiver channel type resulting behaviour
simple code momentary the channel output is turned ON while the corresponding transmitter button is pressed, and turned OFF when the button is released
simple code latched the channel output state is toggled each time its button is pressed: when the corresponding transmitter button is pressed, the output is turned on. By pressing the same button again, the channel output is turned off
channel ON latched the channel output is turned on when the corresponding transmitter button is pressed
channel OFF latched the channel output is turned off when the corresponding transmitter button is pressed

Current choice of devices:

name channels and types addresses source code
4-channel RF/IR transmitter 4 channels, 8 buttons - each channel has 2 buttons: ON and OFF (for latched receiver operation)
16 (4-bit) 4-ch RF
4-ch IR
8-channel RF/IR transmitter 8 channels, 8 buttons (for toggle or momentary receiver operation) 16 (4-bit) 8-ch RF
8-ch IR
8-channel RF/IR receiver 8 channels: each channel can be latched or momentary 16 (4-bit) 8-ch RF
8-ch IR
4-channel RF/IR receiver 4 channels: each channel has both momentary AND latched outputs (2 outputs per channel) 16 (4-bit) 4-ch RF
4-ch IR

4/8-channel V4.2 RF transmitter

The transmitter has 8 buttons. The 8-channel transmitter can be used for controlling 8 channels by sending simple codes, the 4-channel transmitter can be used with four ON and four OFF buttons for 4 channels. The diode wires (J1-J4) determine the transmitter address. The number of channels (and button functions) depends on the PIC code used.
RF transmitter
RF transmitter schematic

4/8-channel V4.2 IR transmitter

The transmitter has 8 buttons. The 8-channel transmitter can be used for controlling 8 channels by sending simple codes, the 4-channel transmitter can be used with four ON and four OFF buttons for 4 channels. The diode wires (J1-J4) determine the transmitter address. The number of channels (and button functions) depends on the PIC code used. IR transmitter
IR transmitter schematic

8-channel V4.2 IR/RF receiver

The receiver has 8 relay-switched NO/NC outputs for 8 channels. Each channel can be set to momentary or latched operation. The address is set by switch S1. The schematic shows the RF version of the receiver, the IR version differs only in the receiver module - a 3-pin IR receiver IC, like TSOP1738 is used
8-channel RF receiver
8-channel RF receiver schematic

4-channel V4.2 IR/RF receiver

The receiver has 4 or 8 relay-switched NO/NC outputs for 4 channels. Each channel has both momentary AND latched outputs (2 outputs per channel). LM[0-3] outputs are latched outputs of channels, and LM[4-7] outputs are momentary outputs of channels. The 4-relay PCB can be re-wired to select momentary or latched output for the four relays. The address is set by switch S1. The schematic shows the RF version of the receiver, the IR version differs only in the receiver module - a 3-pin IR receiver IC, like TSOP1738 is used
4/8-channel RF receiver, decoder
4/8-channel RF receiver schematic, decoder part
4-channel RF/IR receiver, relays
4-channel RF/IR receiver schematic, relays

4-channel V4.2 monitoring IR/RF receiver

The receiver is to display received packets and communication errors on a 2x16 character LCD display. The display is connected through a special 3-wire serial interface which is described here.

RF transmitter/receiver modules

It is possible, but not easy to construct a working RF transmitter or receiver. High frequency circuits need special expertise and equipment so I recommend that you buy a working RF module. I used the following devices: HX1000 transmitter, RX1010 receiver from RFM and small PCB panels: RF-EZ transmitters, RX-3302 super-regenerative receiver, Telecontrolli sup-reg and super-heterodyne receivers. The RF modules are available from a lots of companies. Here is a list of companies from Oricom:

Laipac, Linx, IMST, Glolab, Semelab, Sage, Axonn, Lincast, Abacom, Ramsey, Orbit, Innomedia, RF Innovations, Radiometrix, OKWElec, Temic, Telecontrolli, Lemos, Unilink, TrueBlue, Parallax, Computronics, VideoComm, Rentron (schematics), RFM

434M RF modules
434M RF transmitter modules: RF-EZ STM series, TM01DS, 15-980TX
434M RF modules
434M RF receiver modules: RX-3302, Telecontrolli RR8-434

hardware

The RF transmitter modules can use a wide range of input voltages, so transmitter V+ varies by module specs. Higher RF module voltages usually result in greater transmission distances. IR diodes start working at 2.2VDC, so at least 3V should be applied to the IR version devices. The microcontrollers can work on voltages 2-5.5VDC, lower voltages result in smaller current consumption and longer battery life.  The receiver modules (RF and IR) usually take fixed +5VDC, this is already shown on the RF/IR schematics. The relay driver part can use a higher voltage, depending on the relay ratings. Standard voltages for receiver V+ are 12VDC, 6VDC.

software

All the devices use new, FLASH-based microcontrollers, this means that they can be re-programmed many times. You can experiment with the source code settings to fit your needs. The code can be compiled under MPLAB v5 or v6, but a linked project is required. Please check FAQ at the PIC page.

source file
line meaning
enc-042.asm 25 #define MODE_CH4 the device is 4-channel, sending ON/OFF channel codes
enc-042.asm
28 #define MODE_CH8 the device is 8-channel, sending simple codes for channels
irmtxv4.asm 44 pwm_freq EQU d'38000' the IR transmitter frequency is set to 38000 Hz. This should match the receiver module frequency
dec-043.asm 36 LATCH_MASK EQU 0xff
select outputs to be latched. This is a binary mask, one bit per channel. Other channels will be momentary
dec-044.asm 38 LATCH_MASK EQU 0xff
mrxv4.asm 56 #define SKL btfsc
57 #define SKH btfss
normal decoder logic input is used for the RF receivers (most times)
mrxv4.asm 60 #define SKL btfss
61#define SKH btfsc
inverse decoder logic input is used for the IR receivers (most times)

FAQ

Q: The code doesn't compile! Please send me the HEX

A: Make a linked project.
Here is how to do it in MPLAB v5. Create a project (project/new) and in the project files area select the root node (HEX file). Click node properties, select MPLINK as language tool. Enter appropriate linker file name (eg 16f628.lkr) into additional command line options. Close window. Click add node to add all the source files one by one. Place the specified lkr file (eg 16f628.lkr) in the directory containing the sources. The linker file can usually be copied from your mplab(/lkr) program directory. Choose the file matching your processor.
MPLAB v6: Start the new project wizard, and when asked, add all assembly, header files and the linker script to the project.

references