Arduino Basics - 433 MHZ RF Module With Arduino Tutorial 1
Arduino Basics - 433 MHZ RF Module With Arduino Tutorial 1
Lin kt khc
To Blog
ng nhp
Arduino Basics
An Arduino blog that follows the footsteps of an enthusiastic Arduino user, from the ground up. Level : Basic
Home
Feedback Page
23 June 2014
Search
Translate
Chn Ngn ng
c h tr bi
Dch
Pages
Arduino Basics Projects Page
Arduino Basics YouTube
Videos
Feedback Page
Home
Subscribe
Posts
Comments
My Arduino Videos
If you are looking for a way to communicate between Arduinos, but don't have much cash at your disposal,
then look no further. These RF modules are not only affordable, but easy to use. They are much easier to
set up than an XBee, plus you can use them without the need of a special shield. Before you rush out and
buy a ton of these modules, make sure that you are not breaking any radio transmission laws in your
country. Do your research, and buy them only if you are allowed to use them in your area. There are a few
[OPTIONAL] libraries that can be used to help you and your particular project.
Virtual Wire (at ICStation)
RadioHead - which supercedes VirtualWire
RC-Switch for communication with remote controls
Ninjablocks 433 Utilities
I will mention at this point however, that I did NOT use any libraries in this particular tutorial. That's right. I will
show how easy it is to transmit data from one arduino to another using these RF modules WITHOUT libraries.
Also if you are looking for an easy way to record the signals and play them back without a computer - then
jump to this tutorial.
Video
pow ered by
Blog Archive
2014 (9)
November (1)
October (1)
September (2)
August (1)
July (2)
June (2)
433 MHz RF
module with
Arduino
Tutorial 2
433 MHz RF
module with
Arduino
Tutorial 1
2013 (13)
Project 1- RF Blink
2012 (11)
2011 (25)
Firstly we need to test if the RF modules are working. So we will design a very simple transmit and receive
sketch to test their functionality. We will use the Arduino's onboard LED to show when the transmitter is
transmitting, and when the other Arduino is receiving. There will be a slight delay between the two Arduinos.
You can solder an antenna onto these modules, however I did not do this, I just kept the modules close
together (1-2cm apart). I also found that I was getting better accuracy when I used 3V instead of 5V to power
the receiver. While using 5V for VCC on the receiver, I would get a lot of interference, however with 3V, I
hardly got any noise. If you find you are getting unpredictable results, I would suggest you switch to 3V on
the receiver and move the transmitter and receiver modules right next to each other. Remember this is just a
check... you can experiment with an antenna or a greater distance afterwards.
Here are the parts that you will need to carry out this project:
Parts Required
2 x Arduino UNO or compatible boards
Breadboard
Wires
RF Module (433 Mhz) - Transmitter and Receiver pair or the 315 Mhz version
Total Pageviews
1,052,514
The Transmitter
The transmitter has 3 pins,
Notice the pin called "ATAD". It took me a while to figure out what ATAD stood for, when I suddenly realised
that this was just a word reversed. It should be DATA (not ATAD). Nevertheless, this is the pin responsible
for transmitting the signal. We will make the Arduino's onboard LED illuminate when the transmitter pin is
HIGH, and go off when LOW as described in the following table.
And this is the Arduino Sketch to carry out the data transmission.
Website: http://arduinobasics.blogspot.com
Transmitter: FS1000A/XY-FST
8 ------------------------------------------------------------- */
9
10 #define rfTransmitPin 4 //RF Transmitter pin = digital pin 4
11 #define ledPin 13
12
13 void setup(){
14
pinMode(rfTransmitPin, OUTPUT);
15
pinMode(ledPin, OUTPUT);
16 }
17
18 void loop(){
19
20
digitalWrite(rfTransmitPin, HIGH);
21
digitalWrite(ledPin, HIGH);
22
delay(2000);
23
24
digitalWrite(rfTransmitPin,LOW);
25
digitalWrite(ledPin, LOW);
26
delay(i);
27
28 }
29
//Variable delay
The Receiver
If all goes to plan, the onboard LED on this Arduino should light up (and go off) at the same time as the
onboard LED on the transmitting Arduino. There is a chance that the receiver may pick up stray signals
from other transmitting devices using that specific frequency. So you may need to play around with the
threshold value to eliminate the "noise". But don't make it too big, or you will eliminate the signal in this
experiment. You will also notice a small delay between the two Arduinos.
/*
RF Blink - Receiver sketch
Written by ScottC 17 Jun 2014
Arduino IDE version 1.0.5
Website: http://arduinobasics.blogspot.com
Receiver: XY-MK-5V
Description: A simple sketch used to test RF transmission/receiver.
------------------------------------------------------------- */
10
11
12
13
14
15
16
17
18
19
void setup(){
20
pinMode(ledPin, OUTPUT);
21
Serial.begin(9600);
22 }
23
24 void loop(){
25
data=analogRead(rfReceivePin);
26
27
if(data>upperThreshold){
28
digitalWrite(ledPin, LOW);
29
Serial.println(data);
30
31
32
if(data<lowerThreshold){
33
digitalWrite(ledPin, HIGH);
34
Serial.println(data);
}
}
When a HIGH signal is transmitted to the other Arduino. It will produce an AnalogRead = 0.
When a LOW signal is transmitted, it will produce an AnalogRead = 400.
This may vary depending on on your module, and voltage used.
The signals received can be viewed using the Serial Monitor, and can be copied into a spreadsheet to create
a chart like this:
You will notice that the HIGH signal (H) is constant, whereas the LOW signal (L) is getting smaller with each
cycle. I am not sure why the HIGH signal produces a Analog reading of "0". I would have thought it would
have been the other way around. But you can see from the results that a HIGH signal produces a 0 result
and a LOW signal produces a value of 400 (roughly).
Tutorial 2
In tutorial 2, we will receive and display a signal from a Mercator RF Remote Controller for Fan/Light.
Tutorial 3
In tutorial 3 - we use the signal acquired from tutorial 2, and transmit the signal to the fan/light to turn the light
on and off.
Tutorial 4
In tutorial 4 - we use the information gathered in the first 3 tutorials and do away with the need for a
computer. We will listen for a signal, store the signal, and then play it back by pressing a button. Similar to a
universal remote ! No libraries, no sound cards, no computer. Just record signal and play it back. Awesome !!
If you like this page, please do me a favour and show your appreciation :
17 comments:
Rafael 21 July 2014 at 18:56
Great!
Reply
28
Hi Fazlul,
Am not sure I understand your question.
Reply
I have no idea.
Reply
433mHz modules can have a longer range if you choose to use a wire antenna.
I would say that using RF is easier than Bluetooth, however it depends on what you are
trying to do. If you are trying to communicate between one Arduino and another, then I
would personally choose the RF option. If you want to control an Arduino with your phone,
then I would choose Bluetooth. It really depends on what you are trying to do and the
maximum distance required between devices.
I tried things out but get some results I would not expect.
On my receiver the LED is constantly on and only goes off for a very short period of time
(20-21 values in the serial monitor) when the transmitter starts to send.
I tried different RF modules and arduino boards but it is always the same behaviour. The
transmitter and the receiver are very close to each other (about 1 cm).
My frequency counter (from gooit) shows a frequency of about 433.9MHz during the hole
sending time of the transmitter and the LED is constantly on while the transmitter sends
and constantly off when the transmitter does not send. So the transmitter should work well.
Do you have any idea what the problem could be.
Thanks and kind regard
Michael
Scott C
Check to make sure you are not near an interfering source. Keep the receiver away from
other electronic items. You may want to try a transmitter and receiver of a different
frequency (e.g. 315 MHz) - depending on where you are in the world, I think the 315Mhz
frequency is more common in the USA...
Reply
Yes I tried - however, I designed the variable LOW output time to easily differentiate the two
signals being received - that's all.
Reply
Reply
Replies
Scott C
Hi Pances,
I don't have that module.
Best to ask that question in the Arduino Forums. Perhaps someone else has already gone
through the process.
Reply
Comment as:
Publish
Google Account
Preview
Newer Post
Home
Older Post
2.3k
One in a million
Arduino Selfie
Relay Module
Grove Water Sensor