I did some learning experiments using a 433 Mhz garage door remote control and what left me in doubt was the following: If I keep a button pressed, even if it is a button not yet learned by the system, no other button, even a button learned, it will work. It's like the signal is occupying the receiver. Imagine a playful kid who wants to do some harm by playing and lying a soldered-on remote control near some garage. The owner of that garage will be very upset when he realizes that his remote control has stopped working. I'm using garage as an example but it could be an alarm the owner can no longer set because, unbeknownst to him, he has some control nearby sending an RF signal just to occupy the receiver.
Is it like that or did I do something wrong in the tests? I used the RC.switch.h library and a common RF 433Mhz receiver and a garage key fob.
Sadly, sounds like the likely results from the old, non-digital units where the RF is pulsed by keystrokes. There are so many old implementations: an old Sears unit (1980 vintage) only had one button; press to open or close.
The keychain I used has the HT6P20B chip. And it sends signals when you press the keys. There are 2 keys. If I press 1 directly, it occupies the receiver and the other one, which would be the correct one, does not work. This makes the system fragile against anyone who wants to disturb it.
So far you have not convinced me that your experiment was actually transmitting RF while the button was pressed. Your conjecture would mean the devices would be illegally transmitting continuously.
I agree. The button logic has no "key rollover". That is extremely common in consumer devices. The transmitter is unlikely to be active while the key is down. It only sent a burst and is waiting for key release and any other key to initiate another transmission.
With the IR remotes, some keys send repeat codes when held down. But any interference that is caused by that is ruled out by use cases (the equipment can't be blamed if the user employs it in some non-sensible way).
Due to duty cycle limitations imposed by the spectrum regulations, it's not likely that repeat codes would be enabled on a 433MHz link.
Your "learning experiment" leaped to speculation before collecting any hard data on the transmitted stream. You could do that with a simple test program reading a receiver, or a scope. Just running out of the box software like RCSwitch won't help, it obscures the underlying behaviour.
I tried to understand what they said but I don't have that much knowledge. I put a transistor + 1 LED on the output of the RF 433 mHZ receiver and when I press button A or button B I see the LED "imitate" the bursts in flash. The arduino, using the RCswitch, only turns on a second led if button B is pressed. But if I keep button A pressed, and at the same time press button B nothing happens, because the bursts emitted by button A prevent the arduino from "understanding" the code sent by button B.
If I release the A button, and just press the B button, OK.
I saw it here now on the serial monitor, when I press button A the code received is 140160869. When I release A and press B the code is 140160853 and when I press both together either A after B or B after A the code is 140160885.
I took a second keychain and pressed any button, the code read was another value of course. I kept this second key pressed, and pressed buttons A and B on the first key, there was no reception. It continued to show the code for the second keyring.
The second locksmith is disturbing the reception of the first locksmith.
So all it takes is a spy keyring nearby sending any code to disrupt the functioning of the original keyring.
Now with photo.
CTRL 2 turns the relay on and off.
CTRL1 is foreign to relay.
But if I hold down the A or B buttons, CTRL 2 stops turning the relay on or off.
That is, CTRL1 generates bursts at the same frequency that confuse the relay. While these bursts are occurring the relay cannot identify the CTRL 2 code.
Is this normal and do we have to live with it ?
Imagine someone hiding such an energized key chain near a garage. The owner wanting to leave or enter, and nothing in his control works...
I think the correct thing would be to completely ignore signals not learned by the relay board.
No. The firmware can only deal with one button at a time, regardless of whether it is continuously re-transmitting or not.
One key down, all others ignored. Easy to believe.
If it was one remote locking out another as you fear, where holding down a button on remote A locked out all the buttons on remote B, then…
all you've done is discover a horrible truth - RF signals can be jammed in this and other ways.
But prolly just dumb firmware that sends the button's coded signal when you press it, then waits for you to get your finger off the button and does nothing else until you do.
Then, in addition to the lack of rollover in the button decode firmware, it is transmitting periodically. That is probably to increase the chance of a successful transmission when the path is varying, for example when the operator is moving their hand around, or it is in a moving car.
That blocking a transmission with another transmitter keyring is, shall we say, normal.
Very fragile, a neighbor may no longer be able to leave the house, or enter, and not even know why. Just have a playful kid around with a second key fob even if it hasn't been learned by the garage door receiver unit.
I thought that in the arduino receiver code it was possible to solve this.
I believe the HT6P20B will continue sending the code for a key as long as it is depressed. If a second key is depressed, it will continue sending the first code. I looked at this a while back.
On/Off Keying Amplitude Modulated receivers tend to track the strongest received signals when there are cochannel emitters with significantly different received strength. That is with a keyfob at some distance and a keyfob at 4x the distance, both transmitting simultaneously, the closer one will probably be correctly received. If the received signal strengths are close to being the same, the coding on the signals interfers and neither are detected.