0

When the 433 transmitter is wired close to the Arduino Due (within 12" away), it works as expected. But when I put it on the end of a 15' cable, it has the following 2 symptoms:

-All the other nearby 433Mhz transmitters and receivers stop working. (I've never seen this happen from any other cause).

-My Extech 480836 EMF meter shows a big jump in electromagnetic radiation along the entire length of the 15' cable (it jumps from 0.1 uW/m2 to 3 mW/m2 a few inches away). The reading only goes down to normal if I unplug the transmitter's data wire from the Arduino.

The transmitter in question is still able to send signals correctly when wired with a 15' cable to the Due (properly activating remote switches), even though it disables every other 433 transmitter in the area.

I've tested this with 2 different kinds of 433 transmitters, getting the same result. Both of the transmitters work fine whenever wired closely to the Arduino Due, and both work as expected when connected to an Arduino Uno. The problems still occur even if I'm not sending any wireless transmissions from the code. Disconnecting the transmitter's data wire from the Arduino Due causes the problem to stop immediately.

I'm using the RCSwitch library. The simple code below works fine on an Arduino Uno, whether the transmitter is wired far or close to the Uno. The same code works fine with the Due when the transmitter is close to the Due. But when the transmitter is wired 15' away from the Due, then the problems occur. On the Due I've tested using 5v and 3v for powering the transmitter. Changing the voltages doesn't seem to affect the problem.

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);

  // Transmitter is connected to Arduino Pin #8 
  mySwitch.enableTransmit(8);
}

void loop() {}

Why am I having this strange behavior? Do you have any suggestions on how to fix it?

  • Try adding a decoupling capacitor between VCC and GND on/near the transmitter. You could also try shielded wires. It might be helpful to know what specific kind/model of transmitter you use. – Gerben Oct 26 '15 at 18:48
  • I just tried adding a 1uF decoupling capacitor, and it didn't seem to have an effect on the problem. One new thing I learned is that when the above code is run on the Due, the output pin is constantly outputting 3 volts. The same code on the Uno doesn't cause the pin to output voltage. – Jerry Oct 26 '15 at 19:28
  • I found someone else who had the exact same problem on the Arduino forum: forum.arduino.cc/index.php?topic=215385.0 . Nobody responded to his question. – Jerry Oct 26 '15 at 19:39
0

I think I found the problem. It seems that there's an anomaly with the Due where when a pinmode is set as OUTPUT, it sets the pin as HIGH by default, whereas with the other Arduinos it's set as LOW. This forum page is discussing the problem: http://forum.arduino.cc/index.php?topic=154869.0

Likewise this page suggests the problem is a bug with the wiring_digital.c file: http://forum.arduino.cc/index.php?topic=185230.0

In RCSwitch.cpp, this is the enableTransmit code:

void RCSwitch::enableTransmit(int nTransmitterPin) {
  this->nTransmitterPin = nTransmitterPin;
  pinMode(this->nTransmitterPin, OUTPUT);
}

It seems the code sets the pin as OUTPUT, which would cause an anomaly on the Due alone.

I solved the problem by calling the enableTransmit function just before sending a signal, and then calling disableTransmit() immediately afterwards. Can anyone think of a cleaner/better solution?

Out of curiosity, can anyone suggest what a standard transmitter might be sending when the data line is constantly held at HIGH?

| improve this answer | |
  • 1
    It just sends a 433Mhz signal, all the time. Which would explain why all other receivers/transmitters don't work any more. These modules send data by turning the signal on an off (On-off keying). – Gerben Oct 27 '15 at 10:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.