350Mhz RF Remote. I know there is 315mhz and 433mhz.

Hey guys.

I'm working on a project to control my ceiling fans from a PC or Arduino. It's a part of a larger home automation project.

I would like to capture the RF signal generated by my Hunter Ceiling fan remote for Light Toggle, Fan Slow, Fan Med, Fan High..etc and then use a PC or Arduino to broadcast that signal and control my fan.

I've read about projects like that working on 315mhz garage door/power gate remotes nicely using Arduino an 315Mhz or 433Mhz RF adapter .

My hunter says it operates on 350mhz on it's box. Any solutions here? I could always use a relay board and just wire them directly to the remote to simulate button presses. I'd like a cleaner solution.

Playing with the coils a bit on one of these might detune it enough to get to 350Mhz. The limitation is that the transmitters on these modules are in a can so you really can't do much to the circuit itself. There are plenty of circuits on the internet however which you can tune anyway you want. I have even seen 555 timers being used. Is it AM or FM?

Most small remotes use a SAW resonater to determine the frequency they use, and they arnt adjustable.
If its on 350 Mhz , you will have to source a 350 Mhz receiver or make one.

According to the FCCID it's 350Mhz. I assume it's FM.

Well, it looks like I'm going to use relays to simulate button presses! :).

OP, by any chance is the remote using a module? If so, just remove it from the remote.

I have several of these modules that I pulled out of remote outlets and remotes when they stopped working.

Wooooooah!!! Super Sweet! I took apart the remote and found a module!

Now I just need to figure out how to remove it from the button board and how to attach it to the arduino! How many RF transmitters can I attach to an Arduino? I havn't looked into setting it up yet. Ha! Thanks!

usually it is just a single pin serial connection. You have ground, data, and vcc. Whatever you shift into the data pin is output through the rf module. Usually the remotes use an encoder IC such as PT2262, etc.. which outputs the serial stream. Before you remove that module, I would look at the wiring and determine which codes the button presses are activating by looking at the datasheet for the encoder.

Otherwise, you will need to look at the serial stream using a logic analyzer (or an arduino set to look at it for you.)

So, since the module is using only 1 line for data, you could could as many as you have I/O lines. Though it wouldn't make any sense to use multiple modules of the same frequency. Just reuse the module with different data for each remote. Somewhere on these forums I saw code to emulate the PT2262 encoders through these modules.

Oddly, I found it and it was about a ceiling fan remote actually: http://arduino.cc/forum/index.php/topic,69960.0.html

The actual library is here: http://code.google.com/p/rc-switch/

Nevermind what they are saying about 433Mhz, the module takes care of that part. The software doesn't care. We are only dealing with serial bits.

To capture your codes using that library, instead of connecting the reciever module data pin to the arduino, connect up the DATA signal that is going into your transmitter module to the arduino.

As I mentioned, whatever goes out of the transmitter comes out of the receiver. So since you do not have a 350MHz receiver module (unless you wanted to take apart your ceiling fan and extract the module!), you can just pretend you do by connecting up to the transmitter output directly.

I hope that makes sense.

OK. I'm glad I've got the remote thing figured out on paper at least. Now that I look into the Arduino side of the project things change.

There are so many different boards, I dont know which to choose or what makes them unique or different.

What I'm trying to impliment/need

  • Arduino Board
  • Ethernet Shield
  • X10 Controller wired directly to the Arduino via one of the many ways I have read to do that.
  • Optional relays for other misc outputs I could want someday.
  • RF for Ceiling Fan provided by factory remote OR relay board if I have to.
  • RF for garage door provided by 315mhz module (is this called a shield as well?) (what I don't know with regards to the FM module, is if it will be powerful enough to reach my gate from where I physically place the Arduino. I was going to use my old Cat5/phone cables and install a separate transmitters near the gate and connect it to the Arduino.)

What do I need to buy to start playing with this and make sure I have the expandability/correct flavor of Arduino?[/list]

Well, since you are starting out not completely understanding the full scope, start with an Arduino Mega2560 which will have the most peripherals and IO. Once you nail it down, you can go with a smaller arduino for the final application. Or, in the reverse, start with an Uno and work on implementing one feature at a time and perfect your control methodology and then move on to the next. At that point, you will fully understand your requirements. If you are like me, you are going to be working on one feature at a time with alot of experimenting to get each one to work properly. For me, at least, trying to jump right in from the big picture and do everything at once gets confusing especially when you don't understand what 'everything' is. Break your project down into its individual bits and pieces and get each on working as you want first, then how to tie it all together will be much clearer.

If you use cat5 cable to place your remote at a distance, you will need a differential driver. Digital signals do not do well over distance. That's really not a big deal though. You just connect a driver such as a MAX491 for example on one end to convert your single-ended signal into a differential signal, and another on the other end to convert the differential signal into a single-ended one. (Trust me, that isn't as complicated as I just made it sound.) If the positions of the arduino and gate receiver are relatively fixed, you can also investigate uni-directional antennas such as a yagi which you point directly at the receiver. Of course that only works if you have unobstructed line-of-sight.

By the way, you can use the differential driver to do anything over long distances, such as having an actuator some distance from the controller. I suspect that for home automation, you will be using them alot. It will save you alot of headaches trying to troubleshoot something that worked on the bench, but didn't work when installed if you go into it knowing that. LVDS is another term for this. Again, it is not as complicated as it sounds. The ICs do all the work for you and you just focus on the digital signals.

Here is a page that explains differential driving without appearing more complex than it really is:

Typically the datasheets make these things look intimidating, but they aren't really. The most important thing is to match your impedence on either side. A cat5 cable is designed for 100ohm impedence. On the differential transmission side, you split this as 50 ohm for each line. At the receive side, you place a 100 ohm resistor across the pair. You drive one twisted pair for each differential signal. D is the data you want to send, and R is the data you want to receive.

Differential driving is really good to know. I would have tested on the bench, hooked it up in a semi-permanent installation to test and said WTF?

I think I found a better way to wire my project.

This relay says it can learn 315mhz codes.
http://www.ebay.com/itm/315-DC-12V-Single-Channel-Learning-Code-Wireless-Remote-Control-Relay-/261157962603?pt=LH_DefaultDomain_0&hash=item3cce3a436b

I could then put these in/near my small home (I'm betting they will be in range) and wire to my gates/gerage door and control them with one 315mhz transmitter on the Arduino. It would just depend on which code it broadcasts, right? Just want to conform I'm on the right track before I start buying stuff.

Its either that or I play with the remote relays that are on different channels, but I think different code would be better/more reliable. Wouldn't I need a bunch of different channel transmitters if I had different channel remote relays?

The "transmitter" should just be thought of as a wire. What you put into it, comes out of the receiver. That's all. The channels, house codes, and all the rest of that comes from the encoder on these remotes. But, since you are using the arduino, YOU are the encoder and have complete control over all of that. So, no... you would use only one 315Mhz module for all 315Mhz remotes, one 350MHz module for all 350Mhz remotes, etc... Your code handles the channels, housecodes, etc...

The rfswitch library I link you to handles all of that. You send whatever you want over the RF module.

There is nothing locking the actual radio module to specific channels, etc... all of that is done in the encoder. Check out the datasheets for a PT2262 attached. Nearly all of these remotes use this or some clone of this.

PT2262.pdf (454 KB)

Ohh. Thank you. That means that rotating codes could be a possibility if I learned how to use that IC to it's potential?

Can I play with the transmitters with just a computer for the moment, or do I need the Arduino right now too? I've got multiple computers with serial ports. What I cant seem to find is the equivalent of the library or an app that can tell the transmitter what to do. Windows, Linux. I dont care.

Incredible! Possibilities are limited only by ones imagination and programming abilities.

I was under the impression that channel was a slight change in frequency? I read the RC-Switch manual and missed that part.

I am not aware of any software on the computer that allows you to play with these modules. If you are handy with visual basic, you could progran something, I'm sure. But easier to just create a sketch, include that RF-Switch library, connect the data line to one of your pins on the arduino, and play with the examples included in that library. I just noticed that it is missing a nice example for setting commands from the serial port. I could write an example up for you, but I am probably not going to have time to do it this weekend. It would be useful to me in future project as well, so I will do it as soon as I have the time. In the meantime, I suggest just playing around with it.

You won't be using that encoder IC, but the datasheet helps explain how the protocol works. The RC-Switch library is meant to emulate that IC.

OK. I found a 350mhz Serial RF transmitter in a remote I had for the lights. I De-soldered it from the button board and it's free to use. It has three pins. VCC, GND, SIGnal. I've got an Arduino Uno, loaded the IDE, and can blink some LEDs.

Where do I go from here?

I imagine what I need to do is hook the button side of the remote to the Arduino and capture a couple codes so I know what to transmit with the transmitter. THEN hook the transmitter up and try transmitting.

How do I do that? Where do I go? I need some direction. :slight_smile: Thanks!

Take the line on the remote that was original connected to the signal pin on the module. Connect that line into your arduino and use the RCSwitch library example to read the codes when you push a button. You can remove it when done.

After you have all the codes, you connect the signal pin on your module to the Arduino, power it, send those codes you figured out using the RCswitch library.

There are examples in there that you can use to get the codes and to play with sending them.

Ohh Thank you.

I loaded the library and opened the receive simple example to play with. When I uploaded the program the L LED remains solid. I get no response from anything.

If I revert back to the blinking LED program the L LED will blink indicating all is well along with my LED that I plugged in.

I'm not sure how to troubleshoot this.

I know SPOOOON feed the new idiot :slight_smile:

The LED doesn't always blink. Do you have the module wired up already? If so, the library is meant to output to the serial port. So, you have to open the Serial Monitor in Arduino.

Yeah I know I have to have serial monitor open. I though a little program together that would write hello world 100 times then stop, and it worked. So I know that serial monitor is working.

At this point I think I'd like to somehow test that pin 2 can read anything with RCSwitch receive running.