PitRF433 trasmissione RF a 433 Mhz

Sempre validi i moduli di trasmissione RF a 433Mhz.

 

Le istruzioni e il codice di questo articolo sono tratti dal sito di BresciaNet

I modulini in azione:

ozio_gallery_jgallery

Cosa serve:

  • 1 sensore RF 433 Mhz tx trasmettitore
  • 1 sensore RF 433 Mhz rx ricevitore
  • Due Arduini
  • cavetti

Codice sorgente trasmettitore:


//http://www.brescianet.com/appunti/Elettronica/Arduino/corso/Esempio_RF315-433MHZ.htm
/* ------------------------------------------------------
Invia il testo scritto sul Serial Monitor del trasmettitore
al Serial Monitor del ricevente
--------------------------------------------------------- */
#include "VirtualWire.h"
int i=0;
char buffer[VW_MAX_MESSAGE_LEN-3]; // posso spedire 26 char al massimo
#define RX_pin 12
void setup()
{
  Serial.begin(9600);
  Serial.println("Trasmettitore:");
  vw_set_tx_pin(RX_pin);
  vw_setup(3000);
}
void loop()
{
  if ( (Serial.available() > 0) && (i <(VW_MAX_MESSAGE_LEN-4) ) )
  //if ( (i <(VW_MAX_MESSAGE_LEN-4) ) )
  {
      buffer[i++] = Serial.read();
      delay(10); // piccolo ritardo per evitare che spezzi l'invio della frase
  }
  else if (i>0)
  {
    buffer[i]='\0';
    vw_send((uint8_t *)&buffer, i+1); // spedisce al massimo VW_MAX_MESSAGE_LEN-3 {26} caratteri
    vw_wait_tx(); // Aspetta che il processo in background di spedizione sia completo
    Serial.print(buffer+String(" -->> send (")+String(i)+String(" char)\n"));
    i=0;
  }
}

Codice sorgente ricevitore:


//http://www.brescianet.com/appunti/Elettronica/Arduino/corso/Esempio_RF315-433MHZ.htm
/* ------------------------------------------------------
Riceve il testo scritto sul Serial Monitor del trasmettitore
e lo mostra sul suo Serial Monitor (ricevente).
--------------------------------------------------------- */
#include "VirtualWire.h"  
#define RX_pin 11
void setup()
{
  Serial.begin(9600);
  Serial.println("Ricevitore:");
  vw_set_rx_pin(RX_pin);
  vw_setup(3000);
  vw_rx_start();
}
void loop()
{
   uint8_t buf[VW_MAX_MESSAGE_LEN];
   uint8_t buflen = VW_MAX_MESSAGE_LEN;
   if (vw_get_message(buf, &buflen))
   {
       buf[buflen]='\0'; // Metto il terminatore di stringa
       Serial.println(String("Receive (") +String(buflen-1)+String(" char) --> {") +(char *)buf+"}");
    }
}

 

Scarica tutto quello che serve: