433MHz RF

Ligação dos módulos receptor e emissor de 433Mhz ao Arduino.

Especificações Transmissor.:

* Frequência.: 433 MHz

* Modulação.: ASK

* Sinal de Saída.: Alto = 1/2 Vcc; Baixo = 0,7v

* Tensão de Operação.: 3-12 v (Maior Tensão = Maior Potência de Transmissão)

* Alcance Aproximado.: 100m (Obedecendo as especificações da antena)

* Taxa de Dados.: 200 Bps min - 10k Bps máx

Especificações Receptor.:

* Frequência.: 433 MHz

* Modulação.: ASK

* Sinal de Entrada.: Alto = 0,7*Vcc; Baixo = 0,3*Vcc

* Tensão de Operação.: 3,5-5,5 v

* Alcance Aproximado.: 100m (Obedecendo as especificações da antena)

* Taxa de Dados.: 300 Bps min - 6k Bps máx

As ligações a estes módulos são bastante fáceis e basta seguir este esquema:

  

O esquema que fiz para este projecto é:

 

O código utilizado para testar foi este:

Emissor:

// 433Mhz transmitter by Jan Leander Jensen 2011

// TX pin12, PTT pin 10

// include library

#include <VirtualWire.h> // ver. 1.5

// end include library

//global variable

byte msg[7];

// end global variable

// setup

void setup() {

  vw_set_ptt_inverted(true); // Required for PTT

  vw_setup(2000); // Bits per sec

}

// end setup

// main loop

void loop()

{

    msg[0] = map(analogRead(A0), 0, 1023, 0, 255);

    msg[1] = map(analogRead(A1), 0, 1023, 0, 255);

    msg[2] = map(analogRead(A2), 0, 1023, 0, 255);

    msg[3] = map(analogRead(A3), 0, 1023, 0, 255);

    msg[4] = map(analogRead(A4), 0, 1023, 0, 255);

    msg[5] = map(analogRead(A5), 0, 1023, 0, 255);

 

    vw_send(msg, 7); // transmit msg

    vw_wait_tx(); // Wait for message to finish

    delay(500);

}

// end main loop

Receptor:

// 433Mhz receveiver2 by Jan Leander Jensen 2011

// RX pin 11

// include library

#include <VirtualWire.h> // ver. 1.5

// end include library

//global variable

byte buf[7];

byte buflen;

// end global variable

// setup

void setup()

{

    buflen = 7;

    Serial.begin(9600);

    vw_setup(2000); // Bits per sec

    vw_rx_start(); // Start up the receiver

 

}

// end setup

// main loop

void loop()

    if (vw_get_message(buf, &buflen)) // check to see if anything has been received

    {

    Serial.print("A0=");

    int A0 = buf[0];

    Serial.print(A0);

    Serial.println();

    

    Serial.print("A1=");

    int A1 = buf[1];

    Serial.print(A1);

    Serial.println();

    

    Serial.print("A2=");

    int A2 = buf[2];

    Serial.print(A2);

    Serial.println();

    

    Serial.print("A3=");

    int A3 = buf[3];

    Serial.print(A3);

    Serial.println();

    

    Serial.print("A4=");

    int A4 = buf[4];

    Serial.print(A4);

    Serial.println();

// Batt. test start      

    int A5 = buf[5];

    if (A5 < 107)

      {    

      Serial.print("BATT. LOW (6,7V)");

      Serial.println();

      }

// Batt. test end   

    Serial.println();

    }   

}

// end main loop

A biblioteca utilizada é a VirtualWire 1.3

Para testar o alcance dos módulos adaptei o projecto ao do LCD Nokia 5110, o código apenas foi alterado na recepção:

// 433Mhz receveiver2 by Jan Leander Jensen 2011

// RX pin 11

// include library

#include <VirtualWire.h> // ver. 1.5

// end include library

//LCD:

#include <PCD8544.h>

// A custom glyph (a smiley)...

static const byte glyph[] = { B00010000, B00110100, B00110000, B00110100, B00010000 };

static PCD8544 lcd;

int ledPin =8;  // LED Backlight

char result[32];

//global variable

byte buf[7];

byte buflen;

// end global variable

// setup

void setup()

{

  

  //LCD

  pinMode(ledPin, OUTPUT);      // sets the digital pin as output

  digitalWrite(ledPin, HIGH);   // sets the LED on

   // PCD8544-compatible displays may have a different resolution...

  lcd.begin(84, 48);

  // Add the smiley to position "0" of the ASCII table...

  lcd.createChar(0, glyph);

//Receptor:  

    buflen = 7;

    Serial.begin(9600);

    vw_setup(2000); // Bits per sec

    vw_rx_start(); // Start up the receiver

 

}

// end setup

// main loop

void loop()

    if (vw_get_message(buf, &buflen)) // check to see if anything has been received

    {

  lcd.setCursor(0, 0);

  lcd.print("RECEBIDO:");

  lcd.setCursor(0, 1);

  lcd.print("A0= ");

  int A0 = buf[0];

  itoa (A0, result, 10);

  lcd.setCursor(3, 2);

  lcd.print(result);

  lcd.setCursor(0, 4);

  lcd.print("Arduino Rocks!");

  lcd.setCursor(0, 5);

  lcd.write(' ');

  lcd.write(0);  // write the smiley

     

     delay(2000);

     

  lcd.setCursor(0, 0);

  lcd.print("RECEBIDO:");

  lcd.setCursor(0, 1);

  lcd.print("A1= ");

  int A1 = buf[1];

    itoa (A1, result, 10);

  lcd.setCursor(3, 2);

  lcd.print(result);

  lcd.setCursor(0, 4);

  lcd.print("Arduino Rocks!");

  lcd.setCursor(0, 5);

  lcd.write(' ');

  lcd.write(0);  // write the smiley

    

         delay(2000);

         

  lcd.setCursor(0, 0);

  lcd.print("RECEBIDO:");

  lcd.setCursor(0, 1);

  lcd.print("A2= ");

  int A2 = buf[2];

      itoa (A2, result, 10);

  lcd.setCursor(3, 2);

  lcd.print(result);

  lcd.setCursor(0, 4);

  lcd.print("Arduino Rocks!");

  lcd.setCursor(0, 5);

  lcd.write(' ');

  lcd.write(0);  // write the smiley

    

         delay(2000);

    

  lcd.setCursor(0, 0);

  lcd.print("RECEBIDO:");

  lcd.setCursor(0, 1);

  lcd.print("A3= ");

  int A3 = buf[3];

      itoa (A3, result, 10);

  lcd.setCursor(3, 2);

  lcd.print(result);

  lcd.setCursor(0, 4);

  lcd.print("Arduino Rocks!");

  lcd.setCursor(0, 5);

  lcd.write(' ');

  lcd.write(0);  // write the smiley

  

       delay(2000);

    

  lcd.setCursor(0, 0);

  lcd.print("RECEBIDO:");

  lcd.setCursor(0, 1);

  lcd.print("A4= ");

  int A4 = buf[4];

      itoa (A4, result, 10);

  lcd.setCursor(3, 2);

  lcd.print(result);

  lcd.setCursor(0, 4);

  lcd.print("Arduino Rocks!");

  lcd.setCursor(0, 5);

  lcd.write(' ');

  lcd.write(0);  // write the smiley

  

       delay(2000);

    

// Batt. test start      

    int A5 = buf[5];

    if (A5 < 107)

      {    

      // Serial.print("BATT. LOW (6,7V)");

      //Serial.println();

      }

// Batt. test end   

    //Serial.println();

    }   

}

// end main loop

Resultado: