Commutatore antenna Hamradio wireless

Ho realizzato questo progetto molto interessante per chi, come me, ha necessità di commutare svariate antenne direttamente dalla stazione in modo da avere poche discese di cavi dal tetto. Ma questo non toglie che i relè che commutano le antenne, non possano commutare altro...
Ho utilizzato un Nano in stazione e un Uno come ricevitore esterno (mi da più sicurezza l'Uno all'esterno)
Per i moduli RX e TX ho usato i seguenti: 433MHz Wireless Modules MX-FS-03V & MX-05
Le librerie sono le Virtualwire.
Per dare corrente ai relè (12V) tramite Arduino , ho utilizzato dei foto eccitatori per far passare la corrente e in più per optoisolare la parte Arduino da quella relè.
Noterete che nello sketch prima di ogni commutazione avviene un'azzeramento dei relè... questo in quanto ho usato relè che rimangono nella posizione in cui vengono commutati per evitare che giri tensione all'interno dell'avvolgimento mentre si utilizza la Radio.
Se aqualcuno necessita di altre informazioni sono a disposizione.
Per lo sketch ringrazio Giacomo del sito iSmanettone per avermi aiutato.
I due sketch sono i seguenti:

Sketch TX------------------------------------------------------------------------------------------------

#include <LiquidCrystal.h>
#include <VirtualWire.h>
//LiquidCrystal lcd(rs,rw,en,d4,5,6,7);
LiquidCrystal lcd(12, 7, 6, 5, 4, 3);

const int TX_DIO_Pin = 2;
const int PIN_BUTTON1 = A0; //antenna Delat Loop 20 e 10 mt
const int PIN_BUTTON2 = A1; //antenna MoreGain
const int PIN_BUTTON3 = A2; //antenna Dipolo rigido 15mt
const int PIN_BUTTON4 = A3; //Quadrifilare
const int PIN_BUTTON5 = A4; //antenna dualband V/UHF
const int PIN_BUTTON6 = A5; //Libero
unsigned int Data;

void setup()
{
 pinMode(13, OUTPUT);
 lcd.begin(16, 2); 
 lcd.print(" Switch antenna "); // Visualizzo il messaggio sul display
 lcd.setCursor(0, 1);
 lcd.print("     IZ3ZLU");
 vw_set_tx_pin(TX_DIO_Pin);

 vw_set_ptt_inverted(true); 
 
vw_setup(1000);    
}

/* Main program */
void loop()
{
 if(hasBeenPressed(PIN_BUTTON1)){
   Data = 1;
   sendData(Data);
 lcd.setCursor(0, 0); 
 lcd.print("HF-    DeltaLoop"); // Visualizzo il messaggio sul display
 

 }
 if(hasBeenPressed(PIN_BUTTON2)){
   Data = 2;
   sendData(Data);
 lcd.setCursor(0, 0); 
 lcd.print("HF-     MoreGain"); // Visualizzo il messaggio sul display
 
   
 }
 if(hasBeenPressed(PIN_BUTTON3)){
   Data = 3;
   sendData(Data);
 lcd.setCursor(0, 0);
 lcd.print("HF-  15mt Dipole"); // Visualizzo il messaggio sul display
 
}
if(hasBeenPressed(PIN_BUTTON4)){
   Data = 4;
   sendData(Data);
 lcd.setCursor(0, 1);
 lcd.print("V/UHF- Quadrifil"); // Visualizzo il messaggio sul display
 
}
if(hasBeenPressed(PIN_BUTTON5)){
   Data = 5;
   sendData(Data);
 lcd.setCursor(0, 1);
 lcd.print("V/UHF-Yagi V/UHF"); // Visualizzo il messaggio sul display

}
}

boolean hasBeenPressed(int pin){
 if(analogRead(pin)>1000){
   return true;
 }else{
   return false;
 }
}  
 
void sendData(int Data){
 byte TxBuffer[2];
 TxBuffer[0] = Data >> 8;
 TxBuffer[1] = Data;
 digitalWrite(13, HIGH); 
 vw_send((byte *)TxBuffer, 2);
 vw_wait_tx(); 
 digitalWrite(13, LOW); 
 delay(1000);
}

Sketch RX--------------------------------------------------------------------------------------------------------------------

#include <VirtualWire.h>


const int RX_DIO_Pin = 2;
const int PIN_RELAY4 = 10;//antenne V/UHF Quadrifilare
const int PIN_RELAY5 = 11;//antenne V/UHF Yagi
const int PIN_RELAY1 = 3;//antenne HF Dipolo
const int PIN_RELAY2 = 4;//antenne HF MoreGain
const int PIN_RELAY3 = 5;//antenne HF Delta Loop
const int PIN_RELAYvhfOFF = 6;// resetta tutti i relè V/UHF
const int PIN_RELAYhfOFF = 7;// resetta tutti i relè HF

boolean RELAY1 = false;
boolean RELAY2 = false;
boolean RELAY3 = false;
boolean RELAY4 = false;
boolean RELAY5 = false;
boolean RELAYvhfOFF = false;
boolean RELAYhfOFF = false;

void setup()
{
   pinMode(13, OUTPUT);
   Serial.begin(9600);
   pinMode(PIN_RELAY1,OUTPUT);
   pinMode(PIN_RELAY2,OUTPUT);
   pinMode(PIN_RELAY3,OUTPUT);
   pinMode(PIN_RELAY4,OUTPUT);
   pinMode(PIN_RELAY5,OUTPUT);
   pinMode(PIN_RELAYvhfOFF,OUTPUT);
   pinMode(PIN_RELAYhfOFF,OUTPUT);

   vw_set_rx_pin(RX_DIO_Pin);
   

   vw_setup(1000);
   

   vw_rx_start(); 
}

/* Main program */
void loop()
{

 uint8_t Buffer_Size = 2;
 

 unsigned int Data;
 

 uint8_t RxBuffer[Buffer_Size];


if (vw_get_message(RxBuffer, &Buffer_Size)){

       Data = RxBuffer[0] << 8 | RxBuffer[1];
       }
       
         if(Data==1){                 //antenne HF
         Serial.println(Data);
         digitalWrite(PIN_RELAYhfOFF,HIGH);// azzera tutti i relè
         delay(500);
         digitalWrite(PIN_RELAYhfOFF,LOW);// li lascia aperti
      
         digitalWrite(PIN_RELAY3,HIGH);//attiva il relè.
         delay(2000);// attendi due secondi.
         digitalWrite(PIN_RELAY3,LOW);//stacca corrente (il relè rimane nel suo stato).
         
       }
        if(Data==2){
         Serial.println(Data);
         digitalWrite(PIN_RELAYhfOFF,HIGH);// azzera tutti i relè
         delay(500);
         digitalWrite(PIN_RELAYhfOFF,LOW);// li lascia aperti
    
         digitalWrite(PIN_RELAY2,HIGH);//attiva il relè 2.
         delay(2000);// attendi due secondi.
         digitalWrite(PIN_RELAY2,LOW);//stacca corrente (il relè rimane nel suo stato).
         
       } 
        if(Data==3){
         Serial.println(Data);
         digitalWrite(PIN_RELAYhfOFF,HIGH);// azzera tutti i relè
         delay(500);
         digitalWrite(PIN_RELAYhfOFF,LOW);// li lascia aperti
  
         digitalWrite(PIN_RELAY1,HIGH);//attiva il relè 2.
         delay(2000);// attendi due secondi.
         digitalWrite(PIN_RELAY1,LOW);//stacca corrente (il relè rimane nel suo stato).
         
       }
       if(Data==4){                     //Antenne V/HF
         Serial.println(Data);
         digitalWrite(PIN_RELAYvhfOFF,HIGH);// azzera tutti i relè
         delay(500);
         digitalWrite(PIN_RELAYvhfOFF,LOW);// li lascia aperti
      
         digitalWrite(PIN_RELAY4,HIGH);//attiva il relè 2.
         delay(2000);// attendi due secondi.
         digitalWrite(PIN_RELAY4,LOW);//stacca corrente (il relè rimane nel suo stato).
         
       }
       if(Data==5){
         Serial.println(Data);
         digitalWrite(PIN_RELAYvhfOFF,HIGH);// azzera tutti i relè
         delay(500);
         digitalWrite(PIN_RELAYvhfOFF,LOW);// li lascia aperti
    
         digitalWrite(PIN_RELAY5,HIGH);//attiva il relè 2.
         delay(2000);// attendi due secondi.
         digitalWrite(PIN_RELAY5,LOW);//stacca corrente (il relè rimane nel suo stato).
         
       }
       
       
       
       delay(500);
   }

Ecco una foto del commutatore finito.
Altra finezza è il display (16X2) che ho suddiviso in due righe in modo tale da avere sulla prima riga l'antenna che sto usando in HF, mentre sulla seconda, l'antenna che sto usando in V/UHF.
Potete vedere il risultato sul video Youtube di cui ho inserito il link.

20141026_1130312.jpg

Il codice devi racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare.
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

Fatto scusa.