Передатчик и приемник в диапазоне RF 433 Mhz
![]() |
![]() |
Технические характеристики:
Параметры приемника
1. Модель продукта: MX-05V
2. Рабочее напряжение: DC5V
3. Рабочий ток: 4MA
4. Частота приема: 433.92 мГц
5. Чувствительность приемника:-дБ
6. Размер: 30*14*7 мм
7. Внешняя антенна: 32 см одножильный провод, собрана в спираль
Технические параметры передатчика
1. Модель продукта: MX-FS-03V
2. Расстояние передачи сигнала: 20-200 м (в зависимости от напряжения питания)
3. Рабочее напряжение: 3.5-12 В
4. Размеры: 19*19 мм
5. Режим: AM
6. Передающая мощность: 10 МВт
7. Частота передачи: 433 м
8. Внешняя антенна: 25 см многожильная или одножильная проволока
Дрименяется для дистанционного управления.
Примечание
1. Рабочее напряжение питания моуля должно иметь фильтрацию;
2. Для работы модуля на прием имеет значение длина антены. Желательно подключать 1/4 длины антенны, сопротивленим около 50 Ом. Длина антенны для диапазона 433 м около 17 см;
3. Положение антенны сказывается на увереном приеме модуля,антена устанавливаетсякак можно выше и вдали от источников помех.
![]() |
Схема подключения Transmitter |
![]() |
Схема подключения Transmitter |
Sketch code
/*
*/
#define rfTransmitPin 4 //RF Transmitter pin = digital pin 4
#define ledPin 13 //Onboard LED = digital pin 13
void setup(){
pinMode(rfTransmitPin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop(){
for(int i=4000; i>5; i=i-(i/3)){
digitalWrite(rfTransmitPin, HIGH); //Transmit a HIGH signal
digitalWrite(ledPin, HIGH); //Turn the LED on
delay(2000); //Wait for 1 second
digitalWrite(rfTransmitPin,LOW); //Transmit a LOW signal
digitalWrite(ledPin, LOW); //Turn the LED off
delay(i); //Variable delay
}
}
Sketch codeReceiver
/*
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.
------------------------------------------------------------- */
#define rfReceivePin A0 //RF Receiver pin = Analog pin 0
#define ledPin 13 //Onboard LED = digital pin 13
unsigned int data = 0; // variable used to store received data
const unsigned int upperThreshold = 70; //upper threshold value
const unsigned int lowerThreshold = 50; //lower threshold value
void setup(){
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop(){
data=analogRead(rfReceivePin); //listen for data on Analog pin 0
if(data>upperThreshold){
digitalWrite(ledPin, LOW); //If a LOW signal is received, turn LED OFF
Serial.println(data);
}
if(data<lowerThreshold){
digitalWrite(ledPin, HIGH); //If a HIGH signal is received, turn LED ON
Serial.println(data);
}
}
Sketch code
/*
*/
#define rfReceivePin A0 //RF Receiver data pin = Analog pin 0
#define rfTransmitPin 4 //RF Transmitter pin = digital pin 4
#define button 6 //The button attached to digital pin 6
#define ledPin 13 //Onboard LED = digital pin 13
const int dataSize = 500; //Arduino memory is limited (max=1700)
byte storedData[dataSize]; //Create an array to store the data
const unsigned int threshold = 100; //signal threshold value
int maxSignalLength = 255; //Set the maximum length of the signal
int dataCounter = 0; //Variable to measure the length of the signal
int buttonState = 1; //Variable to control the flow of code using button presses
int buttonVal = 0; //Variable to hold the state of the button
int timeDelay = 105; //Used to slow down the signal transmission (can be from 75 - 135)
void setup(){
Serial.begin(9600); //Initialise Serial communication - only required if you plan to print to the Serial monitor
pinMode(rfTransmitPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(button, INPUT);
}
void loop(){
buttonVal = digitalRead(button);
if(buttonState>0 && buttonVal==HIGH){
//Serial.println("Listening for Signal");
initVariables();
listenForSignal();
}
buttonVal = digitalRead(button);
if(buttonState<1 && buttonVal==HIGH){
//Serial.println("Send Signal");
sendSignal();
}
delay(20);
}
/* ------------------------------------------------------------------------------
Initialise the array used to store the signal
------------------------------------------------------------------------------*/
void initVariables(){
for(int i=0; i<dataSize; i++){
storedData[i]=0;
}
buttonState=0;
}
/* ------------------------------------------------------------------------------
Listen for the signal from the RF remote. Blink the RED LED at the beginning to help visualise the process
And also turn RED LED on when receiving the RF signal
------------------------------------------------------------------------------ */
void listenForSignal(){
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin,LOW);
while(analogRead(rfReceivePin)<threshold){
//Wait here until an RF signal is received
}
digitalWrite(ledPin, HIGH);
//Read and store the rest of the signal into the storedData array
for(int i=0; i<dataSize; i=i+2){
//Identify the length of the HIGH signal---------------HIGH
dataCounter=0; //reset the counter
while(analogRead(rfReceivePin)>threshold && dataCounter<maxSignalLength){
dataCounter++;
}
storedData[i]=dataCounter; //Store the length of the HIGH signal
//Identify the length of the LOW signal---------------LOW
dataCounter=0;//reset the counter
while(analogRead(rfReceivePin)<threshold && dataCounter<maxSignalLength){
dataCounter++;
}
storedData[i+1]=dataCounter; //Store the length of the LOW signal
}
storedData[0]++; //Account for the first AnalogRead>threshold = lost while listening for signal
digitalWrite(ledPin, LOW);
}
/*------------------------------------------------------------------------------
Send the stored signal to the FAN/LIGHT's RF receiver. A time delay is required to synchronise
the digitalWrite timeframe with the 433MHz signal requirements. This has not been tested with different
frequencies.
------------------------------------------------------------------------------ */
void sendSignal(){
digitalWrite(ledPin, HIGH);
for(int i=0; i<dataSize; i=i+2){
//Send HIGH signal
digitalWrite(rfTransmitPin, HIGH);
delayMicroseconds(storedData[i]*timeDelay);
//Send LOW signal
digitalWrite(rfTransmitPin, LOW);
delayMicroseconds(storedData[i+1]*timeDelay);
}
digitalWrite(ledPin, LOW);
delay(1000);
/*-----View Signal in Serial Monitor
for(int i=0; i<dataSize; i=i+2){
Serial.println("HIGH,LOW");
Serial.print(storedData[i]);
Serial.print(",");
Serial.println(storedData[i+1]);
}
---------------------------------- */
}