I ordered a rf 434MHz transmitter and receiver for a hobby project.
It only needs to transmit a solid '0' or a '1' (this won't change more than once every 5s, probably much longer), so I thought I could get away with just the pair.

However it looks like it has trouble sending DC signals (they initially send properly but are quickly lost, I guess a low pass filter). I checked and it can send a ~8KHz square wave just fine (although varying duty cycle in the TX signal from 5%-95% still causes a nearly square-wave signal at the RX).

So I may need something like Manchester encoding, so that a solid '0' will still switch enough for the tx/rx pair.

It looked like the HT12E and HT12D would do exactly what I need. But, I can't find them anywhere except on Amazon for ~$10 a pop, or some site in a language I don't understand.

Are there any cheap IC's that would help me accomplish this (encode a 0 and 1 into some format with enough transitions, like Manchester)? Or a solution with discrete components that I am not thinking of?


  • 2
    \$\begingroup\$ Both Holtek ICs you mention are available through the European distributor tme.eu for less than a dollar each (use their search engine), they ship to the US too and btw I'm pretty surprised there's such a difference in prices. \$\endgroup\$ – Karzon Aug 3 '16 at 0:02
  • 1
    \$\begingroup\$ Have you thought about using 2 frequencies for transmitting the 2 logic signals? \$\endgroup\$ – sa_leinad Aug 3 '16 at 0:36
  • \$\begingroup\$ If you're okay with using Arduino then RadioHead with a ATtinyX5 is a decent solution. \$\endgroup\$ – Ignacio Vazquez-Abrams Aug 3 '16 at 0:59

Your transmitter and receiver use ASK - Amplitude Shift Keying type of modulation. This means that when you input a "1" to the transmitter that it is producing the carrier wave at 434 MHz continuously. When you input a "0" to it there is no carrier wave produced.

You are likely correct that there is a filer involved, likely in the receiver, which is cutting off the constant carrier it is receiving when you are transmitting a "1", and the xmitter is therefore continually producing the carrier. This would be a high-pass filter, not a low-pass filter.

So, I think you can get around this problem by simply pulsing the transmitter on and off with something like a 555 timer set to an arbitrary low frequency - say 1,000 Hz - when you want to transmit a "1". Then on the receiving end merely half-wave rectify the output of the receiver with a low frequency signal diode (e.g. 1N914 or 1N4148), and a small filter cap (approximately 0.1 Mfd ceramic), and perhaps a bleeder resistor as shown in the schematic below. This will turn the 1,000 Hz ASK modulation into a steady high level, signifying the reception of a "1".

When you "transmit" a "0" the receiver will output approximately 0.0 volts, so the half-wave rectifier will output a steady 0.0 volts signifying reception of a "0". ( You are not really "transmitting" because there is no carrier!)

Since your "data" rate is so low (5 secs on, 5 secs off), the half-wave rectifier component values are not very critical. A little experimentation with different 555 frequencies at the transmitter end and half-wave capacitor values at the receiver end should yield workable results quickly.


simulate this circuit – Schematic created using CircuitLab

If your receiver suffers from some reasonable degree of random carrier noise acquisition, you might be able to filter out the resulting output noise pulses by adding D2,D4,Q1,R2,R3 & R4 to the basic half-wave rectifier circuit. Random noise will produce an average DC voltage across C1 of about 1/2 Vcc ( presumably 2.0 - 2.5 volts). D2,D4 and Q1 form a crude comparator which will only switch on (creating a low output) when the real 1K signal comes along. The lower you make the 555 modulating frequency, the better will be your noise immunity.

  • \$\begingroup\$ Thanks. Unfortunately when transmitting a '0' the receiver tries to lock onto random noise. So instead of a solid '0' you get a bunch of oscillations. \$\endgroup\$ – jbord39 Aug 3 '16 at 3:16
  • \$\begingroup\$ "Locking on to random noise" is one of the primary disadvantages of those ultra-cheap transmitter/receiver kits. If you need better reliability, then you may have to move on up to a solution less like a cheap toy. \$\endgroup\$ – Richard Crowley Aug 3 '16 at 5:07
  • \$\begingroup\$ Better to use a NE555 to transmit 2 frequencies (switch another resistor in parallel with the frequency setting resistor, for a higher frequency, for '1'). At the receiver, something like an NE567 tone decoder to distinguish between high and low frequencies. Then you can distinguish between "on", "off", and "out of range, or transmitter died". \$\endgroup\$ – user_1818839 Aug 3 '16 at 10:08
  • \$\begingroup\$ Brian, I was trying to favor the use of discrete components in my answer since the OP requested that as an optional solution. Using "expensive" ICs would kind of defeat the purpose of using a cheap xmitter and rcvr like these. It seemed to me the OP was trying to do this on the down-&-dirty. \$\endgroup\$ – FiddyOhm Aug 3 '16 at 10:58

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.