CROSS-REFERENCE TO RELATED APPLICATIONS This application is a continuation of U.S. application Ser. No. 11/369,237 filed Mar. 7, 2006; which is a continuation of application Ser. No. 10/662,160 filed Sep. 11, 2003, now U.S. Pat. No. 7,050,794; which is a continuation of application Ser. No. 10/630,390 filed Jul. 30, 2003, now U.S. Pat. No. 7,039,397; the disclosures of which are hereby incorporated by reference in their entirety.
BACKGROUND OF THE INVENTION 1. Field of the Invention
The present invention relates to wireless remote control of appliances such as, for example, garage door openers.
2. Background Art
Home appliances, such as garage door openers, security gates, home alarms, lighting, and the like, may conveniently be operated from a remote control. Typically, the remote control is purchased together with the appliance. The remote control transmits a radio frequency activation signal which is recognized by a receiver associated with the appliance. Aftermarket remote controls are gaining in popularity as such devices can offer functionality different from the original equipment's remote control. Such functionality includes decreased size, multiple appliance interoperability, increased performance, and the like. Aftermarket controllers are also purchased to replace lost or damaged controllers or to simply provide another remote control for accessing the appliance.
An example application for aftermarket remote controls are remote garage door openers integrated into an automotive vehicle. These integrated remote controls provide customer convenience, appliance interoperability, increased safety, and enhanced vehicle value. Present in-vehicle integrated remote controls provide a “universal” or programmable garage door opener which learns characteristics of an activation signal received from an existing transmitter then, when prompted by a user, generates a single activation signal having the same characteristics. One problem with such devices is the difficulty experienced by users in programming these devices. This is particularly true for rolling code receivers where the user must program both the in-vehicle remote control and the appliance receiver.
What is needed is a universal remote control that is easier to program. This remote control should be integrateable into an automotive vehicle using simple electronic circuits.
SUMMARY OF THE INVENTION The present invention provides a universal remote control that interacts with the user to assist in training to a particular remotely controlled appliance.
A programmable control for an appliance is provided. The appliance responds to one of a plurality of transmission schemes. The programmable control includes a transmitter for transmitting a radio frequency activation signal based on any of the transmission schemes and a user programming input. Control logic implements a rolling code programming mode, a fixed code programming mode and an operating mode. In rolling code programming mode, the control logic generates and transmits a sequence of rolling code activation signals until user input indicates a successful rolling code transmission scheme. In fixed code programming mode, the control logic receives a fixed code from the user programming input then generates and transmits a sequence of fixed code activation signals until user input indicates a successful fixed code transmission scheme. The control logic pauses for a preset amount of time between the transmission of each activation signal in at least one of the sequence of rolling code activation signals and the sequence of fixed code activation signals. The preset amount of time is sufficiently long enough to permit the user to respond. If the user has not responded by the end of the preset amount of time, the control unit transmits the next activation signal.
In an embodiment of the present invention, the user responds by selecting one of a plurality of activation inputs. The control unit stores characteristics of the last transmitted activation signal in association with the selected activation input. In the operating mode, the control logic determines which activation input has been asserted and transmits an activation signal based on the stored characteristics associated with the asserted activation input.
A method of activating an appliance controlled by a radio frequency activation signal is also provided. If a user indicates that the appliance is activated by a rolling code activation signal, a sequence of different rolling code activation signals is transmitted. Each rolling code activation signal is separated from the next rolling code activation signal by a preset amount of time. The sequence of rolling code activation signals is transmitted until the user indicates a successful rolling code transmission. Data representing a rolling code scheme used to generate the successful rolling code transmission is then stored. If the user indicates that the appliance is activated by a fixed code activation signal, a fixed code word is used to generate and transmit each of a sequence of different fixed code activation signals. Each fixed code activation signal is separated from the next fixed code activation signal by the preset amount of time. The sequence of fixed code activation signals is transmitted until the user indicates a successful fixed code transmission. Data representing the fixed code word and a fixed code scheme used to generate the successful fixed code transmission is then stored. An activation signal based on the stored data is generated and transmitted in response to an activation input.
In an embodiment of the present invention, the activation input is one of a plurality of activation inputs. The user associates one of the activation inputs with data representing one of either the rolling code scheme used to generate the successful rolling code transmission or the fixed code scheme used to generate the successful fixed code transmission.
In another embodiment of the present invention, the user associates data representing the rolling code scheme used to generate the successful rolling code transmission with one of a plurality of activation inputs by indicating the successful rolling code transmission.
In still another embodiment of the present invention, the user associates data representing the fixed code word and the fixed code scheme used to generate the successful fixed code transmission with one of a plurality of activation inputs by indicating the successful fixed code transmission.
A method of programming a programmable remote control is also provided. User type input specifying activation signal type is received. If the user type input specifies variable code type, variable code activation signals are transmitted spaced apart by a preset amount of time until user success input is received indicating a target appliance has been activated. If the user type input specifies fixed code type, user fixed code input providing a fixed code is received and fixed code activation signals are transmitted spaced apart by the preset amount of time until user success input is received indicating the target appliance has been activated. The preset amount of time is sufficiently long enough to permit a user to generate the user success input. Information specifying an activation signal for activating the target appliance is stored based on the received user success input.
A system for wirelessly activating an appliance is also provided. The system includes a radio frequency transmitter and memory holding data describing a plurality of transmission schemes. Control logic is operative to store a fixed code. If a fixed code is stored, a sequence of fixed code activation signals are transmitted based on the fixed code and data held in the memory until input indicating activation of the appliance is received. Each transmission of a fixed code activation signal in the sequence of fixed code activation signals is followed by a fixed code sequence time period without transmission long enough to permit a user to enter input indicating activation of the appliance. If no fixed code is stored, a sequence of rolling code activation signals is transmitted based on data held in the memory until input indicating activation of the appliance is received. Each transmission of a rolling code activation signal in the sequence of rolling code activation signals is followed by a rolling code time period without transmission long enough to permit the user to enter input indicating activation of the appliance. An indication as to which activation scheme activated the appliance is stored based on the received input indicating activation of the appliance. An activation signal is generated based on the stored indication and a received activation input.
A method of programming a programmable remote control is also provided. A test activation signal is transmitted based on one of a plurality of appliance activation schemes. If user input indicating appliance activation is received during a preset amount of time following transmission of the test activation signal, characteristics of the activation scheme used to transmit the test activation signal are stored. Otherwise, a different activation signal is transmitted as the test activation signal based on another of the plurality of appliance activation schemes if any of the activation schemes has not been used to transmit an activation signal.
The above features, and other features and advantages of the present invention are readily apparent from the following detailed descriptions thereof when taken in connection with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is a block diagram illustrating an appliance control system according to an embodiment of the present invention;
FIG. 2 is a schematic diagram illustrating activation signal characteristics according to an embodiment of the present invention;
FIG. 3 is a block diagram illustrating rolling code operation that may be used with the present invention;
FIG. 4 is a schematic diagram illustrating a fixed code setting which may be used according to an embodiment of the present invention;
FIG. 5 is a block diagram illustrating a programmable remote control according to an embodiment of the present invention;
FIG. 6 is a schematic diagram illustrating control logic and a user interface according to an embodiment of the present invention;
FIG. 7 is a memory map for implementing control modes according to an embodiment of the present invention;
FIGS. 8, 9,10,11, and12 are flow diagrams illustrating programmable controller operation according to embodiments of the present invention;
FIGS. 13, 14,15, and16 are flow diagrams illustrating alternative programmable controller operation according to embodiments of the present invention;
FIG. 17 is a drawing illustrating a vehicle interior that may be used to program a programmable controller according to an embodiment of the present invention;
FIG. 18 is a block diagram illustrating a bus-based automotive vehicle electronics system according to an embodiment of the present invention; and
FIG. 19 is a block diagram illustrating distributed control elements interconnected by a vehicle bus according to an embodiment of the present invention.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT(S) Referring toFIG. 1, a block diagram illustrating an appliance control system according to an embodiment of the present invention is shown. An appliance control system, shown generally by20, allows one or more appliances to be remotely controlled using radio transmitters. In the example shown, radio frequency remote controls are used to operate a garage door opener. However, the present invention may be applied to controlling a wide variety of appliances such as other mechanical barriers, lighting, alarm systems, temperature control systems, and the like.
Appliance control system20 includesgarage22 having a garage door, not shown. Garage door opener (GDO)receiver24 receives radio frequency control signals26 for controlling a garage door opener. Activation signals have a transmission scheme which may be represented as a set of receiver characteristics. One or more existing transmitters (ET)28 generate radio frequency activation signals26 exhibiting the receiver characteristics in response to a user depressing an activation button.
A user ofappliance control system20 may wish to add a new transmitter tosystem20. For example, a vehicle-based transmitter (VBT) includingprogramable control30 may be installed invehicle32, which may be parked ingarage22. Vehicle-basedtransmitter30 generates a sequence of activation signals34 which includes an activation signal having characteristics appropriate to activate activating garagedoor opener receiver24. In the embodiment shown,programmable control30 is mounted invehicle32. However, as will be recognized by one of ordinary skill in the art, the present invention applies to universal remote controls that may also be hand-held, wall mounted, included in a key fob, and the like.
Referring now toFIG. 2, a schematic diagram illustrating activation signal characteristics according to an embodiment of the present invention is shown. Information transmitted in an activation signal is typically represented as a binary data word, shown generally by60.Data word60 may include one or more fields, such astransmitter identifier62,function indicator64,code word66, and the like. Transmitter identifier (TRANS ID)62 uniquely identifies a remote control transmitter.Function indicator64 indicates which of a plurality of functional buttons on the remote control transmitter were activated.Code word66 helps to prevent mis-activation and unauthorized access.
Several types ofcodes66 are possible. One type of code is a fixed code, wherein each transmission from a given remote control transmitter contains thesame code66. In contrast, variable code schemes change the bit pattern ofcode66 with each activation. The most common variable code scheme, known as rolling code, generatescode66 by encrypting a synchronization (sync) counter value. After each activation, the counter is incremented. The encryption technique is such that a sequence of encrypted counter values appears to be random numbers.
Data word60 is converted to a baseband stream, shown generally by70, which is an analog signal typically transitioning between a high voltage level and a low voltage level. Multilevel transmissions are also possible. Various baseband encoding or modulation schemes are known, including polar signaling, on-off signaling, bipolar signaling, duobinary signaling, Manchester signaling, and the like.Baseband stream70 has a baseband power spectral density, shown generally by72, centered around a frequency of zero.
Baseband stream70 is converted to a radio frequency signal through a modulation process shown generally by80.Baseband stream70 is used to modulate one or more characteristics ofcarrier82 to produce a broadband signal, shown generally by84.Modulation process80, mathematically illustrated by multiplication inFIG. 2, implements a form of amplitude modulation commonly referred to as on-off keying. As will be recognized by one of ordinary skill in the art, many other modulation forms are possible, including frequency modulation, phase modulation, and the like. In the example shown,baseband stream70forms envelope86 modulatingcarrier82. As illustrated in broadband powerspectral density88, the effect in the frequency domain is to shift baseband powerspectral density72 up in frequency so as to be centered around the carrier frequency, f, ofcarrier82.
Referring now toFIG. 3, a block diagram illustrating rolling code operation that may be used with the present invention is shown. Remotely controlled systems using rolling code requirecrypt key100 in both the transmitter and the receiver for normal operation. In a well-designed rolling code scheme,crypt key100 is not transmitted from the transmitter to the receiver. Typically,crypt key100 is generated usingkey generation algorithm102 based ontransmitter identifier62 and a manufacturing (MFG)key104.Crypt key100 andtransmitter identifier62 are then stored in a particular transmitter.Counter106 is also initialized in the transmitter. Each time an activation signal is sent, the transmitter usesencrypt algorithm108 to generate rollingcode value110 fromcounter106 usingcrypt key100. The transmitted activation signal includes rollingcode110 andtransmitter identifier62.
A rolling code receiver is trained to a compatible transmitter prior to normal operation. The receiver is placed into a learn mode. Upon reception of an activation signal, the receiver extractstransmitter identifier62. The receiver then useskey generation algorithm102 with manufacturing key104 and receivedtransmitter identifier62 to generatecrypt key100 identical to the crypt key used by the transmitter. Newly generatedcrypt key100 is used bydecrypt algorithm112 to decrypt rollingcode110, producing counter114 equal to counter106. The receiver then saves counter114 andcrypt key100 associated withtransmitter identifier62. As is known in the encryption art, encryptalgorithm108 and decryptalgorithm112 may be the same algorithm.
In normal operation, when the receiver receives an activation signal, the receiver first extractstransmitter identifier62 and comparestransmitter identifier62 with all learned transmitter identifiers. If no match is found, the receiver rejects the activation signal. If a match is found, the receiver retrievescrypt key100 associated with receivedtransmitter identifier62 anddecrypts rolling code110 from the received activation signal to producecounter114. If received counter106 matches counter114 associated withtransmitter identifier62, activation proceeds.Received counter106 may also exceed stored counter114 by a preset amount for successful activation.
Another rolling code scheme generatescrypt key100 based on manufacturing key104 and a “seed” or random number. An existing transmitter sends this seed to an appliance receiver when the receiver is placed in learn mode. The transmitter typically has a special mode for transmitting the seed that is entered, for example, by pushing a particular combination of buttons. The receiver uses the seed to generatecrypt key100. As will be recognized by one of ordinary skill in the art, the present invention applies to the use of a seed for generating a crypt key as well as to any other variable code scheme.
Referring now toFIG. 4, a schematic diagram illustrating a fixed code setting which may used according to an embodiment of the present invention is shown. Fixed code systems typically permit a user to set the fixed code value through a set of DIP switches or jumpers. For example, fixedcode receiver24 andtransmitter28 may each include printedcircuit board120 having a plurality of pins, one of which is indicated by122, together with support electronics, not shown.Pins122 are arranged in a grid having three rows and a number of columns equal to the number of bits in the fixed code value. A jumper, one of which is indicated by124, is placed in each column straddling either the first and second pins or the second and third pins. One position represents a logical “1” and the other position represents a logical “0.” Various alternative schemes are also possible. For example, two rows may be used, with the presence or absence ofjumper124 indicating one of the logical binary values. As another alternative, a set of DIP switches may be used with “up” representing one binary value and “down” representing the other.
In various embodiments of the present invention, a user is asked to read the fixed code value from existingtransmitter28 orappliance receiver24 and enter this fixed code value intoprogrammable control30. A difficulty experienced by users asked to read such values is in determining from which end to start. Another difficulty is in determining which setting represents a binary “1” and which setting represents a binary “0.” For example, the pattern represented inFIG. 4 may be interpreted as “00011010,” “11100101,” “01011000” or “10100111.” Entering an incorrect value can frustrate a user who is not sure why he cannot program his fixed code transmitter. To rectify this situation, embodiments of the present invention transmits fixed code activation signals based on the fixed code value as entered by the user and at least one of a bitwise reversal of the fixed code, a bitwise inversion of the fixed code, and both a bitwise reversal and inversion.
Referring now toFIG. 5, a block diagram illustrating a programmable remote control according to an embodiment of the present invention is shown.Programmable control30 includescontrol logic130 and a transmitter section, shown generally by132.Transmitter section132 includesvariable frequency oscillator134,modulator136,variable gain amplifier138 andantenna140. For each activation signal in sequence of activation signals34,control logic130 sets the carrier frequency of the activation signal generated byvariable frequency oscillator134 usingfrequency control signal142.Control logic132 modulates the carrier frequency withmodulator136, modeled here as a switch, to produce an activation signal which is amplified byvariable gain amplifier138.Modulator136 may be controlled by shifting a data word serially ontomodulation control signal144. Other forms of modulation are possible, such as frequency modulation, phase modulation, and the like.Variable gain amplifier138 is set to provide the maximum allowable output power toantenna140 usinggain control signal146.
Control logic130 receivesuser input148 providing fixed code programming information and activation inputs.User input148 may be implemented with one or more switches directly connected to controllogic130. Alternatively,user input148 may be provided through remote input devices connected to controllogic130 via a serial bus.Control logic130 generates one or more user outputs150. User outputs150 may include indicator lamps directly connected to controllogic130 and/or remote display devices connected to controllogic130 through a serial bus.
Referring now toFIG. 6, a schematic diagram illustrating control logic and a user interface according to an embodiment of the present invention is shown.Control logic130 and electronics for a user interface, shown generally by160, can be implemented withmicrocontroller162.User interface160 includes at least one activation input, shown generally by164. Threeactivation inputs164 are shown, labeled “A,” “B” and “C.” Eachactivation input164 is implemented with onepushbutton switch166. Eachpushbutton switch166 provides a voltage signal to a digital input (DI) formicrocontroller162.User interface160 also includes oneindicator lamp168 associated with eachactivation input164. Eachindicator lamp168 may be implemented using one or more light emitting diodes supplied by a digital output (DO) frommicrocontroller162.
User interface160 can include a plurality of DIP switches, one of which is indicated by170, for implementingprogramming input172.DIP switches170 are set to match the fixed code value from fixedcode appliance receiver24 or associated existingtransmitter28.Microcontroller162 readsDIP switches170 usingparallel bus174. Alternatively,programming input172 may be implemented usingpushbutton switches166 as will be described in greater detail below.
Microcontroller162 generates control signals determining characteristics of transmitted activation signals.Frequency control signal142 is delivered from an analog output (AO) onmicrocontroller162. For example, ifvariable frequency oscillator134 is implemented using a voltage controlled oscillator, varying the voltage onfrequency control signal142 will control the carrier frequency of the activation signal.Frequency control signal142 may also be one or more digital outputs used to select between fixed frequency sources.Modulation control signal144 is provided by a digital output onmicrocontroller162. The fixed or rolling code data word is put out onmodulation control144 in conformance with the baseband modulation and bit rate characteristics of the activation scheme being implemented.Microcontroller162 generatesgain control signal146 as an analog output for controlling the amplitude of the activation signal generated. As will be recognized by one of ordinary skill in the art, analog output signals may be replaced by digital output signals feeding an external digital-to-analog converter.
Referring now toFIG. 7, a memory map for implementing operating modes according to an embodiment of the present invention is shown. A memory map, shown generally by190, represents the allocation of memory for data tables used byprogrammable control30. Preferably, this data is held in non-volatile memory such as flash memory.Memory map190 includes channel table192, mode table194 and scheme table196.
Channel table192 includes a channel entry, one of which is indicated by198, for each channel supported byprogrammable control30. Typically, each channel corresponds to a user activation input. In the example illustrated inFIG. 7, three channels are supported. Eachchannel entry198 has two fields,mode indicator200 and fixedcode202.Mode indicator200 indicates the mode programmed for that channel. In the embodiment shown, a zero inmode indicator200 indicates rolling code mode. A non-zero integer inmode indicator200 indicates a fixed code mode with a code size equal to the integer value. For example, the first channel (CHAN1) has been programmed for eight-bit fixed code operation, the second channel (CHAN2) has been programmed for rolling code operation and the third channel (CHAN3) has been programmed for ten-bit fixed code operation.Fixed code value202 holds the programmed fixed code for a fixed code mode.Fixed code value202 may also holdfunction code64 in fixed code modes.Fixed code value202 may holdfunction code64 or may not be used at all in a channel programmed for a rolling code mode.
Mode table194 contains an entry for each mode supported. The four entries illustrated are rollingcode entry204, eight-bitfixed code entry206, nine-bitfixed code entry208 and ten-bitfixed code entry210. Each entry begins withmode indicator200 for the mode represented, the next value isscheme count212 indicating the number of schemes to be sequentially transmitted in that mode. Followingscheme count212 is ascheme address214 for each scheme. The address of the first entry of mode table194 is held intable start pointer216 known bycontrol logic130. When accessing data for a particular mode,control logic130 searches through mode table194 formode indicator200 matching the desired mode. The use ofmode indicators200 and scheme counts212 provides a flexible representation for adding new schemes to each mode and adding new modes to mode table194.
Scheme table196 holds characteristics and other information necessary for generating each activation signal in sequence of activation signals34. Scheme table196 includes a plurality of rolling code entries, one of which is indicated by220, and a plurality of fixed code entries, one of which is indicated by222. Each rollingcode entry220 includestransmitter identifier62,counter106,crypt key100,carrier frequency224, andsubroutine address226.Subroutine address226 points to code executable bycontrol logic130 for generating an activation signal. Additional characteristics may be embedded within this code. Each fixedcode entry222 includescarrier frequency224 andsubroutine address226.Next pointer228 points to the next open location after scheme table196. Any new schemes received bycontrol logic130 may be appended to scheme table196 usingnext pointer228.
Memory map190 illustrated inFIG. 7 implements a single rolling code mode and three fixed code modes based on the fixed code size. Other arrangement of modes are possible. For example, more than one rolling code mode may be used. Only one fixed code mode may be used. If more than one fixed code mode is used, characteristics other than fixed code size may -be used to distinguish between fixed code modes. For example, fixed code schemes may be grouped by carrier frequency, modulation technique, baseband modulation, and the like.
In other alternative embodiments, channel table192 can hold different values forchannel entries198. For example, eachchannel entry198 could includescheme address214 of a successfully trained scheme as well as fixedcode value202.
Referring now toFIGS. 8 through 16, flow charts illustrating programmable control operation according to embodiments of the present invention are shown. As will be appreciated by one of ordinary skill in the art, the operations illustrated are not necessarily sequential operations. Similarly, operations may be performed by software, hardware, or a combination of both. The present invention transcends any particular implementation and the aspects are shown in sequential flowchart form for ease of illustration.
Referring toFIG. 8, a top level flowchart is shown. System initialization occurs, as inblock240.Control logic130 is preferably implemented with a microcontroller. Various ports and registers are typically initialized on power up. A check is made to determine if this is a first power up occurrence, as inblock242. If so, the mode for each channel is set to rolling code, as inblock244. The system then waits for user input, as inblock246. This waiting may be done either with power applied or removed.
Referring now toFIG. 9, a flowchart illustrating response to user input is shown. The user input is examined, as inblock250. A check is made for reset input, as inblock252. If so, a reset routine is called, as inblock254. If not, a check is made for activation input, as inblock256. If so, an activation routine is called, as inblock258. If not, a check is made to determine if fixed code training input has been received, as inblock260. If so, a fixed code training routine is called, as inblock262. Other input options are possible, such as placingprogrammable control30 into a download mode for receiving data related to adding or changing activation schemes.
Interpreting user input depends upon the type of user input supported byprogrammable control30. For a simple pushbutton system, a button depression of short duration may be used to signify activation input for the channel assigned to the button. Holding the button for a moderate length of time may be used to signify fixed training input. Holding the button for an extended period of time may be used to indicate reset input. Alternatively, different combinations of buttons may be used to placeprogrammable control30 into various modes of operation.
Referring now toFIG. 10, a flowchart illustrating an activation routine is shown. A determination is made as to which activation input was asserted, as inblock270. For the selected channel, a check is made to determine under which mode the activation input channel is operating, as inblock272. This determination can be accomplished by examining channel table192 as described above. For a fixed code mode, the stored fixed code is retrieved, as inblock274. A loop is executed for each scheme associated with the fixed code mode. Characteristics for the next scheme are loaded, as inblock276. This may be accomplished, for example, by obtaining a pointer to an entry in scheme table196. A data word is formed using the fixed code, as inblock278. The frequency is set, as inblock280. The data word is modulated and transmitted, as inblock282. A check is made to determine if any schemes remain, as inblock284. If so, blocks276,278,280 and282 are repeated. If not, the activation routine terminates.
Considering again block272, if the channel mode corresponding to the asserted input is a rolling code mode, a rolling code activation signal loop is entered. Characteristics of the next rolling code scheme are loaded, as inblock286. The synchronization counter associated with the current scheme is incremented, as inblock288. The incremented counter value is also stored. The synchronization counter is encrypted using the crypt key to produce a rolling code value, as inblock290. A data word is formed using the rolling code value, as inblock292. The carrier frequency is set, as inblock294. The data word is modulated and transmitted, as inblock296. A check is made to determine if any schemes remain in the rolling code mode, as inblock298. If so, blocks286,288,290,292,294 and296 are repeated. If no schemes remain, the activation routine is terminated.
Referring now toFIG. 11, a flow chart illustrating fixed code training is shown. The user is prompted for input, as inblock300. Prompting may be accomplished, for example, by flashing one or more ofindicator lamps168. Alternatively, other audio and/or visual prompts may be provided to the user as will be described in greater detail below. User input is received, as inblock302. The user enters a fixed code value. This value may be entered in parallel such as, for example, through the use of DIP switches170. The user may also enter fixed code information through one or more remote user inputs as will be described in greater detail below.Activation inputs164 provide another means for inputting a fixed code value. In a three button system, a first button can be used to input a binary “1,” a second button can be used to input a binary “0” and a third button can be used to indicate completion.
Blocks304 through314 describe serially inputting a fixed code value usingactivation inputs164. A check is made to determine if an end of data input was received, as inblock304. If not, a check is made to see if the input value was a binary “1,” as inblock306. If so, a binary “1” is appended to the fixed code value, as inblock308, and an indication of binary “1” is displayed, as inblock310. This display may be, for example, illuminatingindicator lamp168 associated withactivation input164 used to input the binary “1.” Returning to block306, if a binary “1” was not input, a binary “0” is appended to the fixed code, as inblock312. A display indicating a binary “0” is provided, as inblock314.
Returning now to block304, once the fixed code value has been received, a loop is entered to generate a sequence of at least one fixed code activation signal. The next fixed code scheme is loaded, as inblock316. Preferably, this scheme is based on the number of bits in the received fixed code. A data word is formed based on the loaded fixed scheme, as inblock318. This data word includes the received fixed code either as received or as a binary modification of the received fixed code. The carrier frequency is set based on the loaded scheme, as inblock320. The carrier is modulated and the resulting activation signal transmitted, as inblock322. A check is made to determine if any schemes remain, as inblock324. If so, the operations indicated inblocks316,318,320 and322 are repeated. If not, the user is prompted for input and the input received, as inblock326. One possible indication from the user is a desire to reload the fixed code, as inblock328. If so, the operation returns to block300. If not, a check is made to determine if user input indicates success, as inblock330. If so, the fixed code is stored associated with a specified activation input and the mode is changed to fixed, as inblock332.
Referring now toFIG. 12, a reset routine is shown. Each activation input channel is set to rolling mode, as inblock340. The user is notified of successful reset, as inblock342. Once again, a pattern of flashing indicator lamps may be used for this indication. Alternatively, if a reset routine is entered by asserting aparticular user input164 such as, for example, by depressingpushbutton switch166 for an extended period of time, then only the mode corresponding to that user input need be reset by the reset routine.
Referring now toFIGS. 13 through 16, flowcharts illustrating alternative programmable controller operation according to embodiments of the present invention are shown. InFIG. 13, user input processing including rolling code training is provided. User input is examined, as inblock350. A determination is made as to whether or not the input indicates a reset, as inblock352. If so, a reset routine is called, as inblock354. A determination is made as to whether or not the input specified rolling code training, as inblock356. If so, a rolling code training routine is called, as inblock358. If not, a determination is made as to whether fixed code training input was received, as inblock360. If so, a fixed code training routine is called, as inblock362. If not, a determination is made as to whether or not one of at least one activation inputs was received, as inblock364. If so, an activation routine is called, as inblock366. Other inputs are possible such as, for example, input specifying a data download for adding or changing activation signal schemes or modes.
Referring now toFIG. 14, a rolling code training routine is provided. The routine includes a loop in which one or more rolling code activation signals are sent as a test. A user provides feedback regarding whether or not the target appliance was activated.
The next rolling code scheme in the sequence is loaded, as inblock370. The sync counter, upon which the rolling code is based, is initialized, as inblock372. The sync counter is encrypted according to the current scheme to generate a rolling code value, as inblock374. A data word is formed including the generated rolling code value, as inblock376. The carrier is set, as inblock378. The data word is used to modulate the carrier according to the current scheme, as inblock380. The resulting activation signal is then transmitted.
The guess-and-test approach requires interaction with the user. In one embodiment, the test pauses until either a positive input or a negative input is received from the user, as inblock382. In another embodiment, the test pauses for a preset amount of time. If no user input is received within this time, the system assumes the current test has failed. A check for success is made, as inblock384. If the user indicates activation, information indicating the one or more successful schemes is saved, as inblock386. This information may be associated with a particular user activation input. The user may assign a particular user activation input as part ofblock382 or may be prompted to designate an activation input as part ofblock386.
Returning to block384, if the user did not indicate successful activation, a check is made to determine if any schemes remain, as inblock390. If not, a failure indication is provided to the user, as inblock392. This indication may consist of a pattern of flashing indicator lamps, an audio signal, a pattern on a video display, or the like. If any schemes remain, the test loop is repeated.
The training routine illustrated inFIG. 14 indicates a single activation signal is generated for each test. However, multiple activation signals may be generated and sent with each test. In one embodiment, further tests are conducted to narrow down which scheme or schemes successfully activated the appliance. In another embodiment, the programmable control stores information indicating the successful sequence so that the successful sequence is retransmitted each time the appropriate activation input is received.
Referring now toFIG. 15, an alternative fixed code training routine is provided. The user is prompted to input a fixed code value, as inblock400. User input is received, as inblock402. As previously discussed, the fixed code value may be input serially or parallelly through one or more of a variety of inputs including specially designated programming switches, activation inputs, remote input devices, and the like. If the fixed code value is serially entered by the user, a check is made to determine end of data, as inblock404. If input did not indicate end of data, a check is made to determine if a binary “1” was input, as inblock406. If so, a binary “1” is appended to the fixed code, as inblock408, and a binary “1” is displayed to the user, as inblock410. If not, a binary “0” is appended to the fixed code, as inblock412, and a binary “0” is displayed to the user, as inblock414.
Returning to block404, once the fixed code value is received a guess-and-test loop is entered. A display may be provided to the user indicating that the test is in progress, as inblock416. Information describing the next fixed code scheme is loaded, as inblock418. A data word is formed containing the fixed code, as inblock420. The carrier frequency is set, as inblock422. The data word is used to modulate the carrier, producing an activation signal, which is then transmitted, as inblock424. User input regarding the success of the test is received, as inblock426. Once again, the system may pause for a preset amount of time and, if no input is received, assume that the test was not successful. Alternatively, the system may wait for user input specifically indicating success or failure. A check is made to determine whether or not the test was successful, as inblock428. If so, information specifying the one or more successful schemes and the fixed code value are saved. This information may be associated with a particular activation input specified by the user. In addition, the mode is changed to fixed mode for the selected activation input. If success was not indicated, a check is made to determine if any schemes remain, as inblock432. If not, failure is indicated to the user, as inblock434. If any schemes remain, the test loop is repeated.
The guess-and-test scheme illustrated inFIG. 15 generates and transmits a single activation signal with each pass through the loop. However, as with rolling code training, more than one fixed code activation signal may be sent within each test. Once success is indicated, the user may be prompted to further narrow the selection of successful activation signals. Alternatively, information describing the sequence can be stored and the entire sequence retransmitted upon receiving an activation signal to which the sequence is associated.
Referring now toFIG. 16, a flow chart illustrating an activation routine according to an embodiment of the present invention is shown. Information associated with an asserted activation input is retrieved, as inblock440. A check is made to determine if the mode associated with the activation channel is rolling, as inblock442. If so, the sync counter is loaded and incremented, as inblock444. The sync counter is encrypted to produce a rolling code value, as inblock446. A data word is formed including the rolling code value, as inblock448. The carrier frequency is set, as inblock450. The data word is used to modulate the carrier frequency, producing an activation signal which is then transmitted, as inblock452. The sync counter is stored, as inblock454.
Returning to block442, if the mode is not rolling, the stored fixed code value is retrieved, as inblock456. A data word is formed including the retrieved fixed code, as inblock458. The carrier frequency is set, as inblock460. The data word is used to modulate the carrier, producing an activation signal which is then transmitted, as inblock462.
Various embodiments for programming to fixed and rolling code appliances and for responding to activation input for fixed and rolling code appliances have been provided. As will be recognized by one of ordinary skill in the art, these methods may be combined in any manner. For example,programmable control30 may implement a system which transmits every rolling code activation signal upon activation of a rolling code channel and uses guess-and-test training for programming a fixed code channel. As another example,programmable control30 may be configured for guess-and-test training using every possible rolling code scheme but, when training for fixed code, generates and transmits activation signals based on only those fixed code schemes known to be used with a fixed code value having a number of bits equal to the number of bits of the fixed code value entered by the user.
Referring now toFIG. 17, a drawing illustrating a vehicle interior that may be used to program a programmable controller according to an embodiment of the present invention is shown. A vehicle interior, shown generally by470, includesconsole472 having one or more of a variety of user interface components.Graphical display474 and associated display controls476 provide an interactive device for HVAC control, radio control, lighting control, vehicle status and information display, map and positioning display, routing and path planning information, and the like.Display204 can provide instructions for programming and usingprogrammable control30.Display474 can also provide status and control feedback to the user in training and operating modes. Display controls476 including, if available, touch-screen input provided bydisplay474 can be used to provide programming input. In addition,display474 and controls476 may be used as activation inputs forprogrammable control30.
Console472 includesnumeric keypad478 associated with an in-vehicle telephone. For fixed code training,numeric keypad478 can be used to enter the fixed code value.Programmable control30 may also recognize one or a sequence of key depressions onkeypad478 as an activation input.
Console472 may includespeaker480 andmicrophone482 associated with an in-vehicle telephone, voice activated control system, entertainment system, audible warning system, and the like.Microphone482 may be used to provide activation and/or programming inputs.Speaker480 can provide audio feedback during programming and/or activation modes. In addition,microphone482 andspeaker480 may be used to provide programming instructions, interactive help, and the like.
Referring now toFIG. 18, a block diagram illustrating a bus-based automotive vehicle electronic system according to an embodiment of the present invention is shown. An electronic system, shown generally by490, includes interconnectingbus492. Automotive communication buses may be used to interconnect a wide variety of components within the vehicle, some of which may function as interface devices for programming or activating appliance controls. Many standards exist for specifying bus operations such as, for example, SAE J-1850, Controller Area Network (CAN), and the like. Various manufacturers providebus interfaces224 that handle low level signaling, handshaking, protocol implementation and other bus communication operations.
Electronics system490 includesprogrammable control30.Programmable control30 includes atleast control logic130 and transmitter (TRANS)132.Control logic130 accessesmemory496, which holds a plurality of activation schemes. Each scheme describes activation control signals used bycontrol logic130 to transmit activation signals bytransmitter132.User interface160interfaces control logic130 with user activation inputs and outputs, not shown.User interface160 may be directly connected to controllogic130 or may be connected throughbus492. This latter option allowscontrol logic130 andtransmitter132 to be located anywhere withinvehicle32.
Electronics system490 may includewireless telephone498 interfaced tobus492.Telephone498 can receive input fromkeypad478 and frommicrophone482 throughmicrophone input500.Telephone498 provides audio output tospeaker480 throughspeaker driver502.Telephone498 may be used to contact a human or automated help system and may also be used as a data port to download scheme and software updates intomemory496.Keypad478 may be directly interfaced tobus492 allowingkeypad478 to provide user input to controllogic130.Microphone482 provides voice input throughmicrophone input500 tospeech recognizer504.Speech recognizer504 is interfaced tobus492 allowingmicrophone482 to provide input forcontrol logic130.Sound generator506 supplies signals for audible reproduction tospeaker480 throughspeaker driver502.Sound generator506 may be capable of supplying tone-based signals and/or artificial speech signals.Sound generator506 is interfaced tobus492 allowingcontrol logic130 to send audible signals to a user.
Display controller508 generatessignals controlling display474 and acceptsdisplay control input476.Display controller508 is interfaced tobus492 allowingcontrol logic130 to initiate graphical output ondisplay474 and receive user input fromcontrols476.
Radio510 is interfaced tobus492 allowingcontrol logic130 to initiate display throughradio510 and receive input from controls onradio510. For example, volume and tuning controls onradio510 may be used to enter a fixed code value. Rotating the volume knob may sequentially cycle through the most significant bits of the code and rotating the tuning knob may sequentially cycle through the least significant bits of the code. Pushing a radio control can then send the fixed code to controllogic130.
Wireless transceiver512 is interfaced tobus492 throughbus interface494.Wireless transceiver512 communicates with wireless communication devices, represented by514 and516, such as portable telephones, personal digital assistants, laptop computers, and the like, through infrared or short range radio frequency signals. Various standards exist for such communications including IEEE 802.11, Bluetooth, IrDA, and the like.Transceiver512 is interfaced tobus492, permittingwireless devices514,516 to provide input to and receive output fromcontrol logic130.Wireless devices514,516 may also be used as a data port to upload code and scheme data intomemory496 and/or to exchange data withprogrammable control30 for assisting inprogramming control30.
Data port518 implements a data connection interfaced tobus492 throughbus interface494.Data port518 provides a plug or other interface for exchanging digital information. One or more standards may be supported, such as IEEE 1394, RS-232, SCSI, USB, PCMCIA, and the like. Proprietary information exchange or vehicle diagnostic ports may also be supported.Data port518 may be used to upload code and scheme data intomemory496 and/or exchange data withprogrammable control30 for assisting inprogramming control30.
Referring now toFIG. 19, a block diagram illustrating distributed control elements interconnected by a vehicle bus according to an embodiment of the present invention is shown.Bus492 is a CAN bus.Bus interface494 may be implemented withCAN transceiver530 and CANcontroller532. CAN transceiver530 may be a PCA82C250 transceiver from Philips Semiconductors. CAN controller232 may be a SJA 1000 controller from Philips Semiconductors. CAN controller232 is designed to connect directly with data, address and control pins of certain microcontrollers such as, for example, an 80C51 family microcontroller from Intel Corporation.
In the example shown,control logic130 andtransmitter132 are supported by afirst bus interface494.Activation inputs164 provide inputs to, andindicators168 are driven by,microcontroller534 which is supported by asecond bus interface494. Programming input switches172 are connected in parallel tomicrocontroller536 which is supported by athird bus interface494.Serial bus492 andseparate interfaces494 permit various components ofprogrammable control30 to be placed in different locations withinvehicle32. One advantage of separate location is thattransmitter132 need not be placed near user controls164,168,172. Instead,transmitter132 may be placed at a location optimizing radio frequency transmission fromvehicle32. Another advantage of separately locating components ofprogrammable control30 is to facilitate the design ofvehicle interior470. For example,activation inputs164 andindicator lamps168 may be located for easy user access such as in an overhead console, a visor, a headliner, and the like. Programming input controls172, which would be infrequently used, may be placed in a more hidden location such as inside of a glove box, trunk, storage compartment, and the like. Yet another advantage of a bus-basedprogrammable control30 is the ability to interfacecontrol logic130 with a wide variety of vehicle controls and displays.
While embodiments of the invention have been illustrated and described, it is not intended that these embodiments illustrate and describe all possible forms of the invention. Rather, the words used in the specification are words of description rather than limitation, and it is understood that various changes may be made without departing from the spirit and scope of the invention.