ABSTRACT
This device is intended for situations where a person has difficulties operating the buttons on a remote control. The unit was conceived for use in a hospital ward. However, it can easily be adapted for other purposes.
Simmstick products are ideal for implementing this kind of design, because, in addition to being an economical way of providing PCB construction, they allow the unit to be customized for individual situations by substituting modules, while retaining core aspects of the design.
Fig 1. shows the prototype unit which consists of two DT101 simmsticks running PIC16F84 microcontrollers on a DT004 motherboard. An LED display and interface circuitry has been implemented on a protoboard, which plugs into the 30 pin header socket on the motherboard.

OPERATION
The remote control can be operated by any kind of momentary switch which can be activated by the user. This can be a breath switch, squeeze bulb, foot switch, etc. The first activation causes a series of LEDs to light in sequence. Each LED represents a particular function. If the switch is activated while an LED is lit then that function is executed. Once the series of LEDs has been scanned through the device is reset. Table 1 shows the functions implemented on the prototype.
| LED# | FUNCTION | TYPE | INTERFACE |
| 1 | CALL NURSE | PULSE (*) | OPTOCOUPLER |
| 2 | TV CHANNEL UP | LATCHING | INFRARED |
| 3 | TV CHANNEL DOWN | LATCHING | INFRARED |
| 4 | TV VOLUME UP | LATCHING | INFRARED |
| 5 | TV VOLUME DOWN | LATCHING | INFRARED |
| 6 | LIGHT ON/OFF | PULSE | TRANSISTOR |
| 7 | TV ON/OFF | PULSE | INFRARED |
CIRCUIT DESCRIPTION
The remote control consists of three main modules. The interface module, the scanning control module, and the infrared code generator module.

The interface module contains all the circuitry not contained on the simmsticks and motherboard. It consists of a binary decoder and LED driver, infrared LED, power regulator, and interface circuitry to implement the functions not applicable to the infrared code generator.
Fig 2. shows the underside of the motherboard and interface module where the function LEDs are mounted. See Fig 1. for the top side view. The unit fits inside a standard jiffy box. The LEDs are mounted to sit flush with the bottom of the box. Holes drilled in the box over the LEDs allow back illumination of a lexan, which consists of a graphic printed on glossy paper, held in place with an adhesive clear plastic film to give a professional finish.
In order to save PORT pins on the scanning controller, the LEDs are driven by a 74HC138 binary address decoder, which receives a 3 bit binary address on the simmstick bus to determine which of the 7 LEDs are lit. No LED is lit for binary 000. The NURSE CALL LED is dual colour (See Fig 2.). The GREEN side of the LED is driven by the address decoder, and the RED side is intended to be driven by the nurse call system to indicate that the call has registered. See the circuit diagram of the interface module.
The power regulator is intended to regulate down to a manageable level the 24 Volt rail used in the nurse call system. Alternatively, the unit could be powered from the DT004 itself. The remote control could also be powered by batteries. In this instance, the power circuitry (including the power LED) on the motherboard and interface module should be removed to keep quiescent current to a minimum. In fact, the DT004 could be dispensed with, and the unit constructed with simmsockets mounted on verostrip board. Sleep mode has been implemented on both microcontrollers to extend battery life. It is recommended that three 1.5V penlite batteries in series are used. Two should work in theory, but this has not been tested.
Simmstick bus line D1 controls an optocoupler which interfaces the unit to the nurse call system. It is wired across the nurse call switch to simulate a button press. D6 drives a BD139 transistor which operates an alternating relay to control the bed light. See Fig 3. for a block diagram showing the control signal paths. Table 2 shows the pinout of the connector on the interface module.
| PIN# | FUNCTION |
| 1 | CALL ACTIVE INDICATOR |
| 2 | USER SWITCH |
| 3 | USER SWITCH |
| 4 | EXTERNAL INFRARED LED |
| 5 | TO CALL NURSE SWITCH+ |
| 6 | TO CALL NURSE SWITCH- |
| 7 | TO LIGHT ON/OFF RELAY |
| 8 | ***NOT USED*** |
| 9 | 0V IN |
| 10 | 24V IN |


Fig 4. shows the scanning control module which consists of a PIC16F84 microcontroller running at 10Mhz mounted on a DT101 simmstick. The circuitry associated with the ADC, RTC, EEPROM, and RS232 is not required. If the unit is configured to use the 5 Volt regulator on the DT004 then the 78L05 is not required either. The R1 and R2 reset pullup resistors should be fitted, and it is recommended that a brownout reset IC be used to ensure reliable operation. However, if the unit is running on batteries, the brownout IC could be left off. The simmstick should be fitted with either a 10Mhz ceramic resonator, or a crystal and 22pF capacitors.
The scanning controller acts on input from the user controlled switch and sets the LED and control lines accordingly. Table 3 shows that PORT assignments for the controller. The control outputs and switch input are all active low.
| PORT# | BUS ID | FUNCTION |
| PORTA,0 | CL | LED BIT 0 |
| PORTA,1 | DA | LED BIT 1 |
| PORTA,2 | SI | LED BIT 2 |
| PORTA,3 | SO | JUMPER J1 |
| PORTA,4 | IO | JUMPER J2 |
| PORTB,0 | D0 | USER SWITCH IN |
| PORTB,1 | D1 | CALL NURSE OUT |
| PORTB,2 | D2 | TV CHANNEL UP OUT |
| PORTB,3 | D3 | TV CHANNEL DOWN OUT |
| PORTB,4 | D4 | TV VOLUME UP OUT |
| PORTB,5 | D5 | TV VOLUME DOWN OUT |
| PORTB,6 | D6 | LIGHT ON/OFF OUT | PORTB,7 | D7 | TV ON/OFF OUT |

The infrared module shown in Fig 5. monitors the control lines on the simmstick bus and outputs infrared codes to control a television set. As can be seen from the photo, simmsticks don't get any more bare-bones than this. The only things required are the PIC itself, and perhaps a decoupling capacitor, due to the fact that the module gets its clock, reset, and, if implemented, power from the scanning control module.
In order to share the clock signal, a wire link was added to the underside of the DT004 motherboard from the CO pin on the scanning control module's simm socket to the CI pin of the infrared code generator module's socket. See Fig 2.
The infrared generator could also be used as a basic stand alone television remote control. In this instance the reset pullup resistors R1 and R2, as well as a 10Mhz ceramic resonator, or a crystal and 22pF capacitors, should be fitted. The inputs are active low with internal pullups, so all that is necessary are switches to ground on the control line inputs. See Table 3 for the bus control lines which correspond to TV functions. The RA0 pin (PORT A,0) on the PIC is used to drive an infrared LED. To prevent bus conflict the simmstick is modified to provide this output on D8 of the simmstick bus. Fig 6. details the modifications.
The infrared LED is mounted on the interface module and protudes through a hole in the jiffy box. If the remote control is to be used in an enviroment where there are several sets of the same type, the built-in LED can be omitted and replaced with a LED mounted directly on the television, via a cable, to prevent interference. There is a provision on the interface module connector for an external LED. The series resistor is increased for the external LED from 220 ohms to 3300 ohms to prevent saturation of the IR receiver on the television. See the circuit diagram of the interface module.
The infrared code generator currently supports four brands of televisions; NEC, Sharp, Orion, and Samsung. The codes were captured and analyzed using the POWERIR utility available from the CIR site . Other useful information on IR codes was obtained from this IR information site. The infrared generator program was written in PIC assembly code. Here is the hex file.
The program code could be written more efficiently. In fact, it currently uses almost every word of program memory in the PIC. The source code has been left in its current form for two reasons.
1) It works!
2) The discrete form is easy to follow and modify for other protocols.
The protocol generated by the module is configured by programming the first byte of EEPROM data memory (Address 2100H). Originally, the protocol was set with jumpers. However, to preserve bus lines this new method was decided to be more efficient. This enables the module to be reconfigured without reprogramming the program memory. Table 4 shows the values which correspond to the various protocols.
| VALUE | PROTOCOL |
| 0 | NEC |
| 1 | SHARP |
| 2 | ORION |
| 3 | SAMSUNG |
FUTURE ENHANCEMENTS
Because of the modular nature of simmstick, the unit can be easily customized for individual needs. For example, the LED display could be replaced with a simmstick which reads the LED binary code and generates audio cues for the visually impaired.
A printed circuit board that plugs into the simmstick bus header socket, and which implements all of the circuitry described in the interface module, is currently being developed. To make the PCB more general purpose, an optocoupler and transistor/relay driver interface will be provided on all seven control lines (D1-D7). Any or all of these can be optionally fitted. One particular application for this would be to wire into the buttons of a universal remote control, which would allow control of virtually any infrared remote control television or VCR. However, the PCB could be used for applications completely removed from this project.
The author welcomes feedback, especially from potential users of this device. Please email your comments.
DISCLAIMER
This document is copyright. However, the author grants permission for private individuals to use this information on the understanding that it is provided as is, and, while the prototype does work as described, the author makes no claims to, and will take no responsibility for, its applicability or fitness for a particular purpose. Commercial use of the source or program codes is not permitted without the express written consent of the author.