Author Options:

Why doesn't my MX-FS-03V / MX-05V 433MHz trick work? Answered

This is for someone who has balance problems, only needs a walking cane during an episode, and can physically walk away from the cane quite a distance before it's actually needed (oops).

The idea is to attach the transmitter (no arduino) to a walking cane, and have receiver + [small] arduino + buzzer in a pocket/bag.

Transmitter is pretty dumb: I connect gnd or vcc to data (whichever works best). The idea is to figure out how the receiver behaves when there's no transmition (high, low, or random) and choose to transmit whatever distinctively says "I'm alive" :)

The receiver setup (at the moment) simply connects one of the rx pins (there are 2) to an analog input on an arduino, samples it in a loop and blurts it to Serial.

Now when I simulate the input with "native" gnd or vcc, it says 0 or 1023 like it should, but when I connect the receiver, it's quite erratic. Not as random as sampling a brick, but not any more useful.

Any idea what I'm doing wrong?


you're transmitting DC there it's no information in the signal. At least modulate it with a Tone.

What do you know? It actually works.

I was assuming that this was a "digital wire" and something was modulating "we have HI" or "we have LO" over something or another.

I only have the single Arduino at the moment, so I simply generate a tone and drive it (along with GND and 3.3V) to the the transmitter with cables (a bit daft to transmit to a receiver that is connected to it physically, but good enough until I get my hands on an oscillator or something).

If I connect a buzzer to the Reveicer, I can tell between "buzz" and "noise".

For the Arduino to tell between the two, I'm experimenting now with a histogram: "buzz" looks like almost 50% 0 and alsmost 50% a single value, while "noise" looks noisier :)

I'll try to see maybe somebody wrote something smarter for this, but either way I'm 99% sure I can handle this.


use a digital filter. There's some stuff on here about it. Just use a 555 timer to drive the tone.

I'll get a 555 etc. soon. Meanwhile, I "cheat" by sending tone from the [receiver's] arduino to the transmitter.

My ad-hoc signal detection code seems to work quite fine.


4 years ago

It works. I need to make it smaller, add off-switches and a potentiometer for sensitivity, etc. but that's just cosmetics.

Transmitter (right) also has a 555 oscilator driving a 50Hz square wave as data (thanks for the tip, @steveastrouk).

Code for the Arduino on the receiver side is here.


There are at least three different ways to set the range. Pick one.

The (minimal) spec sheet I saw says both pieces of this device want 5 Vcc, but one source says 3 to 8 volts -- less voltage equals less range, while more voltage equals more range, then more heat, shorter battery life, possible interference with other stuff on the 433 mHz band, and blowing it up, in that order (they cost $1). A couple of simple, inexpensive, adjustable voltage regulators and 9-volt batteries should give you any "shortened" range you wish. If you use potentiometers to adjust the supply voltage(s), they will get lower over time, diminishing the range. Using higher voltage to make the receiver more sensitive, or the transmitter stronger will give different kinds of results. YMMV.

Next, there's a threaded, painted iron slug in a green cage in the middle of the receiver. Use a non-ferrous tool (cut a scrap of plastic) to tune the frequency (and range) so it's matched to the transmitter (which is not adjustable). You could power everything with 5 volts (e.g., 4 rechargeable batteries) and use the tuning slug to de-tune the range. Don't mess with the wire coils -- glue them in place before they get disturbed. Their shape changes the 433 mHz frequency and quality.

The antenna length(s) affect range. For maximum distance use antennas that are 27 and 1/4 inches (69.3mm) long (that's the resonant wavelength of a 433 mHz signal) (Google "convert frequency to wavelength"). If you want even more distance, you can try longer, multiple lengths (54.5", etc.) but there is a limit to how well the weak transmitter can load a long wire (and/or cause interference). The receiver typically benefits from a longer wire antenna. To save space, wind the antenna in a uniform coil, or cut it in half, quarter, etc. A one-eighth-wave antenna would be just slightly shorter than 3 1/2" and provide diminished range. Or just try no antenna.

Thanks for the tips. I'll try to experiment with this.

I like the idea of a regulator knob on the transmitter (cane) side since it doesn't make the receiver (wrist) side bulkier.

There current prototype is already small enough for practical use by a
real patient, but there are still occasional false alarms (and I'm 5
timezones from my FTDI at the moment :( ). The bright side is that there will be future versions where I can try the stuff you suggest, so thanks again.


I don't understand the point of this. Are you looking for the user to have their pocket vibrate when they get near the cane? How does that help someone who needs the cane to keep their balance from time to time? Need to better understand the problem before recommending a good solution. Not too sure your current idea is going to do what you are wanting it to do.

Are you looking for the user to have their pocket vibrate when they get near the cane?

No. It would only beep/vibrate when it gets away from the cane. Otherwise - as you point out - it isn't very helpful.

If the buzzer goes off after they get 4 meters away that may drive them nuts. Some times they may want to get further from it than that. What if they are still within range but still can't find it. It would be better to have a button in there pocket they can press to have the cane signal them to where it's at.

But to properly see what's going on with the receiver and know when it stops receiving a signal. You will need an oscilloscope that can take a quick snap shot of the signal so you can understand what is being received. You will likely need additional hardware to translate that signal into something the Arduino can identify and use.

What if they are still within range but still can't find it.

If you know you're within 2-3m (and never left that range), you can most probably remember where you've left it (or at least look around and find it).

Still - You're right in cases where the user has managed to get far (it was a noisy street and until the buzz could be heard, the user might have walked a distance).

To solve this, we could have an NC/NO switch that reverses the "when to buzz" logic:

You get too far, it buzzes. If you know where the cane is (99% of the cases), you simply go back there and the buzzing stops. If you don't - you flip the switch and then it stops buzzing (already a relief) and would only buzz when you're back in range (and then you flip the switch again to "normal mode").

But to properly see what's going on with the receiver and know when it stops receiving a signal. You will need an oscilloscope that can take a quick snap shot of the signal so you can understand what is being received.

IIUC, X-FS-03V / MX-05V don't show the actual RF signal received, but rather a digital high/low. At the moment, whatever happens doesn't seem to be affected by whether the transmitter is working or not (maybe it's defective - we shouldn't rule out that possibility), but I could try - instead of dumbly dumping the values to Serial - to compute some statistical values (e.g. mean and std-dev) and see whether the behavior is significantly different with and without the transmitter. Thanks for the tip.

The use case here is that the user got far enough from the cane to not remember where it was. This could happen (at least at the moment), but if the buzzer went off each time the user got away 2-3m* from the cane - it wouldn't (at least I hope so).


* We'll need to find a way to make the transmitter weak enough for the receiver to lose signal at 2-3m (perhaps an imperfect tinfoil Faraday cage?).