WO1993015488A1 - Pre-programmed universal remote control method and apparatus with learning capability - Google Patents

Pre-programmed universal remote control method and apparatus with learning capability Download PDF

Info

Publication number
WO1993015488A1
WO1993015488A1 PCT/US1993/000814 US9300814W WO9315488A1 WO 1993015488 A1 WO1993015488 A1 WO 1993015488A1 US 9300814 W US9300814 W US 9300814W WO 9315488 A1 WO9315488 A1 WO 9315488A1
Authority
WO
WIPO (PCT)
Prior art keywords
signal
signals
remote control
transmitter
compressed
Prior art date
Application number
PCT/US1993/000814
Other languages
French (fr)
Inventor
Charles P. Bernardin
Jerry J. Heep
Original Assignee
Tandy Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tandy Corporation filed Critical Tandy Corporation
Publication of WO1993015488A1 publication Critical patent/WO1993015488A1/en

Links

Classifications

    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C19/00Electric signal transmission systems
    • G08C19/16Electric signal transmission systems in which transmission is by pulses
    • G08C19/28Electric signal transmission systems in which transmission is by pulses using pulse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03JTUNING RESONANT CIRCUITS; SELECTING RESONANT CIRCUITS
    • H03J1/00Details of adjusting, driving, indicating, or mechanical control arrangements for resonant circuits in general
    • H03J1/0008Details of adjusting, driving, indicating, or mechanical control arrangements for resonant circuits in general using a central processing unit, e.g. a microprocessor
    • H03J1/0025Details of adjusting, driving, indicating, or mechanical control arrangements for resonant circuits in general using a central processing unit, e.g. a microprocessor in a remote control unit
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
    • H04B1/06Receivers
    • H04B1/16Circuits
    • H04B1/20Circuits for coupling gramophone pick-up, recorder output, or microphone to receiver
    • H04B1/202Circuits for coupling gramophone pick-up, recorder output, or microphone to receiver by remote control
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03JTUNING RESONANT CIRCUITS; SELECTING RESONANT CIRCUITS
    • H03J2200/00Indexing scheme relating to tuning resonant circuits and selecting resonant circuits
    • H03J2200/25Remote control device with display

Definitions

  • the present invention relates generally to universal remote controls, and more specifically, it relates to universal remote control systems using signal compression techniques for storing either pre-programmed information or learnable information or both.
  • URC Universal remote control
  • a URC is used to control the operation of more than one device.
  • these devices are entertainment- type systems such as televisions, VCRs, stereo systems, and the like.
  • These URCs are either programmable, learnable, or a combination of the two.
  • ]earnable remote controls can store in memory all the signal codes ..f a specific remote control by individually entering the data into the memory of the URC. Since the operator may have upwards of five or more remote controls, with each remote control having upwards of forty or more keys, and wherein each key may require up to 512 bytes of information, a great amount of memory is necessary in a learnable remote control to accommodate all the various remotes desired by the user. In addition, it is time consuming for the user to program each remote control into the URC.
  • Some of the problems existing in the use of learnable remote controls include miskeying m keys, misalignment during recording, or too weak a signal due to weak batteries in the source remote. Also, it is time intensive to key individually each key into the URC, register and then verify each key to be sure that it had been received and is associated with the corresponding key in
  • a solution to the above problems is to store or pre ⁇ program all the given code information of a remote control in a permanent memory location in a URC, such as a read only memory (ROM) .
  • a URC such as a read only memory (ROM)
  • ROM read only memory
  • This allows a user to enter a code corresponding to the specific remote control desired to be used, thereby accessing all the necessary data in the URC.
  • One problem with pre-programmed remote controls is that they typically need large amounts of memory in order to store the control information of a vast majority of commercially available remote controls. Memory is expensive and limits the number of remote control codes that can be stored in any given URC.
  • a solution to the problems of using a pre-programmed URC remote control is to add learnable functions.
  • the same problems of programming the URC exists as they did for the learnable remote.
  • the need for memory is increased, since added memory is used for both the pre-programmed section and the learnable section of the URC.
  • a method of compression is used to maximize the memory constraints typically found in commercial URC transmitters.
  • the compression procedure uses a statistical analysis of all the remote control (RC) codes entered for all the keys of a specific remote control transmitter. The frequency of each code is determined, and an average of each code is then calculated based on the signal frequency. RC codes then are compressed by replacing the original RC codes with the best average RC code, as determined in the statistical analysis.
  • RC remote control
  • the reconfigurable, or learnable URC has the ability to learn, recall, store, and repeat the remote control codes from any other infrared transmitter, while the pre-programmed URC has the ability to recall and repeat the remote control codes from an assorted number of remote controls preprogrammed into the URC. Both units can be combined into a single URC device that is capable of learning unprogrammed remote control transmitters, as well as operating devices of associated remote control transmitters preprogrammed in the URC.
  • the learnable universal remote control is usable with a plurality of remotely controlled apparatuses controllable with signals transmitted from an associated remote control transmitter.
  • Each LURC includes a detector for detecting and receiving, when the LURC is in a learning mode of operation, signals transmitted from a remote control transmitter normally used to operate an associated remotely controlled apparatus.
  • a first memory coupled to the detector for temporarily storing the received signals.
  • the LURC uses a signal compressor, such as a microprocessor coupled to the first memory, for compressing the signals stored in memory based on a statistical averaging of specific pulse widths generated in the signals.
  • a second memory coupled to the signal compressor, is provided for storing the compressed signals for later use.
  • a signal output transmitter coupled to the second memory for decompressing the compressed signals and then sending the decompressed signals to the remotely controlled apparatus for operation, completes the PURC.
  • the microprocessor is programmed to sort each signal, based on pulse time, into selected groups.
  • the microprocessor is programmed to find the average pulse time value in each group.
  • Another feature of the invention used to compress the signal is the microprocessor's ability to determine and remove from each signal header or trailer information, or both, identical for each signal before sorting the pulse widths of each signal into groups. The header or trailer information, or both, then is compressed and stored in the second memory for later use.
  • each signal is factored from, for example, a two-byte word to a one-byte word in the form of a token.
  • the pre-programmed remote control transmitter contains in memory the equivalent functional signal information to control a plurality of remotely controlled apparatuses normally controllable with the signals from an associated remote control transmitter. All signal information stored in the memory has been compressed based on a statistical averaging of specific signal pulse widths normally generated by the remote transmitters.
  • the PURC includes a signal generator, for example, a microprocessor coupled to the memory, to retrieve the compressed signal information stored in memory and to decompress the signal information.
  • the PURC includes a signal transmitter, coupled to the signal generator.
  • the PURC uses a statistical average of a preselected group of pulse widths having a given range to replace each actual signal. This statistical averaging uses the signals from all the functions keys during the grouping before determining the average value within each group.
  • a function keyboard is also provided to allow a user to operate the PURC.
  • the PURC uses compressed signals that have been removed of any header or trailer information, or both, before undergoing compression. Furthermore, the header or trailer information, or both, also is compressed and stored in the memory so that it may be recalled, decompressed and added to each decompressed signal before transmission.
  • Such an apparatus includes a detector for detecting and receiving transmitted signals from a remote control transmitter. Coupled to the detector is a temporary storage location for temporarily storing the received signals. Also provided is a signal compressor coupled to the temporary first storage location for compressing each signal based on a statistical averaging of specific pulse widths generated in the signals. Once the signals are compressed, they are stored in a learned- information storage location.
  • a permanent storage location for storing pre-programmed control information for a plurality of associated remote control transmitters also is provided. As in the case of the PURC, all the stored control information has been compressed for storage based on a statistical averaging of specific pulse time generated in the signal.
  • a signal generator coupled to the learned information storage location and the permanent storage location, retrieves the compressed signals and decompresses the signals for later transmission.
  • the CURC To transmit the signals, the CURC includes a signal transmitter, coupled to the signal generator.
  • the PURC uses compressed control signal information to operate a plurality of devices.
  • the method for compressing these signals occurs as follows. First, control signals composed of selected pulse widths from the remote control transmitter are transmitted to a receiving device and then stored in a temporary storage location. Then, the control signals are sorted in the temporary storage location according to groups of pulse widths having a given range. The control signals then are compressed based upon the pulse width groups.
  • the compression step involves determining the range of each group of pulse widths, determining the time bases of each group of pulse widths, averaging the time bases to determine an ideal pulse per group and then replacing each signal in each group with the average pulse of the group.
  • the method identifies a carrier frequency used to carry the signals transmitted by the remote control transmitter and factors each signal by the identified carrier frequency to reduce the size of each signal.
  • the method provides improved compression results just from a single activation of each key to be compressed, but improves even more by activating each function key at least twice.
  • the LURC uses a method for learning and compressing signals based on the following steps.
  • the control signals are transmitted to a signal receiver where they are received.
  • each control signal is factored to generate a new token representative of each control signal.
  • each new token is assigned to assorted groups having a given range exclusive of each other.
  • an average token value for each group is determined before replacing each token in the same group with the average token value for the group, which value is then stored for later use.
  • the compressed control signal information is compared with the transmitted control signals until a match occurs. Then, if a match occurs, the control signals are substituted with the matched compressed control signal information for more efficient management of the given limited memory.
  • FIG. 1 is a front elevation view of a programmable remote control transmitter according to the invention
  • FIG. 2 is a schematic block diagram of the programmable remote control transmitter of FIG. 1;
  • FIGs. 3A-3D illustrate histograms of the statistical compression scheme according to the present invention
  • FIG 4A is a block diagram of a compression unit of a preprogrammed URC according to the invention used to compress I/R signals for subsequent storage;
  • FIG. 4B is a flow chart illustrating the method for compressing the I/R codes for the pre-programmed remote control transmitter.
  • FIGs. 5A-5B are flowcharts illustrating the method for compressing I/R codes learned in the compression circuit of the learnable remote control transmitter.
  • I/R compression systems there are two I/R compression systems. The use of either system will depend if the compression system is used in a Learnable Universal Remote Control (LURC) or a Pre-programmed Universal Remote Control (PURC) .
  • LURC Learnable Universal Remote Control
  • PURC Pre-programmed Universal Remote Control
  • CURC Combined Universal Remote Controls (controller 10 in FIG. 1), which contain both Pre-programmed Codes and learning functions, use elements of both compression methods.
  • FIG. 1 illustrates a transmitter unit 10 having a display 12, which may, for example, be an LCD display, and a plurality of input keys.
  • Display 12 is divided into three areas.
  • the primary area 14 displays eight alphanumeric characters in conventional matrix form. Each character may, for example, be formed from a selected plurality of fourteen (14) display segments.
  • alphanumeric characters 14 is printed a plurality of functions and below the alphanumeric display is printed a plurality of device indications.
  • a separate, selectively illuminable light source such as an LCD, is positioned under each function indication and under each device indication. The manner in which the function indications or annunciators and the device indications or annunciators are selectively illuminated will be described hereinafter. If additional illumination is required for display 12 under low ambient light conditions, a bulb or other suitable light source may be provided which may be switched on as needed.
  • transmitter 10 also has an area 15 containing keys that are normally used in the Run mode to operate a device, which keys are normally accessible, and an area 17 containing special function keys used for such things as the Learn mode, setting of the clock and timers, which area may be normally covered to prevent tampering by children and others.
  • Area 15 has a light 16, which may be a light emitting diode, lamp, or other suitable electrically controlled source of light that is enabled when the system is in its Learn mode and is illuminated when the I/R transmitter of the source controller is suitably positioned with respect to the I/R receiver of controller 10 so as to permit learning of the transmitted codes.
  • Light 16 will not be on during the learning mode if the two controllers are too far apart, or are not sufficiently aligned so as to permit accurate receipt of the transmitted I/R codes.
  • Transmitter 10 has a plurality of keys in area 15 and 17, some of which may be programmed to perform a desired function and some of which are dedicated to a particular function.
  • the dedicated keys include select keys 18A and 18B, which may be used, as will be described later, to select various devices or functions, channel keys 20A and 2OB, which may be used to step either down or up respectively to select a desired channel, station, or the like for a particular device being controlled, and volume controls 22A and 22B, which may be used to lower or increase the sound volume of a controlled device.
  • the remaining keys having dedicated functions are in area 17 and include a wait/timer 24, a clock control key 26, an on/off key 28, a set/store key 30, down cursor key 32, up cursor key 34, insert key 36, and delete key 38.
  • Area 17 also includes run/learn switch 40, the setting of which determines whether the controller is operating in its Run mode or Learn mode.
  • Area 15 also has a plurality of programmable keys, each of which may either perform the function printed on the key or may be programmed to perform another function that a user may indicate in the blank space appearing above the key.
  • Above the select keys 18 are two keys 42 and 44, which may function as a mute key, and a power key, respectively.
  • keys 22 may also be programmed to perform other functions in a manner to be described hereinafter.
  • volume keys 22 there are ten keys, which are nominally indicated as number pads to be used, for example, for channel selection.
  • key 46 which is designated as the "preset” key and the function of which will be described hereinafter.
  • any of these keys may be programmed to perform such function for such device and such function may be marked in the blank space above the key.
  • transmitter 10 includes a SET Remote key 54, which is used to set the remote memory while in the "Learn” mode, or to set the memory when recalling remote control codes from a pre-programmed code library stored in the system's long term memory (FIG. 2) when in the "Pre-Programmed” mode. Both functions are discussed in greater detail below.
  • FIG. 2 is a functional block diagram of the transmitter 10 of this invention.
  • the transmitter includes a microprocessor 100 (MPU) , which has a plurality of built-in timers 102.
  • a microprocessor suitable for practicing the teachings of this invention is a model MC68HC05C4 manufactured by Motorola Semiconductor Products, Inc.
  • One input to microprocessor 100 and the timers thereof is a clock input from clock circuit 104 over the line 106.
  • Clock 104 may be a standard timing circuit generating clock pulses at a predetermined frequency, for example, eight pulses per second.
  • a second input to microprocessor 100 is keyboard 108 over lines 110.
  • Keyboard 108 includes both sections 15 and 17 shown in FIG. 1. Among other keys, keyboard 108 includes the preset key 46.
  • a third input to microprocessor 100 is RAM (Random Access Memory) 112, which is used to store the infrared (I/R) codes learned by the controller during the Learn mode. These codes are compressed in, for example, the manner discussed below in order to minimize storage requirements. Compressed codes are transferred between RAM 112 and microprocessor 100 over lines 114.
  • I/R infrared
  • a fourth input to microprocessor 100 is over lines 116 from I/R input circuit 118.
  • Circuit 118 receives I/R codes from an I/R receiver 120 over lines 122.
  • Infrared receiver 120 may, for example, be positioned on the bottom of controller 10 as viewed in FIG. 1.
  • I/R input circuit 118 also serves as an input to I/R learn range indicator circuit 124, which in turn operates the range indicator light 16.
  • Circuit 124 basically accepts the I/R input signal and, if this signal exceeds a predetermined threshold, is operative to energize the range indicator light.
  • microprocessor 100 In addition to providing outputs to RAM 112, microprocessor 100 also energizes the LCD display 12 through lines 120 display control 130 and lines 132. The final output from microprocessor 100 is an output over lines 134 to I/R output circuit 136. Circuit 136 controls I/R transmitter 138 over lines 140. Since transmitter 10 is intended to operate two or more devices, which devices may be spaced at some distance from each other, transmitter 138 is more powerful than in standard I/R controllers and in particular consists of a pair of I/R emitting diodes to assure adequate output power. I/R transmitters 138 are located at the top of controller 10 as viewed in FIG. 1 in the area generally indicated by arrow 138'.
  • I/R code storage read only memory (ROM) 142 over lines 144.
  • I/R memory 142 stores the I/R code for a multitude of commercial remote controls, which are pre-programmed into memory 142 at the factory. The codes are accessed by entering an identification number, typically a three digit number, into the remote during the set operation, and then transferring the I/R code information from memory 142 to memory 112. The I/R codes stored in memory 142 are pre-compressed and are stored in memory 112 in the same compressed format.
  • a final input to microprocessor 100 is compression circuit 146 via lines 148.
  • Compression circuit 146 includes an internal memory 150.
  • the compression circuit 146 is used during the Learn mode to compress the I/R codes before storing them in memory 112.
  • Internal memory 150 is used to store the code information temporarily before compression.
  • elements 112, 130, 142, 146 and 150 are shown to be separate and discrete from microprocessor 100, they all or a portion of them may alternatively be incorporated as part of the microprocessor.
  • the controller When the controller is first powered by, for example, inserting batteries therein, there are no I/R commands stored in RAM 112 and the clock in microprocessor 100 has not been set. At this time, the microprocessor 100 goes through a diagnostic check based on a program stored in ROM to check each component and verify that they are all in proper working order. If a problem is detected, an error message is flashed on the display 12 to inform the user of the problem. If there is no problem with the controller, the system begins an inquiry with the user for setting the internal timers by setting the working clock, which is in a default condition with a setting of "01:00 MO AM.” The clock consists of 3 two-character fields of the alphanumeric display 14.
  • the first two of these characters indicate the hour
  • the second two of these characters indicate the minute
  • the third two of these characters indicate the day of the week.
  • Either the AM or the PM function annunciator is illuminated above the alphanumeric characters.
  • An example of how the timer is set is illustrated in U.S. Patent No. 4,825,200, to Evans, et al., assigned to the assignee of this invention and herein incorporated by reference for all purposes.
  • the next step in the operation is to store I/R codes in the I/R code storage RAM 112.
  • the first step in this operation is to operate select keys 18A and 18B to cause the annunciator for the device to be learned to be illuminated.
  • keys 18A and 18B would be operated to cause the leftmost annunciator of the device annunciators, the TV annunciator, to be illuminated.
  • the next step in the operation is to set run/learn switch 40 to the learn position. If desired, this step can be performed before the device is selected. With the run/learn switch in the learn position, the learn annunciator and the I/R annunciators of the function annunciators are illuminated. Display 14 shows the message SEL KEY.
  • the next step in the operation is to point the I/R transmitter of the source controller (not shown) , in this case the controller for the TV, at the I/R receiver 120 of transmitter 10 and to depress the function key on the source transmitter for the function to be learned.
  • the user would press the on/off button of the TV controller while holding this controller with its I/R transmitter facing the I/R receiver of transmitter 10.
  • the units would be moved relative to each other until range indicator light 16 is brightly illuminated. As long as light 16 is brightly illuminated, the two controllers are within proper range of each other and are aligned for learning.
  • the user would release the button on the source controller.
  • the user then presses the key in area 15 of transmitter 10 that is to control the particular function for the particular device.
  • the user might press power button 44 on transmitter 10 at this time.
  • display 14 will show the message BEGIN.
  • the user presses the on-off button on the TV controller to input the I/R code to transmitter 10.
  • the key should remain depressed until the display on the transmitter 10 shows the message STORED. At this time, the key may be released in the normal manner.
  • the display will again show the message SEL KEY.
  • the new key on the controller 10 may be pressed, causing the BEGIN message to appear on the display and a key may be pressed on the source controller causing it to output the I/R code to be learned.
  • the BEGIN message will appear on the display and storage of the I/R code may be effected by operating the desired key on the course controller. This sequence of operations may be repeated for each of the keys of the source controller until the codes for all of these keys have been stored.
  • All of the codes from a given source controller may be stored in a single learning session.
  • the set remote key 54 is pressed to begin the compression of the stored codes and then replace the uncompressed codes in memory with the newly compressed codes.
  • the display will indicate the completion of the set remote function and the run/learn switch 40 then is returned to the run position. When this is done, the display will change to show the current clock time.
  • controller 10 If at any time during the storage operation, controller 10, and in particular microprocessor 100 thereof, detects that an invalid code has been received, an ERROR message will flash on display 14. An attempt may then be made to reenter the last code. When this is done, care should be exercised to assure that the two controllers are properly spaced and aligned so as to cause the I/R learn range indicator light 16 to be fully illuminated.
  • the microprocessor is, however, only capable of detecting invalid codes, and it is possible that an erroneous valid code may in fact be stored. The only way of determining this is by testing the controller to assure that it performed the desired function on the selected device when the key selected on controller 10 is operated.
  • microprocessor 100 compresses these codes according to the set remote function, utilizing the compression system detailed below, before storing the information in RAM 112.
  • microprocessor 100 decompresses the stored information to obtain the original I/R code.
  • the process described above may be repeated for the I/R controller of a second device. This process is initiated by using select keys 18A and 18B to select the device in the manner previously discussed, moving run/learn switch 40 to its learn position, and then repeating the steps previously discussed to store the I/R codes for the new device.
  • the same key may be utilized to perform the same or different functions for two different devices.
  • the second device is a VCR
  • key 44 may also be designated as the power or on/off key for this device.
  • a key such as key 50 may be used for brightness control on the TV while being used to perform the rewind function for the VCR.
  • the user has complete discretion in determining the function to be performed by each key in conjunction with each device but, to the extent keys are performing non-standard functions for a particular device, the user should either indicate such function in the space above the particular key or record this information on an overlay or in some other standard fashion. For ease of use it is preferable that, to the extent a given function is performed for several devices, the same key be used to perform such function.
  • the user decides that he wishes to use a different key for the particular function than the key he has previously designated for such function, he may operate delete key 38 followed by the key which was previously selected for such function. This will cause the entry in RAM 112 for such function to be deleted. The function may then be reentered in the system in the manner previously discussed and stored in conjunction with the new key.
  • RAM 112 may be, for example, an (8KX8) CMOS RAM, which stores the compressed I/R codes and the timer settings.
  • 8KX8 CMOS RAM Such a memory might provide a capability of storing up to 150 I/R code settings.
  • controller.10 will have adequate capacity to store all necessary codes for at least eight (8) devices, it is possible that the memory capacity of controller 10 could be exhausted.
  • the unit will display a MEM FULL message when a learning procedure is attempted.
  • controller 10 is put in its Learn mode by moving switch 40 to the learn position. This causes the SEL KEY message to be displayed. Delete key 38 is then operated. When this is done, the display will show the ENTER message. The item to be deleted is then selected. For an I/R code, this is accomplished by pressing the key associated with that code.
  • select keys 18A and 18B it may be necessary, prior to operating such key, to operate select keys 18A and 18B to cause the appropriate device to be selected as evidenced by the annunciator for such device in display 12 being illuminated. If a key sequence is to be deleted, this is accomplished, after the operation of the delete key, by pressing preset key 46 followed by the key associated with the sequence which is to be deleted.
  • controller 10 may be utilized to control any one of the devices that it has been programmed to control.
  • Run/Learn switch 40 is set to the run position.
  • area 17 of the controller may be covered to prevent children or others from tampering with the unit. When the unit is in this condition, it normally displays the time and day of the week.
  • the first step in using the controller to control a particular device is to operate select keys 18A and/or 18B to illuminate the annunciator corresponding to the selected device.
  • the controller is then held with the I/R transmitter 138 pointed in the general direction of the device to be controlled and the key, which has been programmed for the desired function on the desired device, is operated. This causes the name of the key or function to appear on display 14 and causes the I/R code for the function to be outputted.
  • a key may be depressed to cause a second function to be performed. For example, one or more of the numbered keys may be depressed to select a channel or channel control keys 20A and/or 2OB may be operated to perform this function.
  • controller 10 While controller 10 is designed to utilize very little power from the batteries energizing it, the batteries will at some point in time wear out. When this occurs, the unit will detect the low power condition and cause the BAT LO annunciator in the upper right hand corner of display 12 to be illuminated.
  • RAM 112 is provided with power from a capacitor backup for a selected period, for example two to five minutes after batteries have been removed, to maintain the learned I/R codes and program sequences stored therein during battery replacement. If the batteries go completely dead before being replaced, or if the batteries are removed and are not replaced within the interval when the capacitor will maintain RAM 112, the stored codes will be lost and it will be necessary to reprogram the controller in the manner previously discussed before it can be used again.
  • timing pulse widths usually numbering less than 32.
  • RC remote control
  • there may be an ideal timing pulse width for each set of timing pulse widths real world implementation of these timing pulse widths usually introduces random errors that rarely allow the timing pulse width to be reproduced exactly as desired.
  • the problem of estimating each timing pulse width is handled by first determining the spread in each controller due to this random error. This is done generally by pressing a single key on the controller a multiple number of times and measuring the relative standard deviation for all the pulses. Then, the timing pulse width for all the keys are grouped into separate categories of two standard deviations and size.
  • the data are stored two dimensionally, based on Time-Base and Key Number.
  • a histogram of the two dimensional data better illustrates this effect in FIG. 3, by demonstrating groups having a two-sigma value of 5%.
  • the histogram maps the two dimensional data to one dimension.
  • Each histogram in FIGS. 3A-3C represent individual key entries of a single key; these are representative of the first key entry (FIG. 3A) , the second key entry (FIG. 3B) , and the third key entry (FIG. 3C) .
  • the histograms establish set groups 0 to 3, which preserve the timing pulse widths of the codes transmitted by the remote transmitter upon key activation.
  • Pulse durations are quantized into individual time bins.
  • the quantization resolution is typically chosen to be finer than the random error.
  • the occurrences of both "on” and “off” pulses in contiguous bins are sorted into groups. This step alone reduces the memory requirement by at least a factor of two over current compression techniques.
  • timing pulse widths in each category then are averaged together to estimate the appropriate "true" pulse widths. All of the original pulse widths in each group then are replaced with the group average. This step removes essentially all random error.
  • the procedure facilitates the recognition of these segments as being identical across keys. For some of these cases, compression ratios as high as 4 to 1 are possible by identifying and storing this information on a controller basis rather than once per key. Thus, this procedure both compresses the timing pulse width data and improves the encoding procedure by reducing random timing noise.
  • I/R compression systems there are two I/R compression systems. The use of either system will depend if the compression system is used in a Learnable Universal Remote Control (LURC) or a Pre-programmed Universal Remote Control (PURC) .
  • LURC Learnable Universal Remote Control
  • PURC Pre-programmed Universal Remote Control
  • CURC Combined Universal Remote Controls (controller 10 in FIG. 1), which contain both Pre-programmed Codes and learning functions, use elements of both compression methods.
  • the compression method used in a PURC needs the support of many bytes of memory, on the order of one (1) megabyte, for work storage (generally in the form of arrays) and the processing power of an IBM-compatible Personal Computer (PC) , which might exceed 30 MIPS, or other type processing system with similar capabilities. This allows compression ratios many times greater than that currently expected in an LURC.
  • the compression method used in a LURC is limited in memory capacity. This method works in an environment having a typical working memory of maybe less than 128 bytes in size with the processing power of a microprocessor unit (MPU) limited to less than 1 MIPS (see FIG. 2), which does not allow for efficient compression. Because of the divergent processing methods used between the two methods, there arise basic difference between the two compression methods. Yet, both compression methods start out the same and share many of the same steps.
  • MPU microprocessor unit
  • both methods input I/R data by reading the I/R light beam with an I/R receiver circuit.
  • the data are inputted, tracked and recorded, and each system also measures the I/R carrier frequency by observing the number of times the I/R beam turns off and on to measure their pulse lengths.
  • the I/R data in both methods are referenced to a time base internal to the I/R receiver.
  • Each word represents a "time count.”
  • the normal accuracy for this tirs count is 4.0000 microseconds ( ⁇ sec).
  • Each word is normally assicr ,-d an "ON” or an "OFF" time slot.
  • the very first word is an ON time.
  • the word count can be multiplied by 4 ⁇ sec, to derive the actual I/R ON time for this particular "on pulse.”
  • the second word is usually the OFF count that follows an ON count. This count can be converted into time by multiplying this count by 4 ⁇ sec.
  • the entry process stops after each key input and the I/R data for that one key is compressed.
  • the entry process stops after each key input and the I/R data for that one key is compressed.
  • all keys of the controller are learned before compression is performed, which results in a more efficient compression action than that possible in the LURC.
  • the next step for both compression methods gathers all the different words that make up the raw I/R data. Since each word actually represents time, each method is gathering together different time base data. In the PURC system, the process might be routing through almost 15,000 bytes of data. In the LURC system, the MPU will only be checking through 512 bytes. Yet both systems perform essentially the same function of identifying and gathering the different time bases.
  • the processor of the PURC system establishes a multidimensioned array and assigns all of the I/R times bases to this array. It then gathers statistical data on the separate groupings within the array and calculates the average time base points based on the time base groupings. It then installs these averaged calculations in a separate array. This new array contains all the "different" times bases that are contained within the learned controller.
  • the MPU in a LURC lacking large working memory used in the PURC method, uses other means to obtain the same results. Since the MPU cannot easily compare and test two- byte words, it precompresses the raw I/R data sufficiently enough to allow faster processing than if not precompressed.
  • the LURC method reduces any and all multi-byte words of I/R data by factoring.
  • Each time base word is analyzed and factored by a variable that depends on the time base word size. The larger the word, the larger the factor is used to reduce the word.
  • Each two byte time base is eventually represented by a one byte factored "token.”
  • tokens To illustrate the use and calculation of tokens, the following examples are provided.
  • a time base number n for example, 12,345, in hexadecimal, is divided by two (2) until n is less than sixteen (16).
  • the number of divisions D required is recorded and is ordered in a one-byte word as the most significant bit (D—).
  • the remainder R in this case 12, or C, is ordered as the least significant bit (—R) .
  • the new token is AC.
  • the new token is 4F (four divisions with a remainder of 15).
  • the position of the token in memory determines the actual time base word that it represents. For example, the first token represents the first word, while the 256th token represents the 256th word.
  • the size of the token represents the relative size of the word.
  • the MPU operates on the tokenized data. Being a single byte, the token allows the MPU to compare relative size and position more easily than if it were using the full-sized word itself.
  • the LURC process of tokenizing filters the raw data in much the same manner as the PURC process does by assigning the raw data to a multidimensional array. Instead of array groupings that identify different time bases, tokens are used to identify the different times bases. Identical tokens are assigned the same time base grouping.
  • the MPU calculates a time base averages based for each grouping. It does this by using the tokens as a road map into the raw I/R data storage area. The MPU looks for matching tokens by scanning the token area.
  • the MPU selects the first token and looks through the remainder of token memory for identical matches. When it finds a token match, it uses the token's position reference and sums the raw I/R data into a common accumulator. Once all of the matches are known, summed and counted for any one token, the MPU calculates the actual average of the time base that represents this grouping. This average is then assigned to every position in the raw I/R data area that had matching tokens. The matching tokens are no longer needed and are then removed from the token list.
  • the matching process is repeated by selecting the next token in the token list. All of the matches are totaled and the average time base is calculated on the count of matching tokens. The average time base is assigned to the raw area. The matching tokens are no longer needed and then removed from the list, with another token selected from the top of the list to repeat the process again.
  • This search, match, average, assign and remove process is repeated until there are no more valid tokens to process.
  • This process has the result of organizing a 512 byte I/R data area into, at the most, sixteen different time bases.
  • the PURC compression method recharacterizes each key pattern into a binary string series of ones and zeros. These strings of binary numbers are analyzed and compared between keys to determine common elements. Once all of the common elements are identified, they are extracted, thereby leaving generally only eight bits that are unique to any one key. This is possible since in the PURC method the PC can analyze the assorted elements and compare these elements to an extensive library of key elements.
  • a set number of transmissions type have currently been identified based on the analysis of the signals generated by a multitude of remote control transmitters.
  • the PURC method can test and fit the entire learned controller into one of these transmission types.
  • the processor then arranges the binary pieces into a very compact file.
  • This file is labeled with the I/R transmission type.
  • this file may contain one 8 bit pattern for each key and three bytes for overhead to define the transmission type and to flag anomalies.
  • this file of, for example, 33 bytes of information may represent almost 15,000 bytes of raw I/R data—a compression ratio of over 400 to 1.
  • the PURC method is able to do this to I/R data on the controller level because of several factors.
  • the biggest factor that effect such compression ratios are through the use of "decompression engines.”
  • the small, tight files that represent a single controller can be installed into an engine that satisfies all the requirements to replay the complex I/R pattern for each key.
  • the file information that was passed to the engine did not contain Time Base data. That information is already built into the engine. Instead, the file contained unique key data that the engine does not have.
  • the engine contains important parameters such as burst ON times. Logic one and zero pattern generators, header timing and more. The engine only needs to read key data and it can spin out the exact I/R pattern for any key selected.
  • the MPU in a LURC has limited processing capabilities and cannot do such high compressions.
  • key patterns may not have any resemblance between keys, the next key in the pattern, or time base, or even frequency. Accordingly, decompression engines would be useless. Instead, each key must "carry" its own timebase and frequency information. This limitation requires the MPU to use a different compression method than that used in the PURC.
  • An exemplary compression method for the LURC uses a factoring method of compressing the time bases and a bit method of representing key patterns.
  • the 512 bytes of averaged time base data are analyzed to determine if there are any repeating parts to the data. Typically, most I/R transmission patterns repeat themselves to improve accuracy.
  • the redundant or repeated data patterns can be eliminated. For example, by analyzing the raw data, the MPU may be able to remove at least two-thirds of the data due to repeating data patterns. Once the raw data have been cleared of these repeating patterns, the MPU can then start compressing the I/R pattern.
  • the raw data that make up the ON and OFF cycles of the I/R pattern are made up of time bases and are gathered by the
  • the MPU may have gathered the following table of time bases: times 4 usec is 572 ⁇ sec times 4 usec is 1.256 msec times 4 usec is 2.371 msec times 4 usec is 4.771 msec
  • the MPU sorts this list such that the smallest time base is at the top. Then, the MPU analyzes the raw data and re-sorts the time base list in a new order based on use.
  • the objective here is to place the most used time bases at the top of the list and the least used at the bottom. The reason will soon be apparent.
  • the MPU might have reordered the time bases in BACD order.
  • the MPU then assigns a position count to the time base position as follows:
  • the MPU creates a binary string based on the different time bases in the raw I/R data area. The MPU then looks at each entry in the data area and matches the time base located there to the time base list. Once a match is found, the binary number that represents the position will be assigned to the relative position of the time base.
  • the raw data area contains the following data: on off on off on off on off on off on off 592 321 143 321 143 592 321 592 321 143 592 1193
  • the MPU replaces each time base with the proper number of binary ones or zeros, depending on the position of the time base in the table. For example, if the first time base, with a count of a single one (1) during an ON time, is accessed during an OFF time, the binary value that will replace the data in the I/R data file is a single zero (0). If the third time base is referenced during an ON time, the value is replaced with three ones (111). A reference in an OFF time at the third data base number generates three zeros (000). The MPU process each time base position. This generates the following string for the above example:
  • This example illustrates how a raw I/R data file consisting of 21 bytes of data is compressed down to just 3.25 bytes, resulting in a compression ratio exceeding six to one (6 to 1) . After the RAW data has been compressed, the time base table is then factored to compress it.
  • All remote controls are generally based on some form of master timing device—usually low cost ceramic resonators and sometimes the more expensive crystal oscillators. Since dividing down from this master oscillator frequency is straight forward when working with integers, some form of divider chain is used to develop all other times within the remote control chip. Using this knowledge, the MPU is programmed to determine all timing relationships with integer subdivisions. For example, the fastest time standard in any controller is the carrier frequency or the flash pulse width. Accordingly, all other slower times within the source controller generally are integer multiples of this fastest timebase.
  • time base example it may, for example, have a carrier frequency of 35,000 (Hz) .
  • the time base list looks like this after averaging and gathering:
  • a 143 counts represent the time: 572 ⁇ sec
  • B 321 counts represent the time: 1.256 msec
  • C 592 counts represent the time: 2.371 msec
  • D 1193 counts represent the time: 4.771 msec
  • a master time standard is established for this key based on the I/R carrier frequency.
  • the MPU already knows the I/R carrier frequency. Accordingly, this 28,571 ⁇ sec and can be rounded off to 28 ⁇ sec. All other time bases will be factored by this number.
  • the upper time base list uses seven (7) bytes to represent the four times.
  • the lower time base list uses only four (4) bytes to represent the same time bases after factoring with the carrier frequency period.
  • FIG. 4A is a block diagram that illustrates an I/R code compression system 400 wherein a remote control transmitter 402 sends I/R signals to the system 400.
  • the signals are received by an I/R signal detector under control of a central processing unit 404 (CPU) .
  • CPU 404 directs the signals into storage in memory 408 either directly from I/R signal detector 404 or via CPU 406. In either case, CPU 406 also controls memory 408.
  • the CPU is programmed to perform a compression procedure as illustrated in FIG 4B. Once all the signals from transmitter 402 have been compressed, they are later stored in ROM 142 in controller 10 for the PURC portion of the controller.
  • FIG. 4B is a flow chart illustrating the compression method used to compress the I/R codes of each individual remote transmitter pre-programmed into the I/R code storage ROM 142 (see FIG. 2) of a PURC.
  • the compression method is operated after entering the I/R codes into the memory 408.
  • the procedure starts in step 412 with the CPU reading all the I/R codes received, as represented by their time base data, into a two dimensional array. Then, in step 414, the CPU determines the minimum and maximum time base data values. Afterwards, in step 416, an assorted number of groups are designated, in which each time base data is matched. A representation of these designated groups is illustrated in the histogram of FIG. 3, which is a high resolution histogram (10% of the minimum pulse width). Next, in step 418, only the non-zero elements of the histogram are saved for subsequent sorting into - a e us o s 2.5% to 10% of the average time-base, with 5% preferred.
  • step 420 stores the upper and lower values of each group into a separate array.
  • step 422 then compresses the data into separate arrays.
  • step 424 the procedure determines the number of distinct categories after the compression.
  • step 426 determines the number of time bases and averages them per category.
  • step 428 the time base data of each group is compressed by replacing the original time base data in each group with the average of the group.
  • step 430 the procedure identifies the RC codes with the identical header or trailer information, or both.
  • step 432 this information is stored only once per controller and accessed each time necessary during use of controller 10.
  • the PURC in the statistical compression procedure, for the PURC to enter all the RC codes for each key into the system before compression.
  • the alternative would be to compress each key as pressed.
  • This latter approach which is typically used in currently available universal remote control devices, does not afford the greater compression ratio obtained when using all the keys, with their associated RC codes, in establishing the best, or "true” average signal generated per key. This is especially so when specific remote controls are desired to be pre-programmed and the best or "true” average RC code is necessary to correct for transmitter signal errors such as, for example, weak batteries, low I/R energy levels, inconsistent frequency pulses, and more.
  • FIG. 5 illustrates a specific embodiment of the method used in programming an LURC.
  • the procedure is started by activating the set remote key 54 (see FIG. 1).
  • step 502 of the LURC method inputs the infrared data into the MPU, which is stored in I/R code memory 112 of MPU 10 (FIG. 2).
  • the controller determines the carrier frequency of the inputted I/R signal received in step 502. Once the carrier frequency is determined in step 506, the MPU measures the pulse length of each I/R signal received. Afterwards, in step 508, the MPU identifies all repeating portions of the I/R signal. Next, in step 510, the repeated portions are stripped from the signal.
  • the method now has a clean signal, without any redundancies, for the compression method described below.
  • the MPU determines the number of bytes of information in the signal received. Once all the bytes are determined, in step 514, the MPU gathers all the time base data. In step 516, each time base datum is factored as previously described. In step 518, the MPU sorts each factored time base datum into specific groups.
  • the MPU in step 520, sums each group and then calculates an average for the time base of the group.
  • the MPU replaces the average time base value just calculated for each time base datum in the same group.
  • each time base value is assigned a unique value based on its frequency of use. Typically, the most used time-bases are assigned at the top of the list and the less frequently used time- bases are assigned at the bottom of the list.
  • step 526 using the assigned time base value in the I/R data, a binary string based on time base value is generated (see, for example, the binary string previously illustrated).
  • step 528 once the binary string is formed, this string is divided into eight-bit (8) words.
  • step 530 each new word is stored to represent the inputted I/R signal data. This completes the process for the first compression process of the I/R signal data.
  • An additional compression step is illustrated in step 540 of FIG. 5B. This additional compression step involves factoring each time base data using the carrier frequency. By factoring out the carrier frequency, each time base datum is further compressed, thereby conserving additional memory space.
  • the MPU in step 532, then compares the newly learned signals against any and all of the precompressed RC codes. If a match is found, then, in step 534, that information in the preprogrammed position is accessed for operation with the device of the learned controller. Otherwise, in step 536, the learned information is stored in the appropriate memory location.
  • the end-user should press each key at least three times to provide a better statistical analysis for the compression procedure just described.
  • the procedure is designed to provide improved results with just a single key entry per key.
  • circuitry and programming has been described above for performing the various functions of this invention, such circuitry and programming is for illustration purposes only and the invention may be practiced using other suitable circuitry and/or programming.
  • circuitry and programming is for illustration purposes only and the invention may be practiced using other suitable circuitry and/or programming.
  • the invention has been particularly shown and described above with reference to a preferred embodiment, the foregoing and other changes in form and detail may be made therein without departing from the spirit and scope of the invention.

Abstract

A reconfigurable, pre-programmed universal remote control (URC) transmitter (10) is disclosed that has the ability to learn, recall, store, and repeat the remote control codes from any other infrared transmitter, either learned or pre-programmed. In order to accommodate the largest variety of remote control transmitters available, and to accommodate any transmitter not initially pre-programmed, a compression procedure is used to maximize the memory constraints typically found in commercial URC transmitters. The compression procedure uses a statistical analysis of all the remote control (RC) codes entered for all the keys of a specific remote control transmitter. The signal frequency of each code is determined (502), and an average of each code is then calculted based on the signal frequency (520). RC codes then are compressed by replacing the original RC codes with the best average RC code (522), as determined in the statistical analysis.

Description

r* PRE-PROGRAMMED UNIVERSAL REMOTE CONTROL METHOD AND APPARATUS WITH LEARNING CAPABIL
BACKGROUND OF THE INVENTION
B.
The present invention relates generally to universal remote controls, and more specifically, it relates to universal remote control systems using signal compression techniques for storing either pre-programmed information or learnable information or both.
Universal remote control (URC) systems are well known in the arts. Typically, a URC is used to control the operation of more than one device. Typically, these devices are entertainment- type systems such as televisions, VCRs, stereo systems, and the like. These URCs are either programmable, learnable, or a combination of the two.
Typically, ]earnable remote controls can store in memory all the signal codes ..f a specific remote control by individually entering the data into the memory of the URC. Since the operator may have upwards of five or more remote controls, with each remote control having upwards of forty or more keys, and wherein each key may require up to 512 bytes of information, a great amount of memory is necessary in a learnable remote control to accommodate all the various remotes desired by the user. In addition, it is time consuming for the user to program each remote control into the URC.
Some of the problems existing in the use of learnable remote controls include miskeying m keys, misalignment during recording, or too weak a signal due to weak batteries in the source remote. Also, it is time intensive to key individually each key into the URC, register and then verify each key to be sure that it had been received and is associated with the corresponding key in
0. the source remote.
A solution to the above problems is to store or pre÷ program all the given code information of a remote control in a permanent memory location in a URC, such as a read only memory (ROM) . This allows a user to enter a code corresponding to the specific remote control desired to be used, thereby accessing all the necessary data in the URC. One problem with pre-programmed remote controls is that they typically need large amounts of memory in order to store the control information of a vast majority of commercially available remote controls. Memory is expensive and limits the number of remote control codes that can be stored in any given URC. Although the use of the URC has been greatly simplified by eliminating the need to pre-program each individual key for each separate remote control used by the user, not all remote control transmitters available can be pre-programmed into each URC; therefore, the user must acquire an additional URC that includes the codes of the desired remote control.
A solution to the problems of using a pre-programmed URC remote control is to add learnable functions. However, the same problems of programming the URC exists as they did for the learnable remote. More importantly, the need for memory is increased, since added memory is used for both the pre-programmed section and the learnable section of the URC.
Therefore, what is needed is an improved learnable or pre-programmed URC, or both, having a limited memory but capable of storing more codes from a greater number of remote controls than before.
SUMMARY OF THE INVENTION
In order to accommodate the largest variety of remote control transmitters available, and to accommodate any transmitter not initially pre-programmed, a method of compression is used to maximize the memory constraints typically found in commercial URC transmitters. The compression procedure uses a statistical analysis of all the remote control (RC) codes entered for all the keys of a specific remote control transmitter. The frequency of each code is determined, and an average of each code is then calculated based on the signal frequency. RC codes then are compressed by replacing the original RC codes with the best average RC code, as determined in the statistical analysis.
The reconfigurable, or learnable URC has the ability to learn, recall, store, and repeat the remote control codes from any other infrared transmitter, while the pre-programmed URC has the ability to recall and repeat the remote control codes from an assorted number of remote controls preprogrammed into the URC. Both units can be combined into a single URC device that is capable of learning unprogrammed remote control transmitters, as well as operating devices of associated remote control transmitters preprogrammed in the URC.
The learnable universal remote control (LURC) is usable with a plurality of remotely controlled apparatuses controllable with signals transmitted from an associated remote control transmitter. Each LURC includes a detector for detecting and receiving, when the LURC is in a learning mode of operation, signals transmitted from a remote control transmitter normally used to operate an associated remotely controlled apparatus. Also provided is a first memory coupled to the detector for temporarily storing the received signals. The LURC uses a signal compressor, such as a microprocessor coupled to the first memory, for compressing the signals stored in memory based on a statistical averaging of specific pulse widths generated in the signals. A second memory, coupled to the signal compressor, is provided for storing the compressed signals for later use. Finally, a signal output transmitter, coupled to the second memory for decompressing the compressed signals and then sending the decompressed signals to the remotely controlled apparatus for operation, completes the PURC.
To carry out the compression process desired to reduce the signals, the microprocessor is programmed to sort each signal, based on pulse time, into selected groups. The microprocessor is programmed to find the average pulse time value in each group. Another feature of the invention used to compress the signal is the microprocessor's ability to determine and remove from each signal header or trailer information, or both, identical for each signal before sorting the pulse widths of each signal into groups. The header or trailer information, or both, then is compressed and stored in the second memory for later use. To reduce the size of each signal before being sorted into pulse time groups, each signal is factored from, for example, a two-byte word to a one-byte word in the form of a token.
The pre-programmed remote control transmitter (PURC) contains in memory the equivalent functional signal information to control a plurality of remotely controlled apparatuses normally controllable with the signals from an associated remote control transmitter. All signal information stored in the memory has been compressed based on a statistical averaging of specific signal pulse widths normally generated by the remote transmitters. Besides the memory, the PURC includes a signal generator, for example, a microprocessor coupled to the memory, to retrieve the compressed signal information stored in memory and to decompress the signal information. To transmit the decompressed signal information for operating the desired apparatus, the PURC includes a signal transmitter, coupled to the signal generator.
Like the compression method used in the LURC, the PURC uses a statistical average of a preselected group of pulse widths having a given range to replace each actual signal. This statistical averaging uses the signals from all the functions keys during the grouping before determining the average value within each group. A function keyboard is also provided to allow a user to operate the PURC.
Just as in the method used in the LURC, the PURC uses compressed signals that have been removed of any header or trailer information, or both, before undergoing compression. Furthermore, the header or trailer information, or both, also is compressed and stored in the memory so that it may be recalled, decompressed and added to each decompressed signal before transmission.
Both capabilities of the LURC and the PURC may be combined in a single unit to provide a combination learnable and preprogrammed URC (CURC) . Such an apparatus includes a detector for detecting and receiving transmitted signals from a remote control transmitter. Coupled to the detector is a temporary storage location for temporarily storing the received signals. Also provided is a signal compressor coupled to the temporary first storage location for compressing each signal based on a statistical averaging of specific pulse widths generated in the signals. Once the signals are compressed, they are stored in a learned- information storage location.
A permanent storage location for storing pre-programmed control information for a plurality of associated remote control transmitters also is provided. As in the case of the PURC, all the stored control information has been compressed for storage based on a statistical averaging of specific pulse time generated in the signal. A signal generator, coupled to the learned information storage location and the permanent storage location, retrieves the compressed signals and decompresses the signals for later transmission.
To transmit the signals, the CURC includes a signal transmitter, coupled to the signal generator.
As briefly described earlier, the PURC uses compressed control signal information to operate a plurality of devices. According to the invention, the method for compressing these signals occurs as follows. First, control signals composed of selected pulse widths from the remote control transmitter are transmitted to a receiving device and then stored in a temporary storage location. Then, the control signals are sorted in the temporary storage location according to groups of pulse widths having a given range. The control signals then are compressed based upon the pulse width groups. The compression step involves determining the range of each group of pulse widths, determining the time bases of each group of pulse widths, averaging the time bases to determine an ideal pulse per group and then replacing each signal in each group with the average pulse of the group.
Furthermore, the method identifies a carrier frequency used to carry the signals transmitted by the remote control transmitter and factors each signal by the identified carrier frequency to reduce the size of each signal. The method provides improved compression results just from a single activation of each key to be compressed, but improves even more by activating each function key at least twice.
The LURC uses a method for learning and compressing signals based on the following steps. The control signals are transmitted to a signal receiver where they are received. Then, each control signal is factored to generate a new token representative of each control signal. Afterwards, each new token is assigned to assorted groups having a given range exclusive of each other. Next, an average token value for each group is determined before replacing each token in the same group with the average token value for the group, which value is then stored for later use.
If the learnable method is incorporated in a CURC, the compressed control signal information is compared with the transmitted control signals until a match occurs. Then, if a match occurs, the control signals are substituted with the matched compressed control signal information for more efficient management of the given limited memory.
BRIEF DESCRIPTION OF THE DRAWINGS
The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of a preferred embodiment as illustrated in the accompanying drawings.
FIG. 1 is a front elevation view of a programmable remote control transmitter according to the invention;
FIG. 2 is a schematic block diagram of the programmable remote control transmitter of FIG. 1;
FIGs. 3A-3D illustrate histograms of the statistical compression scheme according to the present invention;
FIG 4A is a block diagram of a compression unit of a preprogrammed URC according to the invention used to compress I/R signals for subsequent storage;
FIG. 4B is a flow chart illustrating the method for compressing the I/R codes for the pre-programmed remote control transmitter; and
FIGs. 5A-5B are flowcharts illustrating the method for compressing I/R codes learned in the compression circuit of the learnable remote control transmitter.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
According to the invention, there are two I/R compression systems. The use of either system will depend if the compression system is used in a Learnable Universal Remote Control (LURC) or a Pre-programmed Universal Remote Control (PURC) . Combined Universal Remote Controls (CURC) (controller 10 in FIG. 1), which contain both Pre-programmed Codes and learning functions, use elements of both compression methods.
FIG. 1 illustrates a transmitter unit 10 having a display 12, which may, for example, be an LCD display, and a plurality of input keys. Display 12 is divided into three areas. The primary area 14 displays eight alphanumeric characters in conventional matrix form. Each character may, for example, be formed from a selected plurality of fourteen (14) display segments.
Above alphanumeric characters 14 is printed a plurality of functions and below the alphanumeric display is printed a plurality of device indications. A separate, selectively illuminable light source, such as an LCD, is positioned under each function indication and under each device indication. The manner in which the function indications or annunciators and the device indications or annunciators are selectively illuminated will be described hereinafter. If additional illumination is required for display 12 under low ambient light conditions, a bulb or other suitable light source may be provided which may be switched on as needed.
In addition to display 12, transmitter 10 also has an area 15 containing keys that are normally used in the Run mode to operate a device, which keys are normally accessible, and an area 17 containing special function keys used for such things as the Learn mode, setting of the clock and timers, which area may be normally covered to prevent tampering by children and others. Area 15 has a light 16, which may be a light emitting diode, lamp, or other suitable electrically controlled source of light that is enabled when the system is in its Learn mode and is illuminated when the I/R transmitter of the source controller is suitably positioned with respect to the I/R receiver of controller 10 so as to permit learning of the transmitted codes. Light 16 will not be on during the learning mode if the two controllers are too far apart, or are not sufficiently aligned so as to permit accurate receipt of the transmitted I/R codes.
Transmitter 10 has a plurality of keys in area 15 and 17, some of which may be programmed to perform a desired function and some of which are dedicated to a particular function. The dedicated keys include select keys 18A and 18B, which may be used, as will be described later, to select various devices or functions, channel keys 20A and 2OB, which may be used to step either down or up respectively to select a desired channel, station, or the like for a particular device being controlled, and volume controls 22A and 22B, which may be used to lower or increase the sound volume of a controlled device. The remaining keys having dedicated functions are in area 17 and include a wait/timer 24, a clock control key 26, an on/off key 28, a set/store key 30, down cursor key 32, up cursor key 34, insert key 36, and delete key 38. Area 17 also includes run/learn switch 40, the setting of which determines whether the controller is operating in its Run mode or Learn mode. Area 15 also has a plurality of programmable keys, each of which may either perform the function printed on the key or may be programmed to perform another function that a user may indicate in the blank space appearing above the key. Above the select keys 18 are two keys 42 and 44, which may function as a mute key, and a power key, respectively. However, if desired, these keys may also be programmed to perform other functions in a manner to be described hereinafter. Below volume keys 22, there are ten keys, which are nominally indicated as number pads to be used, for example, for channel selection. There also is a key 46, which is designated as the "preset" key and the function of which will be described hereinafter. The remaining keys are shown labelled with common controller functions such as, for example, "sequence," "rewind," "play," "stop," "fast forward," "record," "pause," "cancel," "auxiliary" and "TV/VCR." However, if a function is required for a particular device being controlled and which is not reflected on the controller keyboard, any of these keys may be programmed to perform such function for such device and such function may be marked in the blank space above the key.
Lastly, transmitter 10 includes a SET Remote key 54, which is used to set the remote memory while in the "Learn" mode, or to set the memory when recalling remote control codes from a pre-programmed code library stored in the system's long term memory (FIG. 2) when in the "Pre-Programmed" mode. Both functions are discussed in greater detail below.
FIG. 2 is a functional block diagram of the transmitter 10 of this invention. The transmitter includes a microprocessor 100 (MPU) , which has a plurality of built-in timers 102. A microprocessor suitable for practicing the teachings of this invention is a model MC68HC05C4 manufactured by Motorola Semiconductor Products, Inc. One input to microprocessor 100 and the timers thereof is a clock input from clock circuit 104 over the line 106. Clock 104 may be a standard timing circuit generating clock pulses at a predetermined frequency, for example, eight pulses per second.
A second input to microprocessor 100 is keyboard 108 over lines 110. Keyboard 108 includes both sections 15 and 17 shown in FIG. 1. Among other keys, keyboard 108 includes the preset key 46. A third input to microprocessor 100 is RAM (Random Access Memory) 112, which is used to store the infrared (I/R) codes learned by the controller during the Learn mode. These codes are compressed in, for example, the manner discussed below in order to minimize storage requirements. Compressed codes are transferred between RAM 112 and microprocessor 100 over lines 114.
A fourth input to microprocessor 100 is over lines 116 from I/R input circuit 118. Circuit 118 receives I/R codes from an I/R receiver 120 over lines 122. Infrared receiver 120 may, for example, be positioned on the bottom of controller 10 as viewed in FIG. 1. I/R input circuit 118 also serves as an input to I/R learn range indicator circuit 124, which in turn operates the range indicator light 16. Circuit 124 basically accepts the I/R input signal and, if this signal exceeds a predetermined threshold, is operative to energize the range indicator light.
In addition to providing outputs to RAM 112, microprocessor 100 also energizes the LCD display 12 through lines 120 display control 130 and lines 132. The final output from microprocessor 100 is an output over lines 134 to I/R output circuit 136. Circuit 136 controls I/R transmitter 138 over lines 140. Since transmitter 10 is intended to operate two or more devices, which devices may be spaced at some distance from each other, transmitter 138 is more powerful than in standard I/R controllers and in particular consists of a pair of I/R emitting diodes to assure adequate output power. I/R transmitters 138 are located at the top of controller 10 as viewed in FIG. 1 in the area generally indicated by arrow 138'.
A fifth input to microprocessor 100 is I/R code storage read only memory (ROM) 142 over lines 144. I/R memory 142 stores the I/R code for a multitude of commercial remote controls, which are pre-programmed into memory 142 at the factory. The codes are accessed by entering an identification number, typically a three digit number, into the remote during the set operation, and then transferring the I/R code information from memory 142 to memory 112. The I/R codes stored in memory 142 are pre-compressed and are stored in memory 112 in the same compressed format.
A final input to microprocessor 100 is compression circuit 146 via lines 148. Compression circuit 146 includes an internal memory 150. The compression circuit 146 is used during the Learn mode to compress the I/R codes before storing them in memory 112. Internal memory 150 is used to store the code information temporarily before compression.
Although elements 112, 130, 142, 146 and 150 are shown to be separate and discrete from microprocessor 100, they all or a portion of them may alternatively be incorporated as part of the microprocessor.
Operation
When the controller is first powered by, for example, inserting batteries therein, there are no I/R commands stored in RAM 112 and the clock in microprocessor 100 has not been set. At this time, the microprocessor 100 goes through a diagnostic check based on a program stored in ROM to check each component and verify that they are all in proper working order. If a problem is detected, an error message is flashed on the display 12 to inform the user of the problem. If there is no problem with the controller, the system begins an inquiry with the user for setting the internal timers by setting the working clock, which is in a default condition with a setting of "01:00 MO AM." The clock consists of 3 two-character fields of the alphanumeric display 14. The first two of these characters indicate the hour, the second two of these characters indicate the minute, and the third two of these characters indicate the day of the week. Either the AM or the PM function annunciator is illuminated above the alphanumeric characters. An example of how the timer is set is illustrated in U.S. Patent No. 4,825,200, to Evans, et al., assigned to the assignee of this invention and herein incorporated by reference for all purposes.
Learn I/R Codes
The next step in the operation is to store I/R codes in the I/R code storage RAM 112. The first step in this operation is to operate select keys 18A and 18B to cause the annunciator for the device to be learned to be illuminated. Thus, if the codes from the I/R controller for a TV are to be learned, keys 18A and 18B would be operated to cause the leftmost annunciator of the device annunciators, the TV annunciator, to be illuminated.
The next step in the operation is to set run/learn switch 40 to the learn position. If desired, this step can be performed before the device is selected. With the run/learn switch in the learn position, the learn annunciator and the I/R annunciators of the function annunciators are illuminated. Display 14 shows the message SEL KEY.
The next step in the operation is to point the I/R transmitter of the source controller (not shown) , in this case the controller for the TV, at the I/R receiver 120 of transmitter 10 and to depress the function key on the source transmitter for the function to be learned. Thus, if the first function on the TV controller to be learne is the on/off function, the user would press the on/off button of the TV controller while holding this controller with its I/R transmitter facing the I/R receiver of transmitter 10. The units would be moved relative to each other until range indicator light 16 is brightly illuminated. As long as light 16 is brightly illuminated, the two controllers are within proper range of each other and are aligned for learning.
At this point, the user would release the button on the source controller. The user then presses the key in area 15 of transmitter 10 that is to control the particular function for the particular device. Assuming, for example, that the on/off button of the TV controller is to be learned, the user might press power button 44 on transmitter 10 at this time. When the button on transmitter 10 is depressed, display 14 will show the message BEGIN. Now the user presses the on-off button on the TV controller to input the I/R code to transmitter 10. The key should remain depressed until the display on the transmitter 10 shows the message STORED. At this time, the key may be released in the normal manner.
If a new key is not pressed on the source controller within preset time, such as, for example, three seconds, the display will again show the message SEL KEY. At this point, the new key on the controller 10 may be pressed, causing the BEGIN message to appear on the display and a key may be pressed on the source controller causing it to output the I/R code to be learned. If a key on the controller 10 is pressed before the three-second interval has passed, the BEGIN message will appear on the display and storage of the I/R code may be effected by operating the desired key on the course controller. This sequence of operations may be repeated for each of the keys of the source controller until the codes for all of these keys have been stored. All of the codes from a given source controller may be stored in a single learning session. When all of the codes for a given controller have been stored, the set remote key 54 is pressed to begin the compression of the stored codes and then replace the uncompressed codes in memory with the newly compressed codes. After the set remote function has finished compressing the codes, the display will indicate the completion of the set remote function and the run/learn switch 40 then is returned to the run position. When this is done, the display will change to show the current clock time.
If at any time during the storage operation, controller 10, and in particular microprocessor 100 thereof, detects that an invalid code has been received, an ERROR message will flash on display 14. An attempt may then be made to reenter the last code. When this is done, care should be exercised to assure that the two controllers are properly spaced and aligned so as to cause the I/R learn range indicator light 16 to be fully illuminated. The microprocessor is, however, only capable of detecting invalid codes, and it is possible that an erroneous valid code may in fact be stored. The only way of determining this is by testing the controller to assure that it performed the desired function on the selected device when the key selected on controller 10 is operated.
As previously indicated, since the received I/R codes have a certain amount of redundancy, microprocessor 100 compresses these codes according to the set remote function, utilizing the compression system detailed below, before storing the information in RAM 112. When one of the codes stored in RAM 112 is to be utilized, microprocessor 100 decompresses the stored information to obtain the original I/R code. When all of the codes for a given device have been stored, the process described above may be repeated for the I/R controller of a second device. This process is initiated by using select keys 18A and 18B to select the device in the manner previously discussed, moving run/learn switch 40 to its learn position, and then repeating the steps previously discussed to store the I/R codes for the new device. It is noted that the same key may be utilized to perform the same or different functions for two different devices. Thus, if, for example, the second device is a VCR, key 44 may also be designated as the power or on/off key for this device. However, a key such as key 50 may be used for brightness control on the TV while being used to perform the rewind function for the VCR. The user has complete discretion in determining the function to be performed by each key in conjunction with each device but, to the extent keys are performing non-standard functions for a particular device, the user should either indicate such function in the space above the particular key or record this information on an overlay or in some other standard fashion. For ease of use it is preferable that, to the extent a given function is performed for several devices, the same key be used to perform such function.
If at any time while entering codes for a device into controller 10, the user decides that he wishes to use a different key for the particular function than the key he has previously designated for such function, he may operate delete key 38 followed by the key which was previously selected for such function. This will cause the entry in RAM 112 for such function to be deleted. The function may then be reentered in the system in the manner previously discussed and stored in conjunction with the new key.
Deleting Entries from Memory
For an illustrative embodiment of the invention, RAM 112 may be, for example, an (8KX8) CMOS RAM, which stores the compressed I/R codes and the timer settings. Such a memory might provide a capability of storing up to 150 I/R code settings.
Thus, while in most situations controller.10 will have adequate capacity to store all necessary codes for at least eight (8) devices, it is possible that the memory capacity of controller 10 could be exhausted. When this occurs, the unit will display a MEM FULL message when a learning procedure is attempted. When this occurs, it is possible to gain storage space by using the delete function to remove stored I/R codes that are no longer of interest to the user. Any time it is desired to delete one or more entries from memory 112, controller 10 is put in its Learn mode by moving switch 40 to the learn position. This causes the SEL KEY message to be displayed. Delete key 38 is then operated. When this is done, the display will show the ENTER message. The item to be deleted is then selected. For an I/R code, this is accomplished by pressing the key associated with that code. It may be necessary, prior to operating such key, to operate select keys 18A and 18B to cause the appropriate device to be selected as evidenced by the annunciator for such device in display 12 being illuminated. If a key sequence is to be deleted, this is accomplished, after the operation of the delete key, by pressing preset key 46 followed by the key associated with the sequence which is to be deleted.
Once an item has been deleted, the display will again show a SEL KEY message. Each I/R code must be individually deleted from memory 112.
Normal Use
Once controller 10 has been programmed, it may be utilized to control any one of the devices that it has been programmed to control. To use the controller, Run/Learn switch 40 is set to the run position. If desired, area 17 of the controller may be covered to prevent children or others from tampering with the unit. When the unit is in this condition, it normally displays the time and day of the week.
The first step in using the controller to control a particular device is to operate select keys 18A and/or 18B to illuminate the annunciator corresponding to the selected device. The controller is then held with the I/R transmitter 138 pointed in the general direction of the device to be controlled and the key, which has been programmed for the desired function on the desired device, is operated. This causes the name of the key or function to appear on display 14 and causes the I/R code for the function to be outputted. When the first function for the device, such as turning it on, has been completed, a key may be depressed to cause a second function to be performed. For example, one or more of the numbered keys may be depressed to select a channel or channel control keys 20A and/or 2OB may be operated to perform this function.
If at any time a key is operated for which an I/R code has not been stored in RAM 112 for the selected device, there will be no I/R output from the device and an ERROR message appears on display 14 for a predetermined time duration, for example, three seconds. At the end of this time period, the display returns to the standard time and day display. If the cancel key is pressed during the three-second interval, the ERROR message is canceled and the standard time and day message appears.
While controller 10 is designed to utilize very little power from the batteries energizing it, the batteries will at some point in time wear out. When this occurs, the unit will detect the low power condition and cause the BAT LO annunciator in the upper right hand corner of display 12 to be illuminated. As will be discussed in greater detail hereinafter, RAM 112 is provided with power from a capacitor backup for a selected period, for example two to five minutes after batteries have been removed, to maintain the learned I/R codes and program sequences stored therein during battery replacement. If the batteries go completely dead before being replaced, or if the batteries are removed and are not replaced within the interval when the capacitor will maintain RAM 112, the stored codes will be lost and it will be necessary to reprogram the controller in the manner previously discussed before it can be used again.
Compression Systems and Methods
In order to comprehend the advantages of the present invention better, it is necessary to understand how most controllers operate. Generally, most controllers use a small set of true (but unknown) timing pulse widths, or remote control (RC) codes, usually numbering less than 32. Although there may be an ideal timing pulse width for each set of timing pulse widths, real world implementation of these timing pulse widths usually introduces random errors that rarely allow the timing pulse width to be reproduced exactly as desired. The problem of estimating each timing pulse width is handled by first determining the spread in each controller due to this random error. This is done generally by pressing a single key on the controller a multiple number of times and measuring the relative standard deviation for all the pulses. Then, the timing pulse width for all the keys are grouped into separate categories of two standard deviations and size.
The data are stored two dimensionally, based on Time-Base and Key Number. A histogram of the two dimensional data better illustrates this effect in FIG. 3, by demonstrating groups having a two-sigma value of 5%. The histogram maps the two dimensional data to one dimension. Each histogram in FIGS. 3A-3C represent individual key entries of a single key; these are representative of the first key entry (FIG. 3A) , the second key entry (FIG. 3B) , and the third key entry (FIG. 3C) . Of course, more key entries are possible and are represented in the statistical grouping scheme illustrated in FIG. 3D. The histograms establish set groups 0 to 3, which preserve the timing pulse widths of the codes transmitted by the remote transmitter upon key activation. Pulse durations are quantized into individual time bins. The quantization resolution is typically chosen to be finer than the random error. The occurrences of both "on" and "off" pulses in contiguous bins are sorted into groups. This step alone reduces the memory requirement by at least a factor of two over current compression techniques.
The timing pulse widths in each category then are averaged together to estimate the appropriate "true" pulse widths. All of the original pulse widths in each group then are replaced with the group average. This step removes essentially all random error.
For RC codes with significant identical header or trailer information, or both, the procedure facilitates the recognition of these segments as being identical across keys. For some of these cases, compression ratios as high as 4 to 1 are possible by identifying and storing this information on a controller basis rather than once per key. Thus, this procedure both compresses the timing pulse width data and improves the encoding procedure by reducing random timing noise.
According to the invention, there are two I/R compression systems. The use of either system will depend if the compression system is used in a Learnable Universal Remote Control (LURC) or a Pre-programmed Universal Remote Control (PURC) . Combined Universal Remote Controls (CURC) (controller 10 in FIG. 1), which contain both Pre-programmed Codes and learning functions, use elements of both compression methods.
The compression method used in a PURC needs the support of many bytes of memory, on the order of one (1) megabyte, for work storage (generally in the form of arrays) and the processing power of an IBM-compatible Personal Computer (PC) , which might exceed 30 MIPS, or other type processing system with similar capabilities. This allows compression ratios many times greater than that currently expected in an LURC.
The compression method used in a LURC is limited in memory capacity. This method works in an environment having a typical working memory of maybe less than 128 bytes in size with the processing power of a microprocessor unit (MPU) limited to less than 1 MIPS (see FIG. 2), which does not allow for efficient compression. Because of the divergent processing methods used between the two methods, there arise basic difference between the two compression methods. Yet, both compression methods start out the same and share many of the same steps.
For example, both methods input I/R data by reading the I/R light beam with an I/R receiver circuit. The data are inputted, tracked and recorded, and each system also measures the I/R carrier frequency by observing the number of times the I/R beam turns off and on to measure their pulse lengths. In addition, the I/R data in both methods are referenced to a time base internal to the I/R receiver.
There are approximately 512 bytes of timing information supplied for each key learned, which bytes are formatted into 256 words of two bytes each. Each word represents a "time count." The normal accuracy for this tirs count is 4.0000 microseconds (μsec). Each word is normally assicr ,-d an "ON" or an "OFF" time slot. For example, the very first word is an ON time. The word count can be multiplied by 4 μsec, to derive the actual I/R ON time for this particular "on pulse." The second word is usually the OFF count that follows an ON count. This count can be converted into time by multiplying this count by 4 μsec.
When collecting I/R data into a LURC, the entry process stops after each key input and the I/R data for that one key is compressed. When collecting I/R data for a PURC, all keys of the controller are learned before compression is performed, which results in a more efficient compression action than that possible in the LURC.
The next step for both compression methods gathers all the different words that make up the raw I/R data. Since each word actually represents time, each method is gathering together different time base data. In the PURC system, the process might be routing through almost 15,000 bytes of data. In the LURC system, the MPU will only be checking through 512 bytes. Yet both systems perform essentially the same function of identifying and gathering the different time bases.
The processor of the PURC system establishes a multidimensioned array and assigns all of the I/R times bases to this array. It then gathers statistical data on the separate groupings within the array and calculates the average time base points based on the time base groupings. It then installs these averaged calculations in a separate array. This new array contains all the "different" times bases that are contained within the learned controller.
The MPU in a LURC, lacking large working memory used in the PURC method, uses other means to obtain the same results. Since the MPU cannot easily compare and test two- byte words, it precompresses the raw I/R data sufficiently enough to allow faster processing than if not precompressed.
First, the LURC method reduces any and all multi-byte words of I/R data by factoring. Each time base word is analyzed and factored by a variable that depends on the time base word size. The larger the word, the larger the factor is used to reduce the word. Each two byte time base is eventually represented by a one byte factored "token." To illustrate the use and calculation of tokens, the following examples are provided. A time base number n, for example, 12,345, in hexadecimal, is divided by two (2) until n is less than sixteen (16). The number of divisions D required is recorded and is ordered in a one-byte word as the most significant bit (D—). The remainder R, in this case 12, or C, is ordered as the least significant bit (—R) . Therefore, for the example above, which required ten (10) divisions, the new token is AC. For another example where n=250, the new token is 4F (four divisions with a remainder of 15). A final example is n=13, the new token is 0D (zero divisions with a remainder of 13).
The position of the token in memory determines the actual time base word that it represents. For example, the first token represents the first word, while the 256th token represents the 256th word. The size of the token represents the relative size of the word.
The MPU operates on the tokenized data. Being a single byte, the token allows the MPU to compare relative size and position more easily than if it were using the full-sized word itself.
The LURC process of tokenizing filters the raw data in much the same manner as the PURC process does by assigning the raw data to a multidimensional array. Instead of array groupings that identify different time bases, tokens are used to identify the different times bases. Identical tokens are assigned the same time base grouping.
Next, the MPU calculates a time base averages based for each grouping. It does this by using the tokens as a road map into the raw I/R data storage area. The MPU looks for matching tokens by scanning the token area.
Starting at the top of the token memory, the MPU selects the first token and looks through the remainder of token memory for identical matches. When it finds a token match, it uses the token's position reference and sums the raw I/R data into a common accumulator. Once all of the matches are known, summed and counted for any one token, the MPU calculates the actual average of the time base that represents this grouping. This average is then assigned to every position in the raw I/R data area that had matching tokens. The matching tokens are no longer needed and are then removed from the token list.
The matching process is repeated by selecting the next token in the token list. All of the matches are totaled and the average time base is calculated on the count of matching tokens. The average time base is assigned to the raw area. The matching tokens are no longer needed and then removed from the list, with another token selected from the top of the list to repeat the process again.
This search, match, average, assign and remove process is repeated until there are no more valid tokens to process. This process has the result of organizing a 512 byte I/R data area into, at the most, sixteen different time bases.
An additional advantage that the PURC has over the LURC is that there are only a small number of different timebases representing all key patterns of the learned remote. Also, the PURC method knows that the key patterns will remain constant over all the keys, which cannot be assured in the LURC.
The PURC compression method recharacterizes each key pattern into a binary string series of ones and zeros. These strings of binary numbers are analyzed and compared between keys to determine common elements. Once all of the common elements are identified, they are extracted, thereby leaving generally only eight bits that are unique to any one key. This is possible since in the PURC method the PC can analyze the assorted elements and compare these elements to an extensive library of key elements.
A set number of transmissions type have currently been identified based on the analysis of the signals generated by a multitude of remote control transmitters. The PURC method can test and fit the entire learned controller into one of these transmission types. The processor then arranges the binary pieces into a very compact file. This file is labeled with the I/R transmission type. For example, this file may contain one 8 bit pattern for each key and three bytes for overhead to define the transmission type and to flag anomalies. Taken together, this file of, for example, 33 bytes of information may represent almost 15,000 bytes of raw I/R data—a compression ratio of over 400 to 1.
The PURC method is able to do this to I/R data on the controller level because of several factors. The biggest factor that effect such compression ratios are through the use of "decompression engines." The small, tight files that represent a single controller can be installed into an engine that satisfies all the requirements to replay the complex I/R pattern for each key. The file information that was passed to the engine did not contain Time Base data. That information is already built into the engine. Instead, the file contained unique key data that the engine does not have. The engine contains important parameters such as burst ON times. Logic one and zero pattern generators, header timing and more. The engine only needs to read key data and it can spin out the exact I/R pattern for any key selected.
The MPU in a LURC has limited processing capabilities and cannot do such high compressions. In a user programmable system key patterns may not have any resemblance between keys, the next key in the pattern, or time base, or even frequency. Accordingly, decompression engines would be useless. Instead, each key must "carry" its own timebase and frequency information. This limitation requires the MPU to use a different compression method than that used in the PURC.
An exemplary compression method for the LURC uses a factoring method of compressing the time bases and a bit method of representing key patterns.
The 512 bytes of averaged time base data are analyzed to determine if there are any repeating parts to the data. Typically, most I/R transmission patterns repeat themselves to improve accuracy. The redundant or repeated data patterns can be eliminated. For example, by analyzing the raw data, the MPU may be able to remove at least two-thirds of the data due to repeating data patterns. Once the raw data have been cleared of these repeating patterns, the MPU can then start compressing the I/R pattern.
Again, the raw data that make up the ON and OFF cycles of the I/R pattern are made up of time bases and are gathered by the
MPU. To illustrate, the MPU may have gathered the following table of time bases: times 4 usec is 572 μsec times 4 usec is 1.256 msec times 4 usec is 2.371 msec
Figure imgf000023_0001
times 4 usec is 4.771 msec
The MPU sorts this list such that the smallest time base is at the top. Then, the MPU analyzes the raw data and re-sorts the time base list in a new order based on use. The objective here is to place the most used time bases at the top of the list and the least used at the bottom. The reason will soon be apparent.
The MPU might have reordered the time bases in BACD order. The MPU then assigns a position count to the time base position as follows:
Figure imgf000023_0002
Once this assignment is complete, the MPU creates a binary string based on the different time bases in the raw I/R data area. The MPU then looks at each entry in the data area and matches the time base located there to the time base list. Once a match is found, the binary number that represents the position will be assigned to the relative position of the time base.
For example, assume the raw data area contains the following data: on off on off on off on off on off on off 592 321 143 321 143 592 321 592 321 143 592 1193
The MPU replaces each time base with the proper number of binary ones or zeros, depending on the position of the time base in the table. For example, if the first time base, with a count of a single one (1) during an ON time, is accessed during an OFF time, the binary value that will replace the data in the I/R data file is a single zero (0). If the third time base is referenced during an ON time, the value is replaced with three ones (111). A reference in an OFF time at the third data base number generates three zeros (000). The MPU process each time base position. This generates the following string for the above example:
Figure imgf000024_0001
The spaces are removed and the binary string is reordered into 8 bit words:
11101101 10001000 10011100 00
This example illustrates how a raw I/R data file consisting of 21 bytes of data is compressed down to just 3.25 bytes, resulting in a compression ratio exceeding six to one (6 to 1) . After the RAW data has been compressed, the time base table is then factored to compress it.
All remote controls are generally based on some form of master timing device—usually low cost ceramic resonators and sometimes the more expensive crystal oscillators. Since dividing down from this master oscillator frequency is straight forward when working with integers, some form of divider chain is used to develop all other times within the remote control chip. Using this knowledge, the MPU is programmed to determine all timing relationships with integer subdivisions. For example, the fastest time standard in any controller is the carrier frequency or the flash pulse width. Accordingly, all other slower times within the source controller generally are integer multiples of this fastest timebase.
Using the same time base example as above, it may, for example, have a carrier frequency of 35,000 (Hz) . The time base list then looks like this after averaging and gathering:
A 143 counts represent the time: 572 μsec
B 321 counts represent the time: 1.256 msec
C 592 counts represent the time: 2.371 msec
D 1193 counts represent the time: 4.771 msec
A master time standard is established for this key based on the I/R carrier frequency. The MPU already knows the I/R carrier frequency. Accordingly, this 28,571 μsec and can be rounded off to 28 μsec. All other time bases will be factored by this number.
Now, using the list above, the averaged time bases are converted into factored time bases:
(572 μsec divided by 28) (1.256 msec divided by 28) (2.371 msec divided by 28)
Figure imgf000025_0001
(4.771 msec divided by 28)
Comparing the two time base lists illustrates the time base compression. The upper time base list uses seven (7) bytes to represent the four times. The lower time base list uses only four (4) bytes to represent the same time bases after factoring with the carrier frequency period.
FIG. 4A is a block diagram that illustrates an I/R code compression system 400 wherein a remote control transmitter 402 sends I/R signals to the system 400. The signals are received by an I/R signal detector under control of a central processing unit 404 (CPU) . CPU 404 directs the signals into storage in memory 408 either directly from I/R signal detector 404 or via CPU 406. In either case, CPU 406 also controls memory 408. The CPU is programmed to perform a compression procedure as illustrated in FIG 4B. Once all the signals from transmitter 402 have been compressed, they are later stored in ROM 142 in controller 10 for the PURC portion of the controller.
FIG. 4B is a flow chart illustrating the compression method used to compress the I/R codes of each individual remote transmitter pre-programmed into the I/R code storage ROM 142 (see FIG. 2) of a PURC.
The compression method is operated after entering the I/R codes into the memory 408. The procedure starts in step 412 with the CPU reading all the I/R codes received, as represented by their time base data, into a two dimensional array. Then, in step 414, the CPU determines the minimum and maximum time base data values. Afterwards, in step 416, an assorted number of groups are designated, in which each time base data is matched. A representation of these designated groups is illustrated in the histogram of FIG. 3, which is a high resolution histogram (10% of the minimum pulse width). Next, in step 418, only the non-zero elements of the histogram are saved for subsequent sorting into - a e us o s 2.5% to 10% of the average time-base, with 5% preferred. Once the group elements are saved within a given range, step 420 stores the upper and lower values of each group into a separate array. Step 422 then compresses the data into separate arrays. Next, in step 424, the procedure determines the number of distinct categories after the compression. Step 426 then determines the number of time bases and averages them per category. Afterwards, in step 428, the time base data of each group is compressed by replacing the original time base data in each group with the average of the group.
An optional procedure is further detailed in steps 430 and 432 of FIG. 4B. When a remote control transmitter uses RC codes with significant identical header or trailer information, or both, this information can be stored once per controller to minimize memory requirements. Accordingly, in step 430, the procedure identifies the RC codes with the identical header or trailer information, or both. Afterwards, in step 432, this information is stored only once per controller and accessed each time necessary during use of controller 10.
Since this is a statistical averaging procedure, it will be appreciated by those skilled in the art that a greater number of key entries per key will improve the operation of the device by providing a more accurate "average" RC code. This is ideally suited to be processed at the manufacturing stage for storage in the ROM 142, since each key in a specific remote control transmitter to be programmed can be activated many times more than that expected of an end-user programming their own controller 10.
In addition, it is preferred, in the statistical compression procedure, for the PURC to enter all the RC codes for each key into the system before compression. The alternative would be to compress each key as pressed. This latter approach, which is typically used in currently available universal remote control devices, does not afford the greater compression ratio obtained when using all the keys, with their associated RC codes, in establishing the best, or "true" average signal generated per key. This is especially so when specific remote controls are desired to be pre-programmed and the best or "true" average RC code is necessary to correct for transmitter signal errors such as, for example, weak batteries, low I/R energy levels, inconsistent frequency pulses, and more.
The general overview provided above illustrates the differences between the method used in programming a PURC and that used in programming an LURC. FIG. 5 (FIGs. 5A-5B) illustrates a specific embodiment of the method used in programming an LURC. The procedure is started by activating the set remote key 54 (see FIG. 1). As with the PURC, step 502 of the LURC method inputs the infrared data into the MPU, which is stored in I/R code memory 112 of MPU 10 (FIG. 2). Next, the controller, in step 504, determines the carrier frequency of the inputted I/R signal received in step 502. Once the carrier frequency is determined in step 506, the MPU measures the pulse length of each I/R signal received. Afterwards, in step 508, the MPU identifies all repeating portions of the I/R signal. Next, in step 510, the repeated portions are stripped from the signal. The method now has a clean signal, without any redundancies, for the compression method described below.
Continuing in step 512, the MPU determines the number of bytes of information in the signal received. Once all the bytes are determined, in step 514, the MPU gathers all the time base data. In step 516, each time base datum is factored as previously described. In step 518, the MPU sorts each factored time base datum into specific groups.
Once all the data are organized into specific groups, the MPU, in step 520, sums each group and then calculates an average for the time base of the group. In step 522, the MPU replaces the average time base value just calculated for each time base datum in the same group. In step 524, once all time base vaiues are calculated, each time base value is assigned a unique value based on its frequency of use. Typically, the most used time-bases are assigned at the top of the list and the less frequently used time- bases are assigned at the bottom of the list. In step 526, using the assigned time base value in the I/R data, a binary string based on time base value is generated (see, for example, the binary string previously illustrated). In step 528, once the binary string is formed, this string is divided into eight-bit (8) words. In step 530, each new word is stored to represent the inputted I/R signal data. This completes the process for the first compression process of the I/R signal data. An additional compression step is illustrated in step 540 of FIG. 5B. This additional compression step involves factoring each time base data using the carrier frequency. By factoring out the carrier frequency, each time base datum is further compressed, thereby conserving additional memory space.
Once the procedure is finished, a signal is sent to the display 12 to indicate that the controller is SET, and the controller is now ready for use with the given device used with the specific remote control transmitter just programmed. Afterwards, learn button 40 is returned to its run state.
If the learnable capability is also present in a CURC, the MPU, in step 532, then compares the newly learned signals against any and all of the precompressed RC codes. If a match is found, then, in step 534, that information in the preprogrammed position is accessed for operation with the device of the learned controller. Otherwise, in step 536, the learned information is stored in the appropriate memory location.
For improved results, the end-user should press each key at least three times to provide a better statistical analysis for the compression procedure just described. However, the procedure is designed to provide improved results with just a single key entry per key.
While specific circuitry and programming has been described above for performing the various functions of this invention, such circuitry and programming is for illustration purposes only and the invention may be practiced using other suitable circuitry and/or programming. Thus, while the invention has been particularly shown and described above with reference to a preferred embodiment, the foregoing and other changes in form and detail may be made therein without departing from the spirit and scope of the invention.

Claims

What is claimed is:
1. A method for compressing signals transmitted from at least one remote control transmitter having an assorted number of function keys for operating an associated remotely controlled device comprising the steps of: transmitting control signals composed of selected timing pulse widths from the remote control transmitter to a temporary storage location; sorting the control signals in the temporary storage location according to groups of timing pulse widths having a given range; compressing the control signals based upon the timing pulse width groups.
2. The method according to claim 1 wherein the step of compressing comprises the steps of: determining the range of each group of timing pulse widths; determining the time bases of each group of timing pulse widths; averaging the time bases to determine an ideal timing pulse per group; and replacing each signal in each group with the average timing pulse of the group.
3. The method according to claim 1 further comprising the step of; identifying a carrier frequency used to carry the signals transmitted by the at least one remote control transmitter; and factoring each signal by the identified carrier frequency to reduce the size of each signal before storage.
4. The method according to claim 1 wherein the step of transmitting control signals comprises the steps of: activating a function key at least twice; and activating at least a second function at least twice.
5. The method according to claim 4 wherein all the function keys are activated at least twice.
6. The method according to claim 1 wherein the step of sorting comprises the steps of: identifying header or trailer information, or both, for each signal received; stripping the signal of the header or trailer information, or both.
7. The method according to claim 6 further comprising the steps of storing the header or trailer information, or both.
8. The invention of claim 1 wherein the step of sorting the control signals further comprises the steps of: factoring each control signal to generate a new token representative of each control signal; assigning each new token to assorted groups having the same token value; determine an average time value representative of the token values for each group; replacing each token in the same group with the average time value for the group; storing the average time values.
9. The method of claim 1 further comprising the steps of: providing compressed control signal information for a plurality of remote control transmitters; comparing the transmitted control signals to the compressed control signal information until a match occurs; substituting the control signals with the matched compressed control signal information.
10. The method of claim 1 further comprising the steps of: identifying repeated portions in the transmitted signals; removing the repeated portions thereby leaving the transmitted signal with a single pattern for compression.
11. A method for learning and compressing signals transmitted from at least one remote control transmitter having an assorted number of function keys for operating an associated remotely controlled device comprising the steps of: transmitting control signals composed of selected timing pulse widths from the remote control transmitter to a signal receiver; receiving the control signals at the signal receiver; factoring each control signal to generate a new token representative of each control signal; assigning each new token to assorted groups having the same token value; determine an average time value representative of the token values for each group; replacing each token in the same group with the average time value for the group; storing the average time values.
12. The method of claim 11 further comprising the steps of: determining control signals carrier frequency used when transmitting the control signals; factoring out the carrier frequency from each control signal after receipt thereof.
13. The method of claim 11 further comprising the steps of: providing compressed control signal information for a plurality of remote control transmitters; comparing the transmitted control signals to the compressed control signal information until a match occurs; substituting the control signals with the matched compressed control signal information.
14. The method of claim 11 further comprising the steps of: identifying header or trailer information, or both, for each control signal received; stripping the signal of the header or trailer information, or both.
15. The method of claim 14 further comprising the steps of storing the header or trailer information, or both.
16. The method of claim 11 further comprising the steps of: identifying repeated portions in the transmitted signals; removing the repeated portions thereby leaving the transmitted signal with a single pattern for compression.
17. A programmable remote control transmitter apparatus for use with at least one remotely controlled device, in which the device is controllable with one or more signals having a variable pulse width received from an associated remote control transmitter having a plurality of function keys, the apparatus comprising: a detector for detecting and receiving, when the transmitter is in a learning mode of operation, transmitted signals from the remote control transmitter normally used to operate an associated remotely controlled device; a first memory coupled to the detector for temporarily storing the received signals; a signal compressor coupled to the first memory for receiving all the signals stored in the first memory and for compressing the signals based on a statistical averaging of specific pulse widths generated in the signals; a second memory coupled to the signal compressor for storing the compressed signals for later use; and, a signal output transmitter coupled to the second memory for decompressing the compressed signals and then sending the decompressed signals to the remotely controlled device for operation.
18. The invention of claim 17 wherein the signal compressor is a microprocessor.
19. The invention of claim 18 wherein the microprocessor is programmed to sort the pulse widths into selected groups before compression.
20. The invention of claim 18 wherein the microprocessor is programmed to find the average pulse width value in each group before compression.
21. The invention of claim 18 wherein the microprocessor is programmed to determine and strip from each signal header or trailer information, or both, which is identical for each signal, before sorting the pulse widths of each signal into groups.
22. The invention of claim 21 wherein the header or trailer information, or both, is compressed and stored in the second memory for later use.
23. The invention of claim 17 wherein each signal is factored to reduce its size before being sorted into pulse width groups.
24. A pre-programmed remote control transmitter for use with at least one remotely controlled apparatus, in which the apparatus is controllable with one or more signals having a variable pulse width transmitted from an associated remote control transmitter having a plurality of function keys, comprising: a storage location for storing all the signals associated with each one of the plurality of remote control transmitters, whereby, before being stored, each signal has been compressed based on a statistical averaging of specific timing pulse widths generated in the signal; a signal generator coupled to the storage location for accessing the storage location to retrieve the compressed signals and decompressing the signals to their precompressed form; and a signal transmitter coupled to the signal generator for transmitting the decompressed signals for operation of the associated remotely controlled apparatus.
25. The invention of claim 24 wherein the signal generator is a microprocessor programmed to access the storage location and operate the signal transmitter.
26. The invention of claim 24 wherein each compressed signal is a statistical average of a preselected group of timing pulse widths having a given range.
27. The invention of claim 24 wherein the statistical averaging uses the signals from all the functions keys during the grouping and before the average value within each group is determined.
28. The invention of claim 24 wherein the signal generator is coupled to a function keyboard, thereby allowing a user to interface with the remote control transmitter for operation.
29. The invention of claim 24 wherein the compressed signals have been stripped of any header or trailer information, or both, before undergoing compression and wherein the header or trailer information, or both, is compressed and stored in the storage location.
30. The invention of claim 29 wherein the signal generator recalls, decompresses and adds the header or trailer information, or both, to each decompressed signal before being transmitted.
31. The invention of claim 24 wherein the signal transmitter is capable of transmitting infrared signals.
32. A combination learnable and preprogrammed remote control transmitter for use with a plurality of remotely controlled apparatuses, each of which is controllable with one or more signals having a variable pulse width transmitted from an associated remote control transmitter having a plurality of function keys, the learnable and preprogammed remote control transmitter being capable of learning the functions of at least one remote control transmitter for operation of an apparatus associated with the at least one remote control transmitter and of storing, as pre¬ programmed information, control information of a plurality of remote control transmitters for operation of each apparatus associated with each remote control transmitter, comprising: a detector for detecting and receiving, when the transmitter is in a learning mode of operation, transmitted signals from the at least one remote control transmitter; a temporary storage location coupled to the detector for temporarily storing the received signals; a signal compressor coupled to the temporary storage location for compressing each signal based on a statistical averaging of specific pulse widths generated in the signals; a learned-information storage location coupled to the signal compressor for storing the compressed signals from the at least one remote control transmitter for later use; a permanent storage location for storing pre-programmed control information for the plurality of associated remote control transmitters, whereby all the stored control information has been compressed for storage based on a statistical averaging of specific pulse widths generated in the signal; a signal generator coupled to the learned-information storage location and the permanent storage location for retrieving the compressed signals and decompressing the signals to their precompressed form; and a signal transmitter coupled to the signal generator for transmitting the decompressed signals for operation of the associated remotely controlled apparatus.
33. The invention of claim 32 wherein the signal compressor is a microprocessor.
34. The invention of claim 33 wherein the microprocessor is programmed to sort the timing pulse widths of the transmitted signals into selected groups before compression.
35. The invention of claim 33 wherein the microprocessor is programmed to find the average timing pulse width value in each group before compression.
36. The invention of claim 33 wherein the microprocessor is programmed to determine and strip from each transmitted signal header or trailer information, or both, which is identical for each signal, before sorting the pulse widths of each signal into groups.
37. The invention of claim 36 wherein the header or trailer information, or both, is compressed and stored in the learned-information storage location.
38. The invention of claim 32 wherein the detector and transmitter are capable of detecting and transmitting infrared signals, respectively.
39. The invention of claim 32 wherein the signal generator is a microprocessor programmed to access the permanent storage location and operate the signal transmitter.
40. The invention of claim 32 wherein each compressed signal stored in the permanent storage location is a statistical average of a preselected group of pulse widths having a given range.
41. The invention of claim 40 wherein the statistical averaging uses the signals from all the function keys during the grouping and before determining the average value within each group.
42. The invention of claim 32 wherein the signal generator is coupled to a function keyboard, which allows a user to interface with the remote control transmitter for operation.
43. The invention of claim 32 wherein the control information has been stripped of any header or trailer information, or both, before undergoing compression and wherein the header or trailer information is compressed and stored in the permanent storage location.
44. The invention of claim 43 wherein the signal generator recalls, decompresses and adds the header or trailer information, or both, to each signal before being transmitted.
45. The invention of claim 32 wherein each signal is factored to reduce its size before being sorted into pulse width groups.
PCT/US1993/000814 1992-02-04 1993-01-29 Pre-programmed universal remote control method and apparatus with learning capability WO1993015488A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US83112592A 1992-02-04 1992-02-04
US07/831,125 1992-02-04

Publications (1)

Publication Number Publication Date
WO1993015488A1 true WO1993015488A1 (en) 1993-08-05

Family

ID=25258331

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1993/000814 WO1993015488A1 (en) 1992-02-04 1993-01-29 Pre-programmed universal remote control method and apparatus with learning capability

Country Status (2)

Country Link
AU (1) AU3599093A (en)
WO (1) WO1993015488A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996003731A1 (en) * 1994-07-27 1996-02-08 Siel Elettronica S.P.A. Remote controller pre-programmed to operate a number of apparatuses
US7493085B2 (en) 2005-07-14 2009-02-17 Sony Corporation Remote control transmitter apparatus

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4802114A (en) * 1986-02-07 1989-01-31 General Electric Company Programmable remote control transmitter
EP0320067A2 (en) * 1987-12-09 1989-06-14 Philips Electronics North America Corporation Reconfigurable remote control apparatus
EP0320066A2 (en) * 1987-12-09 1989-06-14 Philips Electronics North America Corporation Data compression technique for reconfigurable remote control apparatus
US4866434A (en) * 1988-12-22 1989-09-12 Thomson Consumer Electronics, Inc. Multi-brand universal remote control
US5028919A (en) * 1987-05-22 1991-07-02 Pioneer Electronic Corporation Learning remote control device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4802114A (en) * 1986-02-07 1989-01-31 General Electric Company Programmable remote control transmitter
US5028919A (en) * 1987-05-22 1991-07-02 Pioneer Electronic Corporation Learning remote control device
EP0320067A2 (en) * 1987-12-09 1989-06-14 Philips Electronics North America Corporation Reconfigurable remote control apparatus
EP0320066A2 (en) * 1987-12-09 1989-06-14 Philips Electronics North America Corporation Data compression technique for reconfigurable remote control apparatus
US4866434A (en) * 1988-12-22 1989-09-12 Thomson Consumer Electronics, Inc. Multi-brand universal remote control

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996003731A1 (en) * 1994-07-27 1996-02-08 Siel Elettronica S.P.A. Remote controller pre-programmed to operate a number of apparatuses
US7493085B2 (en) 2005-07-14 2009-02-17 Sony Corporation Remote control transmitter apparatus

Also Published As

Publication number Publication date
AU3599093A (en) 1993-09-01

Similar Documents

Publication Publication Date Title
US6097520A (en) Remote control receiver and method of operation
KR940003444B1 (en) Reconfigurable remote control
KR900007131B1 (en) Programable remote control transmitter
US4626848A (en) Programmable functions for reconfigurable remote control
US4677466A (en) Broadcast program identification method and apparatus
US4412218A (en) Remote control signal transmitter capable of setting custom codes individually alloted to a plurality of controlled instruments
US5714984A (en) Position detecting device and position pointing device therefor
US6198408B1 (en) Method and apparatus for controlling electrical appliances by remote control transmitters
US5374916A (en) Automatic electronic data type identification process
US5467087A (en) High speed lossless data compression system
US5027314A (en) Apparatus and method for position reporting
EP0974944B1 (en) Remote control learning device and method using signal envelope pattern recognition
US4160240A (en) Binary digital pager having an eight function code read-out
CA1293299C (en) Reconfigurable remote control transmitter
KR0168625B1 (en) Multi-brand universal remote control
US5706000A (en) Position detecting device and position pointing device therefor
US6137421A (en) Method and apparatus for storing a data encoded signal
GB2320096A (en) Position detecting apparatus and position pointing device operable at more than one frequency
US4224690A (en) High speed parallel scanning means for testing or monitoring the assembly of multiwire harnesses
CN1167306C (en) Remote control devices for electronic devices
US5910784A (en) Control circuit of a remote controller
US5670958A (en) Remote control method and device
US4916621A (en) Microcomputer traffic counter and data collection method
KR920010961B1 (en) Memory remote controller
WO2000019293A3 (en) Method and apparatus for compressing data

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AU CA JP KR

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AT BE CH DE DK ES FR GB GR IE IT LU MC NL PT SE

DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: CA