background image

Technical Report ECE.P54.2004.12 

October 1, 2004 

 

INTEGRATION OF THE BLAUPUNKT RC-10 INFRARED 

REMOTE CONTROL WITH THE PROJECT54 SYSTEM 

 
 

By 

 
 
 

PRESCOTT B. ATKINSON 

 
 
 
 

background image

 

1

TABLE OF CONTENTS 

Table of Contents................................................................................................................ 1 

 

Table of Figures .................................................................................................................. 2 

 

Abstract ............................................................................................................................... 3 

 

Introduction......................................................................................................................... 4 

 

Blaupunkt Hardware ........................................................................................................... 5 

 

Microcontroller Software.................................................................................................... 9 

 

Project54 DLL: RemoteCtrl.............................................................................................. 16 

 

Configuration Application: RemoteConfiguration ........................................................... 20 

 

Conclusion ........................................................................................................................ 24 

background image

 

2

TABLE OF FIGURES 

Figure 1 – Arrangement of the RC-10 infrared remote control and transceiver................. 5 

Figure 2 – The RC-10 remote control unit.......................................................................... 6 

Figure 3 – The RC-10 infrared transceiver ......................................................................... 6 

Figure 4 – Pulse train output of the infrared transceiver .................................................... 7 

Figure 5 – A closer inspection of the transceiver output width pattern .............................. 7 

Figure 6 – The IDB common interface ............................................................................... 9 

Figure 7 – Attaching the RC-10 transceiver to pin 4 of a DB-25 connector .................... 10 

Figure 8 – Flowchart of the modified microp() function.................................................. 14 

Figure 9 – Flowchart of RemoteCtrl.dll............................................................................ 17 

Figure 10 – Warning dialog box for RemoteConfiguration.............................................. 21 

Figure 11 – The RemoteConfiguration main dialog. ........................................................ 22 

Figure 12 – The configuration dialog for the RC-10 up arrow button.............................. 23 

background image

 

3

ABSTRACT 

The Blaupunkt RC-10 infrared remote control is a proprietary device 

manufactured by the Blaupunkt Corporation which is used to control various 

functionalities of Blaupunkt consumer car stereo units.  The RC-10 model remote control 

is designed specifically for use with automobiles, and is molded in a way such that the 

remote control is attached to the steering wheel, and is ergonomically-appealing to the 

driver of the car.  The purpose of this project was to integrate this proprietary device into 

the Project54 system as to add system functionality to the nine buttons provided by the 

RC-10, mostly for use in police cruisers which may either lack or have unfamiliar cruise 

control button systems, or as a less expensive alternative to professionally installed 

hardware pushbuttons.  The RC-10, having a convenient large pushbutton which was 

given the functional behavior of a voice recognition activation button, also has eight other 

buttons which have been given custom Project54 system functionality through a system 

dynamic link library (DLL), and a standalone configuration application. 

 

 

 

 

 

 

 

 

 

background image

 

4

INTRODUCTION 

Project54 is a software and hardware system designed to cheaply integrate voice-

operated control, provide for device data acquisition, and centralize the functionality of 

after-market police electronics such as radar units, police radios, and police light-bars.  

After-market police devices are controlled and monitored through a microcontroller-

based intermediary, which communicates with the Project54 software through the 

system’s Intelligent Transportation System Data Bus (IDB), via the common IDB 

interface.  

 

The implementation of the Blaupunkt RC-10 steering wheel remote control 

(Figure 2) into Project54 occurs in three stages:  the modification of microcontroller 

software which recognizes unique transistor-to-transistor logic (TTL)-level time codes 

provided by the RC-10 infrared transceiver (Figure 3) for each of the nine buttons, a 

Project54 DLL which takes action on the one-byte Control Area Network (CAN) packets 

transmitted from the IDB interface microcontroller, and a Microsoft  Foundation Class 

(MFC) C++ program which allows a user to assign a multitude of Project54 functions to 

eight of the nine buttons.  The ninth button, a large blue “SRC” button of the RC-10 

remote control was given the same functionality as the system’s original hardware push-

to-talk (PTT) button, for operation with the driver’s thumb. 

 

 

 

 

background image

 

5

BLAUPUNKT HARDWARE 

 

Figure 1 – Arrangement of the RC-10 infrared remote control and transceiver

 

 

The RC-10 infrared remote control consists of two pieces of hardware: the remote 

control unit which is attached to an automobile steering wheel, and the infrared 

transceiver which converts the infrared output signal of the remote control into TTL-level 

pulses.  When a button on the remote control is pressed, a sequence of pulses is 

transmitted to the infrared transceiver.  Each of the buttons has a pulse train which has 

unique widths associated with it.  This pulse train is transmitted approximately every 100 

milliseconds while a button is held down on the remote control.  The remote control itself 

is powered by two 1.5 volt 357-type button cell batteries in series. 

background image

 

6

 

Figure 2 – The RC-10 remote control unit 

 

The infrared transceiver is powered with a +13.8 volt car battery supply, consists 

of a photo-detector circuit, and provides a TTL-level output signal which remains in the 

logic “high” state of +5 volts when the photo threshold detector is not being stimulated.  

The transceiver was designed to be placed on the instrument panel area of an automobile 

(Figure 1).  A mostly shaded portion of the instrument panel is desirable to avoid 

accidental threshold changes. 

Figure 3 – The RC-10 infrared transceiver 

 

background image

 

7

 

Figure 4 – Pulse train output of the infrared transceiver 

 

 

 

Figure 5 – A closer inspection of the transceiver output width pattern 

 

An oscilloscope was attached to the data line of the infrared transceiver, the nine 

buttons were activated, and pulse widths were recorded for each of the buttons for the 

pattern shown in Figure4 and 5.  Pulses t4 and t5 remained the same width for all nine 

buttons.  Pulses t2 and t3 were found to be approximately equal in duration for each 

background image

 

8

button. These pulse durations are recorded in Table 1.  On the release of any remote 

control button, a terminating pulse train is transmitted to the infrared transceiver which is 

different in duration than the nine unique pulse trains transmitted by the press of a button. 

 

 Button 

t1 (ms) 

t2 (ms) 

t3 (ms) 

t4 (ms) 

t5 (ms) 

SRC(HI/LO)  119.4/117.1 8/6.85

8/6.85

0.625

102.8 

OK 

118.1 7.42

7.37

0.618

102.7 

UP 

111 3.81

3.76

0.611

102.8 

DOWN 

112.2 4.4

4.37

0.634

102.8 

LEFT 

115.6 6.22

6.15

0.64

102.6 

RIGHT 

114.4 5.62

5.63

0.633

102.5 

VOL UP 

108.4 2.58

2.55

0.632

102.6 

VOL DN 

109.6 3.21

3.16

0.643

102.6 

MUTE 

113.4 5

4.96

0.6

102.8 

Table 1 - Sample receiver pulse times for the 9 remote control buttons 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

background image

 

9

MICROCONTROLLER SOFTWARE 

The IDB common interface device (Figure 6) is designed to be of versatile use.  

The PIC algorithm to detect remote control button pushes would be designed as an edge-

triggered timing device to compare measured pulse widths with a known set of measured 

timing ranges for pulses t2, t3 and t4 shown in Figure4 and 5.  

 

 

Figure 6 – The IDB common interface 

 

The IDB common interface uses a PIC 18F876 microcontroller as its computing 

core.  The PIC 18F876 has various I/O ports which can be used to read TTL-level data.  

Bit 5 of the PIC 18F876 PORTB was set as an input and used to probe the output signal 

of the RC-10 transceiver.  In order to easily interface with bit 5 of the PIC 18F876, the 

data line of the RC-10 transceiver was connected to pin 4 of the IDB common interface 

device’s DB-25 port (Figure 7).   

 

background image

 

10

 

Figure 7 – Attaching the RC-10 transceiver to pin 4 of a DB-25 connector 

 

The PIC timer TMR1 was used to collect pulse durations because of its 16-bit 

register width and 1:8 timer post-scaling circuitry.  The IDB common interface 

microcontroller uses a 16MHz clock, whose frequency is divided by a factor of 8 by the 

post-scaling circuit of the microcontroller.  This allows for pulses of duration 131ms to 

be recorded by the timer before a timer register overflow occurrence, or 2µs elapsing per 

increment of the 16 bit TMR1 register.   Because none of the pulse widths of 

consequence exceeded this timer capacity, as pulse t5 was disregarded as irrelevant and 

provides sufficient time for CAN packet transmissions, this timer is ideal for recording 

the output of the transceiver.  Using the 1:8 TMR1 timer post-scaling setting of the 

microcontroller, a simple program was written to record the edge-triggered pulse widths 

of the output of the transceiver for eventual use in the PIC program.  Those timer values 

were transmitted through the IDB common interface RS-232 serial port during the 102ms 

t5 pulse.  A large set of data for each button was recorded with this method in order to 

obtain maximum and minimum count values for these pulses.   

 

background image

 

11

It was discovered that eight of the nine buttons would output a constant pulse time 

width format while depressed.  However, the large blue “SRC” button would output 

pulses t2 and t3 at a width of approximately 6.85ms for the first several transmissions as 

the button was held down.  It would then proceed to produce pulse widths for t2 and t3 of 

approximately 8ms and continue until the button was released.  The aforementioned 

terminating pulse train that resulted from the release of all nine buttons was 

approximately identical for each button, and was also analyzed for its maximum and 

minimum times.  Table23 and 4 show TMR1 maximum and minimum number 

increment data for pulses t2, t3 and t4.    The maximum and minimum range in the 

eventual detection algorithm was extended past the maximums and minimums recorded 

experimentally for each button to compensate for possible flukes. 

 

 

Pulse T2 

MAX increments 

MIN increments 

SRC LO 

3425 

3361 

SRC HI 

4031 

3954 

OK 3728 

3663 

UP 1913 

1846 

DOWN 2215 

2145 

LEFT 3111 

3042 

RIGHT 2795 

2747 

VOLUME UP 

1292 

1227 

VOLUME DOWN 

1593 

1518 

MUTE 2508 

2430 

RELEASE / TERMNIATION 

985 

927 

Table 2 – Maximum and minimum TMR1 increment counts for pulse t2.  Release/termination pulse 
is measured to be approximately constant for all buttons. 

 

 

 

 

background image

 

12

 

Pulse T3 

MAX increments 

MIN increments 

SRC LO 

3411 3395 

SRC HI 

4017 4001 

OK 

3712 3698 

UP 

1897 1882 

DOWN 

2209 2184 

LEFT 

3094 3080 

RIGHT 

2795 2761 

VOLUME UP 

1299 1273 

VOLUME DOWN 

1600 1574 

MUTE 

2496 2466 

RELEASE / TERMNIATION 

987 975 

Table 3 – Maximum and minimum TMR1 increment counts for pulse t3.  Release/termination pulse 
is measured to be approximately constant for all buttons. 

 

  

MAX increments 

MIN increments 

Pulse T4 

323 285 

Table 4 – Maximum and minimum TMR1 increment counts for pulse t4.  Pulse t4 is measured to be 
approximately constant for all buttons. 

 

After the pulse widths were recorded, they were implemented into an algorithm 

written for the microcontroller in the PIC-C programming language.  The microp() 

function, which uses the IDB network address 0x2e, was modified from strictly hardware 

PTT button duties to this more complex multi-case pulse train detection scheme.  A 

flowchart of the microp() function is shown in Figure 8.  It would be trivial to create a 

new special purpose IDB address for this algorithm.  Table 5 and Table 6 show the pulse 

measurement boundaries for t2/t3 and t4 respectively that were eventually implemented 

into the microcontroller algorithm. 

 

 

 

 

 

background image

 

13

 

Pulse T2 & T3 

MAX increments 

MIN increments 

SRC LO 

3450 

3330 

SRC HI 

4100 

3900 

OK 3750 

3625 

UP 1950 

1825 

DOWN 2250 

2120 

LEFT 3150 

3030 

RIGHT 2845 

2710 

VOLUME UP 

1335 

1200 

VOLUME DOWN 

1640 

1500 

MUTE 2530 

2400 

RELEASE / TERMNIATION 

1000 

900 

Table 5 – Implemented maximum and minimum TMR1 increment counts for pulses t2 and t3.  

 

 

 

 

  

MAX increments 

MIN increments 

Pulse T4 

350 250 

Table 6 – Implemented maximum and minimum TMR1 increment counts for pulse t4. 

 

 

 

 

 

 

 

 

 

 

 

 

background image

 

14

 

Figure 8 – Flowchart of the modified microp() function. 

background image

 

15

 

Detection codes for all of the remote control buttons barring the “SRC” PTT 

button are transmitted each time a known pulse train is detected.  The unique 1-byte CAN 

packets assigned to each button are recorded in Table 7.  Since the PTT button works on 

the principle of push, hold, and release, a static flag is used to keep track of the position 

of these PTT button states.  If the PTT “listen” code has been transmitted, the flag is set 

to indicate such, and subsequent detections of the “SRC” button code will not result in 

repeated transmissions of the 1-byte 0x67 “listen” code.  If the button is released while 

the PTT button is in the “listen” state, a “terminate listening” code 0x68 is placed on the 

IDB when the release pulse train is detected, and the PTT static flag is set to its “not 

listening” state.  Hence, a PTT code is not placed on the IDB network every time the 

“SRC” pulse train is detected, only on instances of depression and release. 

 

Button 1-byte 

CAN 

Packet 

SRC Press 

0x67 

SRC Release 

0x68 

Up Arrow 

0x65 

Down Arrow 

0x63 

Left Arrow 

0x64 

Right Arrow 

0x62 

OK Button 

0x66 

Volume Up Button 

0x60 

Volume Down Button 

0x61 

Mute Button 

0x59 

 

Table 7 – 1-byte packet values assigned to button detection states 

 

 

 

 

 

 

background image

 

16

PROJECT54 DLL: REMOTECTRL

 

 

A Project54 DLL is a program written in C++, whose purpose is to add 

functionality from IDB devices and to communicate with or receive data from existing 

Project54 applications.  Pre-existing software functions for easy acquisition and 

manipulation of Microsoft Windows registry data (RegComlib.h), creation of Project54 

graphical user interface (GUI) elements (P54Guilib.h), the ability to send messages to 

other Project54 applications (P54Iface.h), and IDB data I/O (IdbComlib.h) can be used to 

create a Project54 application.  A Project54 application called RemoteCtrl.dll was created 

to receive and act upon 1-byte CAN packets transmitted by the microcontroller program 

on the IDB, listed in Table 7.  The Project54 software libraries used for RemoteCtrl were 

RegComlib.lib and IdbComlib.lib.  RemoteCtrl performs two functions:  it continually 

probes the IDB for the eight non-“SRC” RC-10 CAN packets using the IdbComlib 

function idbRead(), and scans the Windows 2000 registry for configurable application 

messages and the Project54 applications associated with them.  The “SRC” button 

packets are handled as they would be with a hardware PTT button, through the Project54 

PushTalk application.   The RemoteCtrl application detects if the WhelenMPCO 

application is set as the currently used light-bar.  If so, RemoteCtrl draws application 

messages from the registry with the RegComlib function getRegIntValue(), and uses them 

for message passing upon the receipt of function packets from the IDB.  If WhelenMPCO 

is not the current light-bar, the WhelenSerial light-bar default settings for applications 

and application messages are used.  The RemoteCtrl program flowchart is shown in 

Figure 9.   

 

background image

 

17

 

Figure 9 – Flowchart of RemoteCtrl.dll 

 
Integer values which correspond to Project54 application functionality are stored 

in the Windows 2000 registry key 

HKEY_LOCAL_MACHINE\SOFTWARE\Catlab\Project54\remotectrl\Parameters

and 

are retrieved by RemoteCtrl.  These integer values are listed in Table 8.  RemoteCtrl has 

the ability to send messages to several other Project54 applications, which include: 

lightsapp, pscreen, recordsapp, radioapp, radarapp, gpsapp, and mainscreen, which all 

have unique Component Object Model (COM) identifiers.  These identifiers are retrieved 

with the RegComLib function getRegStringValue()

background image

 

18

Integer Value 

Functionality/Defaults to 

Application Associated With 

0 Disabled 

None 

1  MPCO Custom/Lights & Siren On 

lightsapp 

2  MPCO Custom/Front Strobes On 

lightsapp 

3  MPCO Custom/Rear Strobes On 

lightsapp 

4 MPCO 

Custom/Strobes 

On 

lightsapp 

5 MPCO 

Custom/Wig-Wags 

On 

lightsapp 

6  MPCO Custom/Take Downs On 

lightsapp 

7  MPCO Custom/Rear Floods On 

lightsapp 

8  MPCO Custom/Left Alley On 

lightsapp 

9  MPCO Custom/Right Alley On 

lightsapp 

10 Siren 

On 

lightsapp 

16  MPCO Custom/Lights & Siren Off 

lightsapp 

17  MPCO Custom/Front Strobes Off 

lightsapp 

18  MPCO Custom/Rear Strobes Off 

lightsapp 

19 MPCO 

Custom/Strobes 

Off 

lightsapp 

20 MPCO 

Custom/Wig-Wags 

Off 

lightsapp 

21  MPCO Custom/Take Downs Off 

lightsapp 

22  MPCO Custom/Rear Floods Off 

lightsapp 

23  MPCO Custom/Left Alley Off 

lightsapp 

24  MPCO Custom/Right Alley Off 

lightsapp 

25 Siren 

Off 

lightsapp 

32  Radar Audio Up 

radarapp 

33 Radar 

Range 

Up 

radarapp 

34 Radar 

Brightness 

radarapp 

35 Front 

Antenna 

radarapp 

36 Rear 

Antenna 

radarapp 

37 Squelch 

On 

radarapp 

38 Squelch 

Off 

radarapp 

48 Radio 

Volume 

Up 

radioapp 

49 Radio 

Volume 

Down 

radioapp 

50 Channel 

Up 

radioapp 

51 Channel 

Down 

radioapp 

52 Troop 

Up 

radioapp 

53 Troop 

Down 

radioapp 

54 Scan 

On 

radioapp 

55 Scan 

Off 

radioapp 

64 Show 

Window 

mainscreen 

65 Show 

Window 

pscreen 

66 Show 

Window 

recordsapp 

67 Show 

Window 

radioapp 

68 Show 

Window 

lightsapp 

69 Show 

Window 

radarapp 

70 Show 

Window 

gpsapp 

71 Lights 

Off 

lightsapp 

Table 8 – Registry settings and their corresponding application functionality 

background image

 

19

When RemoteCtrl finds that a particular button of the eight non-“SRC” buttons 

has been pressed, a message of functionality is sent to the application associated with that 

button using the P54Iface.h four-argument function Message(), which is condensed down 

to a two-message function called sendMessageToApp(), with arguments for destination 

application and message content.  For example, a message may be sent to the radar 

application to force the radar application to activate the radar’s rear antenna.  The C++ 

function to elicit this response would appear as such:   

sendMessageToApp(radarapp,L“REAR ANTENNA”); 

 

 

If WhelenMPCO is the active system light-bar configuration, then application 

function messages are drawn from the strings in the Windows 2000 registry key 

HKEY_LOCAL_MACHINE\SOFTWARE\Catlab\Project54\WhelenMPCO\Vocabulary

 

for switches one through three and buttons two through six, and are stored in character 

arrays of wide character type.  Otherwise, RemoteCtrl reverts to the WhelenSerial light-

bar configuration, and uses the application messages associated with it.   

 

 

 

 

 

 

 

 

background image

 

20

CONFIGURATION APPLICATION: REMOTECONFIGURATION

 

 

A stand-alone MFC C++ Windows 2000 executable called RemoteConfiguration 

was written to manipulate the RemoteCtrl registry parameters as to allow an end-user to 

configure eight out of the nine remote control buttons to perform various functions with 

the Project54 software.  RemoteConfiguration uses the registry manipulation functions 

provided by the Project54 header file RegComlib.h in order to store and retrieve integer 

values for the eight programmable remote control buttons, located in the key 

HKEY_LOCAL_MACHINE\SOFTWARE\Catlab\Project54\remotectrl\Parameters 

of the 

Windows 2000 system registry.  RemoteConfiguration manipulates the same integer 

values that the RemoteCtrl application reads its settings from, shown in Table 8.  The 

RegComlib functions getRegIntValue() and setRegIntValue() are used to read and write 

these integer values from the Windows 2000 registry.  RemoteConfiguration will also 

automatically detect the light-bar configuration.  If the program finds that WhelenMPCO 

is the system’s current light-bar configuration, it will draw button labels for the 

application’s radio buttons which correspond to switches one through three and buttons 

two through six from the Windows 2000 registry using the RegComlib function 

getRegStringValue().   String values for switches one through three and buttons two 

through six are stored in the Windows 2000 registry key 

HKEY_LOCAL_MACHINE\SOFTWARE\Catlab\Project54\WhelenMPCO\ButtonLabel.

 

If WhelenMPCO is found to not be the default light-bar installation, then 

RemoteConfiguration will revert to configuration of the standard WhelenSerial type 

light-bar. 

 

background image

 

21

 

When the RemoteConfiguration program is executed, a disclaimer dialog box 

pops up, as shown in Figure 10.  This dialog is included to warn the user that because the 

automobile driver may accidentally press buttons on the remote control, that activation of 

emergency signals and sirens may not be advisable.   

 

 

Figure 10 – Warning dialog box for RemoteConfiguration. 

 

After pressing the “OK” button on the warning dialog box, the warning will 

disappear, and the configuration application can be operated to create or disable 

functionality for any of the eight configurable buttons on the RC-10 remote control, as 

shown in Figure 11.  Eight buttons on the next dialog can be pressed, which will allow 

the application user to modify the remote control button settings.  If there are valid 

integer values stored in the 

HKEY_LOCAL_MACHINE\SOFTWARE\Catlab\Project54\remotectrl\Parameters

 

registry key, the RegComlib function getRegIntValue() is used to retrieve them, and they 

will be automatically loaded by the program and used as a default until they are modified.  

Otherwise, each integer value in this key will be initialized to 0, the “Disabled” setting.  

Pressing the “OK” button will store any changes made to the RemoteCtrl registry 

parameters.  Pressing the “Cancel” button will have no effect on the registry, and will 

abandon any changes made on the remote control button settings. 

background image

 

22

 

Figure 11 – The RemoteConfiguration main dialog. 

 

When one of the configuration buttons is pressed, a dialog to configure the 

specified RC-10 button will pop up and allow the user to choose some functionality or 

disable the remote control button.  Figure 12 shows the configuration dialog for the up 

arrow button on the RC-10 remote control. 

background image

 

23

 

Figure 12 – The configuration dialog for the RC-10 up arrow button. 

 

Any of the radio buttons on the configuration dialog may be chosen as a setting 

for the remote control button.  When the “OK” button is pressed, whatever radio button 

has been selected will be stored in a list until the “OK” button in the main configuration 

dialog box is pressed.  If the “Cancel” button on a button configuration dialog is pressed, 

any changes to radio button storage will be discarded, and the value stored in the registry 

at the time will be reverted back to the next time the same configuration dialog is 

activated. 

 

 

 

background image

 

24

CONCLUSION 

The Blaupunkt model RC-10 infrared remote control was created specifically to 

be attached to the steering wheel of an automobile.  It is molded and designed in order to 

be ergonomically appealing and easy to use for the automobile operator while in the 

process of driving an automobile.  The remote control transmits infrared beams to a 

transceiver, which translates the infrared pulse transition levels into electrical pulses.   

Three pieces of software were written to integrate the RC-10 remote control with 

the Project54 system.  The IDB common interface was programmed to recognize the 

transceiver-side codes associated with the nine buttons of the RC-10 remote control.  

Pulses from the transceiver are captured by creating a circuit between pin 4 of the IDB 

common interface device and the data line output of the transceiver.   When the 

microcontroller ascertains which button had been pressed, an identifier is transmitted 

across the IDB in the form of a 1-byte data packet.  This packet is then recognized by a 

Project54 DLL, RemoteCtrl, and depending on what function is assigned to that 

particular button, RemoteCtrl sends functional messages to other Project54 applications 

to evoke a program response.  Finally, the configuration application is used by an end 

user to assign functionality to the eight configurable buttons of the RC-10 as to provide 

some functionality for the RemoteCtrl DLL to act upon.