RF modulok használata


Az Arduinok közötti vezeték nélküli kommunikáció egyik legegyszerűbb módja a
rádiófrekvenciás adó-vevő modulok használata. Aránylag egyszerűen beállítható, könnyen beépíthető, és nem utolsó sorban az ára se terheli túl pénztárcánkat.

Az RF modulok kezelésével több könyvtár is foglalkozik:
Virtual Wire (at ICStation)
RadioHead – ez felül írja a VirtualWire könyvtárat
RC-Switch – távirányítós kommunikáció
Ninjablocks 433 Utilities.

Mi most persze nem fogjuk használni egyiket sem, betekintést adva az RF modulok kezelésébe.

RF modulok tesztelése:
Megépítünk egy nagyon egyszerű adó-vevő kapcsolást, a kapcsolás két Arduino boardot használ de az rf modulok tesztelését egy alaplappal is el lehet végezni a sketch átírásával.
A beépített led fogja mutatni ha vevőnk jeleket észlel, illetve ha az adónk üzemel.
Lehet a modulokra antennát forrasztani de ha elég közel vannak egymáshoz(1-2cm) ez nem
szükséges. A teljesítményt a tápfesz emelésével is javítani lehet(3,3V helyet 5V-ról
üzemeltetünk, bár 3,3V-ról kisebb a zajosság).

Alkatrészek:
2db Arduino Uno
Próbapanel
Összekötő vezetékek
RF modulok (433Mhz) adó-vevő páros


A kapcsolás:

Az adó(transzmitter)
Üzemi feszültség: 3V - 12V
Üzemi áram: max 40mA és min 9mA
Resonance mód: (SAW)
Modulációs mód: ASK
Működési frekvencia: 315MHz vagy 433MHz
Átviteli teljesítmény: 25mW (315MHz 12V)
Frekvencia error: 150 kHz (max)
Sebesség: kevesebb mint 10K

bps

Távolság: max 90m nyílt terepen


Három kivezetése van:ATAD – Digital4 arduino (DATA fordítva)
VCC – 5V arduino
GND – GND arduino
Az ATAD lábra kerülnek a továbbítandó adatok, a VCC és a GND magától értetődő.


Az adó sketche:

/* 

 RF Blink - Transmit sketch 
    Written by ScottC 17 Jun 2014
    Arduino IDE version 1.0.5
    Website: http://arduinobasics.blogspot.com
    Transmitter: FS1000A/XY-FST
    Description: A simple sketch used to test RF transmission.          
------------------------------------------------------------- */

#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); //jel adás
    digitalWrite(ledPin, HIGH); //led bekapcsol adásra
    delay(2000); //két mp várakozás
    
    digitalWrite(rfTransmitPin,LOW); //nincs jel adás
    digitalWrite(ledPin, LOW); //led kikapcsol
    delay(i); //várakozás i ms ideig
  }
}

Jeladás egyre csökkenő várakozási közökkel.


Vevő modul(receiver)
Üzemi feszültség: 5.0VDC +0,5 V
Üzemi áram: ≤ 5.5mA max
Működési mód: OOK / ASK
Működési frekvencia: 315MHz-433.92 MHz
Sávszélesség: 2MHz
Érzékenység: excel-100dBm (50Ω)
Átviteli sebesség: <9.6Kbps (a 315MHz és-95dBm)


Lábkiosztása: 
VCC – 3V arduino

DATA – Analog0 arduino
DATA – használaton kívül

GND – GND


A vevő arduino beépített ledje ugyan úgy világít és kialszik ahogy az adóé. A vevő észlelhet
kóbor jeleket is ami persze zajként jelentkezhet(kiszámíthatatlanná teszi a működést), de csak
azonos frekvencián.


/* 

  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; // változó adatok tárolására
const unsigned int upperThreshold = 70; //felső küszöbérték
const unsigned int lowerThreshold = 50; //alsó küszöbérték

void setup(){
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  data=analogRead(rfReceivePin); //beolvassa az A0 láb értékét
  
  if(data>upperThreshold){
 digitalWrite(ledPin, LOW); //ha alacsony a jel a vevőn kikapcsolja a ledet
    Serial.println(data);
  }
  
  if(data<lowerThreshold){
    digitalWrite(ledPin, HIGH); //ha magas a jel bekapcsolja a ledet
    Serial.println(data);
  }
}

Ha bekapcsoljuk a soros monitort észrevehetjük hogy a vevő értékei ellentétesek az adó értékeivel,
a vevő megfordítja a jelet. Az adásban a LOW szint ideje csökken ciklusonként, a vételi jelben
a High szint ciklusideje csökken, ezt mindig kalkuláljuk be.