OM/YL Online  

   

Login  

   

donazione  

 
   Donazione a sostegno e per lo
      sviluppo
del Club Italiano
                Modi Digitali
               Psktrentunisti

   

MultiTrans  

   
   
Benvenuto, Ospite
Nome utente: Password: Ricordami

ARGOMENTO: Commutatore antenna wireless con Arduino

Commutatore antenna wireless con Arduino 2 Anni 9 Mesi fa #821

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 481
  • Ringraziamenti ricevuti 91
  • Karma: 40
Salve a tutti... ci ho lavorato per più di un mese... stavo cedendo e considerare di controllare lo switch con il pc o via web... poi mi sono detto NO!
Ho preso sul banco da lavoro due Arduino, un UNO originale e un Nano cinese da 2,50€,
e ho cercato di convincerli a dialogare tra loro.
Mi è venuto in soccorso il sito iSmanettoni e, in particolare il gentilissimo Giacomo, che con molta ma molta pazienza mi ha spiegato certe cose e mi ha compilato uno sketch dal quale poi sono riuscito ad ottenere ciò che volevo.
Ho quindi inserito l'onnipresente display e un "delay" nello sketch, in quanto ho utilizzato relè che una volta eccitati rimangono nella posizione data.
Una novità nel display... è un 16x2 e nella riga alta ho fatto comparire i nomi delle antenne HF, mentre nelle seconda riga quelli delle V/UHF in modo da avere sott'occhio sempre entrambe le antenne usate.
Il tutto è optoisolato in quanto i relè vanno a 12V mentre Arduino a 5V. Ho quindi usato dei fotoeccitatori che lasciassero passare i 12V al comando dei pin di Arduino.




A breve, lista della spesa, schema e sketch.
73 de IZ3ZLU
Ultima modifica: 2 Anni 9 Mesi fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Commutatore antenna wireless con Arduino 2 Anni 9 Mesi fa #822

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 481
  • Ringraziamenti ricevuti 91
  • Karma: 40
Ho fatto una modifica allo sketch e inserito due nuovi fotoeccitatori in quanto, rimanendo questo tipo di relè nella posizione in cui viene messo, bisognava mandare un azzeramento che aprisse tutti i relè prima di chiudere quello desiderato... Tutto questo serve a mandare corrente ai relè solo per 1 secondo per chiuderli e mezzo secondo per resettarli... in questo modo non gira corrente nei relè durante il funzionamento della radio.
Avendo diviso in 2 il circuito (HF e V/UHF) ho quindi inserito 2 fotoeccitatori, uno per banda.
Qui sotto la foto del montaggio della scheda ricevente che andrà all'esterno vicino alle antenne (ma sotto il tetto... altrimenti ci voleva una scatola migliore).
Questa immagine è nascosta ai visitatori. Prego accedi o registrati per visualizzarli.


Questa immagine è nascosta ai visitatori. Prego accedi o registrati per visualizzarli.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Commutatore antenna wireless con Arduino 2 Anni 9 Mesi fa #823

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 481
  • Ringraziamenti ricevuti 91
  • Karma: 40
Per gli sketch che seguono ringrazio vivamente Giacomo de iSmanettone che mi ha fatto chiarezza nel compilare la parte di trasmissione/ricezione di un dato. Per il resto ho compilato io secondo le mie esigenze
Gli 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);
}


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);
}
Ultima modifica: 2 Anni 9 Mesi fa da IZ3ZLU.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Commutatore antenna wireless con Arduino 2 Anni 9 Mesi fa #824

  • iz8ifl
  • Avatar di iz8ifl
  • OFFLINE
  • Amministratore
  • Messaggi: 487
  • Ringraziamenti ricevuti 103
  • Karma: 20
ottima esecuzione Lanfranco

prossimamente anche io avrò bisogno di un commutatore visto che le discese sono diventate troppe nella mia stazione. adesso me lo preparo cercando di lavorarci dietro con due arduino micro che mandai a prendere dalla cina spero di poter utilizzare gli sketch che hai fornito tu sul forum. mi mancano il ricevitore e trasmettitore per renderlo wireless intanto posso iniziare a fare qualche prova per poi ordinare anche questi ultimi per completare l'opera. sarebbe utile inserire un controllo di retroazione che confermasse l'avvenuta commutazione sulla giusta porta ma per questo bisognerebbe aggiungere un altro modulo o addirittura un modulo wireless completo il problema è complesso ma se ci metto mano cercherò di farlo con un modulo del genere

ciao 73 de iz8ifl
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Commutatore antenna wireless con Arduino 2 Anni 9 Mesi fa #825

  • IZ3ZLU
  • Avatar di IZ3ZLU
  • OFFLINE
  • Moderatore
  • Messaggi: 481
  • Ringraziamenti ricevuti 91
  • Karma: 40
Oggi ho provato per diverse ore a utilizzare il commutatore.
Vedo che non sgarra da quello che compare sul display... in più il led che lampeggia quando avviene l'invio dei dati... direi che è abbastanza sicuro.
Però ovviamente se si può migliorare sarebbe ancora meglio.
Ho bisogno di una dritta.....
Tutto va perfettamente a parte quando collego la Yagi dualband.. a quelle frequenze mi va su il ros di un pò.
Allego foto dei collegamenti... penso che dovrò farli con cavo schermato vero?
In HF tutto perfetto.

Questa immagine è nascosta ai visitatori. Prego accedi o registrati per visualizzarli.
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.

Commutatore antenna wireless con Arduino 2 Anni 9 Mesi fa #826

  • iz8ifl
  • Avatar di iz8ifl
  • OFFLINE
  • Amministratore
  • Messaggi: 487
  • Ringraziamenti ricevuti 103
  • Karma: 20
Si lanfranco
a quelle frequenze purtroppo eseguire delle interruzzioni comporta un po' di perdite sopratutto se vai nelle uhf sopra (shf) ancora peggio ed è sconsigliato creare interruzzioni di questo genere, conviene tenere le masse separate (massa hf da quella v-uhf) e collegamenti quanto più corti possibili eventualmente usare cavo schermato. in ogni caso le perdite ce le avrai lo stesso quindi rassegnati però il ros si può correggere inserendo il cavo schermato e separando le masse come ti dicevo
L\'Amministratore ha disattivato l\'accesso in scrittura al pubblico.
Moderatori: iz8ifl, iz1tgh, IZ3ZLU, iz8guh
Tempo creazione pagina: 0.527 secondi
Powered by Forum Kunena
   
   
© PSKTRENTUNISTI ITALIAN CLUB (PIC)