antenna motorizzata wifi

Buongiorno a tutti

come da titolo prima di cimentarmi in complicati studi e realizzazioni volevo chiedervi se secondo voi è possibile costruire una antenna motorizzata che possa "inseguire" il segnale wifi piu potente.

premetto che non devo assolutamente crakkare reti altrui, ma dovendo istallare l'antenna su di un veicolo vorrei essere in grado di cercare in automatico le reti wifi libere, ed indirizzare l'antenna verso il segnale piu potente.

a livello realizzativo non ho problemi per la giuda dei motori pal-tilt la cosa su cui ho dei dubbi è come leggere il segnale e far fermare l'antenna in direzione dello stesso, come concetto vorrei fargli fare un giro 350° random fino alla lettura del segnale ..... che ne dite si puo fare ???? grazie in anticipo a chi volesse aiutarmi ...per ora sarebbe sufficente un ipotesi di fattibilità !!!!!

Ciao,

essendo il tuo primo post dovresti innanzitutto leggere il regolamento del forum QUI e poi fare una breve presentazione QUI indicando magari anche quali sono le tue conoscenze nel campo dell'elettronica e della programmazione.

Attilio

scusatemi provvedo al piu presto !!!!

ciao
3 di anni fa ho costruito il prototipo una antenna digitale terrestre che si orienta automaticamente sul ripetitore con segnale piu potente.
qui nella padana centra perfettamente i ripetitori di Valcava, comunque ci mette almeno 40 secondi.

il sistema:
mini antenna logaritmica e filtri hf per racchiudere la banda
servomotore
lcd
finecorsa fatto con una resistenza di pochi ohm (arduino legge le caduta di tensione sulla resistenza alla fine del giro)

fa un giro di 360 gradi
con la funzione min, max memorizza il segnale piu forte
secondo giro si ferma nel punto del segnale piu forte (un pelo meno e 200ms di giro in piu.
funziona all'80 percento dei casi :slight_smile:

a livello concettuale proprio quello che intendevo io vorrei usare una pannellare per cui dovrei inserire anche un sistema di tilt, ma secondo il tuo sistema potrei usare anche una yagi. il mio unico problema sta nel capire come gestire arduino per leggere la potenza del segnale wifi e fargli cercare solo quello free, una cosa tipo il cellulare che ti segnala le wifi aperte e la relativa potenza, siccome le mie successive applicazioni dovranno essere gestite da android, sarebbe bello poter realizzare una apllicazione tipo questa https://play.google.com/store/apps/details?id=com.staircase3.opensignal&hl=it che sia in grado di gestire il motore

tieni comunque presente che per la mia antenna, per la rivelazione ho usato un chip che arriva sino a 700 mhz circa e allora non costava poco, e la rete cellulare è assai ben piu alta.
per la "scremazione" free non so nulla

ciao Camperos, non avevo notato che fossi tu a scrivere ma speravo proprio in un tuo aiuto.

Penso che abbiamo lo stesso interesse applicativo ed andando avanti vorrei proporti alcune idee che da mettere in pratica, comunque adesso vorrei concentrarmi su questa.

allora la banda di trasmissione wifi in ghz se non mi sbaglio dovrebbe essere molto limitata credo che vada dai 2,4 ai 5 con una potenza massima di 100 mw, quindi una sistema direttivo che vada a contare l emissione massima di mw ?

nei computer o nei cellulari ce una indicazione di potenza e una indicazione del nome della rete con chiara distinzione tra libera o criptata wpa wpe ecc, la scheda ethernet di arduino dovrebbe essere in grado di fare una simile lettura ? ed una volta letta magari con uno scanner di rete indirizzare l'antenna verso il punto desiderato ?

credo che tu possa capire l'utilità di una simile antenna

la ricostruissi adesso la rifarei migliore e con uno stepper.
arduino puo solo indirizzarti ad uno dei segnali rilevati in potenza, la misura è in dbm, ma ma preferisco misurare con una scala da 1 a 10 (anche perchè ci vorrebbe una strumentazione sofisticata) si capisce lo stesso anzi meglio :stuck_out_tongue_closed_eyes:

lavorandoci un pò i segnali si potrebbero rappresentare graficamente e o fare un app, si vedrebbe come un fiore senza qualche petalo e potrei dire ad arduino quale scegliere..dei petali.

c'è "scanNetworks" che sta negli esempi arduino wifi, non so se ci si può fare qualcosa, foto:

Immagines 197.png

per la rivelazione più o meno lo schema era simile a questo, al posto del LM3914 un Arduino e l'integrato AD8310 o AD8307

http://mail.blockyourid.com/~gbpprorg/mil/rf_detect/LED_sig_meter.png

ciao Camperos

non so se ho stuzzicato la tua fantasia, ma lo spero ..... una antenna come questa per le ns esigenze potrebbe essere di grande utilità, recepire il segnale dentro campeggi con pochi a/p o lontani, in sosta libera indirizzarla verso a/p comunali o di qualche centro commerciale che altrimenti sarebbe irraggiungibile, insomma avere una buona connessione quasi sempre, una wifi free si trova sempre il problema è che non sono a portata di "mano".

io stavo pensando a due soluzioni :

una piu pratica e sicuramente piu fattibile con una applicazione come questa :https://play.google.com/store/apps/details?id=net.alouw.alouwCheckin&hl=it una mera mappatura delle aree wifi free e una tipo questa https://play.google.com/store/apps/details?id=net.alouw.alouwCheckin&hl=it un modulo di puntamento tramite gps e coordinate predeterminate ma io credo che oltre perdere molte wifi non so se sarebbe realmente funzionale.

oppure una cosa tipo questa Gioblu.com is for sale | HugeDomains una decodifica di segnale per muovere dei servi ??? il segnale rc viaggia sui 2.4 ghz ma mentre per la prima ipotesi le mie competenze sarebbero sufficenti per la seconda la vedo piu dura

scan network si puo utilizzare :slight_smile: ZLOIND - Wireless network notifier with Arduino - Arduino + LEDs + Potentiometer + Speaker - YouTube

prima fase, il radar è quasi finito :stuck_out_tongue_closed_eyes:
una passata e si individuano i segnali,
poi manualmente si indica ad arduino a quanti gradi deve ruotare l'antenna

appena posso inserisco un video (segnali simulati)
foto:

lo sketch arduino di simulazione, va integrato la parte per il motore antenna

float angle = 0;
float signal = 0;
int state = 0;
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  if (millis() % 50 == 0) { //ogni 50 ms
    if (state == 0) {      //se lo stato è a 0
      angle = angle + 0.5; //aumento di mezzo grado ogni loop
    }
    if (angle == 360) { //quando arriva a 360 gradi
      state = 1;        //metto lo stato a 1
    }
    if (state == 1) {     // se lo stato è a 1
      angle = angle - 0.5; //diminuisco di mezzo grado ogni loop
    }
    if (angle == -0.5) { //quando arriva a 0 gradi
      state = 0;      //metto lo stato a 0, ricomincio
    }
    signal = analogRead(A0); //leggo da A0
    signal = map(signal, 0, 1024, 0, 250);//mappo il valore da 0-1024 a 0-250

    Serial.print(signal); //invio il valore da visualizzare a processing
    Serial.print(","); //invio una comma che separa
    Serial.println(angle);// invio l'angolo (0-360) per far girare il radar di processing, printLN   stringa a capo
  } 
  //si puo vedere sul monitor seriale
  // per la comunicazione con processing vedere "virtualColorMixer"
}

grande Camperos

sapevo che su di te potevo contare :slight_smile: , ti sei messo subito all'opera !!!! a seguito di scanner si individuano le fonti wifi, e secondo la tua procedura bisogna indicare all'antenna i gradi manualmente, sicuramente pratico e di facile realizzazione, ma se mentre si fa lo scanner, arduino non sarebbe in grado anche di memoriazzare le posizioni ???

faccio lo scanner ed individuo tutti i segnali, arduino memorizza la posizione in gradi, l app indica i segnali con le relative potenze, seleziono la wifi desiderata e l'antenna si muove di conseguenza in base alla memorizzazione della posizione !!!!

Ciao
Se usate un'antenna direttiva senza controllo in elevazione vi suggerisco di montarla in modo che sia abbastanza larga in elevazione e stretta in azimuth, ancor meglio sceglierla proprio con queste caratteristiche
Luca

coppa75, in effetti si potrebbe fare.
ho semplificato all'osso lo sketch di arduino "scanNetworks

#include <SPI.h>
#include <WiFi.h>
void setup() {
  Serial.begin(9600);
}
void loop() { 
  listNetworks();
}
void listNetworks() {
  int numSsid = WiFi.scanNetworks();
  for (int thisNet = 0; thisNet < numSsid; thisNet++) {
    Serial.print(thisNet);
    Serial.print(") ");
    Serial.print(WiFi.SSID(thisNet));
    Serial.print("\tSignal: ");
    Serial.print(WiFi.RSSI(thisNet));
    Serial.print(" dBm");
    Serial.print("\tEncryption: ");
    printEncryptionType(WiFi.encryptionType(thisNet));
  }
}
void printEncryptionType(int thisType) {
  switch (thisType) {
    case ENC_TYPE_WEP:
      Serial.println("WEP");
      break;
    case ENC_TYPE_TKIP:
      Serial.println("WPA");
      break;
    case ENC_TYPE_CCMP:
      Serial.println("WPA2");
      break;
    case ENC_TYPE_NONE:
      Serial.println("None");
      break;
    case ENC_TYPE_AUTO:
      Serial.println("Auto");
      break;
  }
}

un pò lento, i valori vengono visualizzati ogni 2 secondi, quindi per essere precisi l'antenna deve compiere il giro di scan in 10 minuti circa 1 grado ogni lettura.

é accettabile fare un giro in 2 minuti, praticamente l'orientamento dell'antenna ogni 2 secondi si sposta come la la posizione della lancetta di un orologio di 1 secondo

Lucaleo@, hai ragione, quindi credo che l'ideale sia una Yagi, se non ricordo male hanno una scansione molto larga in elevazione.

beccato il delay di 2 secondi,
sta nella libreria wifi,wifi.ccp, WiFiClass::scanNetworks()
domani provo a diminuire il tempo e vediamo... :slight_smile:

Grande camperos ...

si difatti anche io stavo pensando ad una yagi in modo da non utilizzare elevazione ma solo uno stepper che la faccia ruotare, areodinamica in fase di marcia a patto che in fase di chiusura sia rivolta all indietro. io penso che un tempo di 2 minuti per la scansione sia accettabilissimo .... intanto che apri la veranda fai la ricerca :slight_smile: .....

-problema 1 non ho una yagi o altra a 2.4ghz :sob:
-problema2 la shield wifi non ha la presina per il collegamento del cavo :'( :'(

intanto.. io invierei a processing solo i segnali free, il tutto si riduce a questo:

#include <SPI.h>
#include <WiFi.h>
void setup() {
Serial.begin(9600);
}
void loop() {
listNetworks();
}
void listNetworks() {
int numSsid = WiFi.scanNetworks();
if ( ENC_TYPE_NONE) {
for (int thisNet = 0; thisNet < numSsid; thisNet++) {
Serial.print(thisNet);
Serial.print(",");
Serial.print(WiFi.RSSI(thisNet));
Serial.print(",");
Serial.println(WiFi.SSID(thisNet));
}
}
}

--fine sketch--

numero sequenza
valore dbm
nome

esempio invio

0,-70,NETGEAR20
1,-89,camper
0,-67,NETGEAR20
1,-89,camper
0,-64,NETGEAR20
1,-89,camper
0,-65,NETGEAR20
1,-88,camper
0,-69,NETGEAR20
1,-88,camper
0,-69,NETGEAR20
1,-91,camper
0,-71,NETGEAR20
1,-91,camper
lavorandoci su potrei avere 2 grafici con colori diversi e nome ssid per colore