domenica 9 marzo 2014

Confessioni di un pilota FPV. Il Rover parte 7. Il segnale wireless.


Ogni "Progetto Terrina" che si rispetti possiede un pannello con le informazioni vitali del sistema.

Primo fra tutti il livello del segnale wireless. Senza questa importantissima informazione non è possibile "navigare" in sicurezza.

Ne sanno qualcosa i piloti di aerei FPV che hanno perso il segnale video mentre il modello era a 1 km di distanza a qualche centinaio di metri di altitudine e non più visibile ad occhio nudo. "Game Over!!"

Il pilota, durante la sua sessione di esplorazione, deve dedicare una parte dei suoi neuroni a questa informazione. Trascurare questo dato, potrebbe trasformare una comoda "Gita FPV" in un estenuante sessione di "Nordic Walking" con in più l'ansia dell'oggetto perduto.

La funzione di "Return To Home" ha spesso risolto il problema. Ma la soluzione definitiva è arrivata da una nuova tecnologia chiamata "ENAC" che ha di fatto vietato l'FPV.

Per il "Progetto Terrina" la faccenda è meno grave ma si tratta comunque di una informazione che non poteva  mancare e che fa indubbiamente parte del "Gioco" del FPV anche se terrestre.

Per aggiungere questa informazione ho faticato un po'. Ho cercato dapprima di utilizzare un file script "Lua" presente nella folder "/usr/bin/pretty-wifi-info.lua" che restituisce una stringa con tutte le informazioni Wireless come spiegato qui. Con Putty funziona perfettamente:


Era mia intenzione accedere alla stringa con le informazioni utilizzando il WebServer. Ho provato ad includere nella pagina web dello sketch Arduino l'indirizzo:
  • "http://192.168.1.36/cgi-bin/pretty-wifi-info.lua | grep Signal" 
e mi aspettavo una stringa che avrei cercato di formattare al meglio nella pagina ma il risultato nonostante diverse modifiche e tentativi è sempre stato questo:


Esprimo qui la mia richiesta ufficiale di HELP ME!!!

Poi dovendo/volendo comunque raggiungere l'obiettivo ho messo in moto il mio pregiatissimo e discusso "Workaround Engine". Ho scritto mio non perchè è solo mio ma perchè ho usato il mio.

Sull'argomento "Workaround Engine" si potrebbe discutere a lungo e potrei dedicare non un Post ma un intero Blog ma questo non è il momento e il luogo.

Mi sono detto: "Il pannello LuCi di Arduino Yùn mostra questi dati ed anche tanti altri" e quindi ho lavorato di HTML per inserire nel "Cruscotto" del "Progetto Terrina" la pagina che mostra queste informazioni. e questo è il risultato:


Questo è il tipico risultato da workaround. Non sono soddisfatto e cercherò di fare meglio ma devo ammettere che anche così non è male. E' presente il tasto di refresh automatico dei dati e ci sono tantissime informazione anche completamente inutili ma sicuramente scenografiche come i grafici del carico del sistema e del traffico wireless. Tutto quello che il pannello LuCi può offrire.



Nei prossimi Post cercherò di dare più visibilità ai dati veramente utili.
Per fare questo lavorerò di sega martello e javascript.


sabato 1 marzo 2014

Confessioni di un pilota FPV. Il Rover parte 6

Dopo aver aggiunto il servo Tilt per la web cam non potevo non aggiungere anche il servo Pan.
Ho aggiunto un servo alla base del gruppo Tilt webcam e modificato il software Arduino Yùn e la pagina HTML.

Ho fissato il servo in modo estremamente professionale con una fascetta  per alimenti.


 Il servo Pan è collegato al piedino 6 della scheda Arduino Yùn. 


Cliccando sulla griglia si comandano contemporaneamente Pan e Tilt della webcam.  


Ecco un breve video del Kitchen Tray Project.


Tutti i files della versione 3.5 sono scaricabili qui.

sabato 22 febbraio 2014

Confessioni di un pilota FPV. Il Rover parte 5.

La versione 3.0 del "Progetto Terrina" gestisce un servo per alzare e abbassare la telecamera.
Cliccando sulla colonna nera a destra si controlla l'altezza della telecamera con sette inclinazioni possibili. 


La parte "meccanica" è forse troppo complessa per un JFFP (Just For Fun Project) come questo e confesso che non l'ho realizzato in questa occasione. Si tratta di una prova di lavorazione con una fresa CNC che costruii alcuni anni fa. Prossimamente dedicherò un post anche al progetto CNC. 


Ecco un breve video:



Il servo è collegato alla porta 11 della scheda Arduino Yùn.



I file della versione 3.0 del "Progetto Terrina" sono scaricabili da qui:





lunedì 17 febbraio 2014

Confessioni di un pilota FPV. Il Rover parte 4.

Questo è il primo video del Rover 2.0 in missione "all'esterno":


Per installare e configurare la telecamera ho utilizzato le istruzioni di questo blog www.lucadentella.it.
E' esattamente quello che mi serviva ed inoltre è spiegato ottimamente. Quindi mi sono procurato la telecamera LifeCam HD-3000 ed ecco la telecamera montata sul rover.


La versione 2.0 è scaricabile da qui.
Ho dovuto aggiornare lo sketch Arduino Yùn e la pagina HTML nel web server per visualizzare lo streaming video otre a piccoli aggiustamenti per regolare la velocità dei servi. 





domenica 9 febbraio 2014

Confessioni di un pilota FPV. Il Rover parte 3.

Allego un breve video della primissima versione del rover che nel frattempo ho deciso di chiamare: "Progetto Terrina"


I file del progetto completo sono scaricabili da qui.
Queste sono le istruzioni per modificare i servi e qui sotto il collegamento dei pochi componenti:


Una volta scaricato il progetto su Arduino yùn e aperto il REST API ACCESS dal menu di configurazione di Arduino Yùn.


sarà possibile connettersi tramite un tablet o un PC connesso nella stessa rete all'IP scelto per Arduino yùn. Quindi per aprire la pagina web per controllare il rover, bisogna digitare: IP + /sd/rover.
Nel mio caso:

 http://192.168.1.36/sd/rover/

Apparirà la pagina WEB ROVER:


Sono presenti i tasti di avanzamento rotazione e stop. I campi numerici servono per impostare il numero di cicli del loop Arduino durante i quali verrà eseguito il comando di avanzamento o rotazione. Quindi, avendo impostato un delay di 50 ms, l'avanzamento o la rotazione durerà 2 secondi. Questo serve ad evitare che il rover mantenga l'ultimo comando all'infinito in caso di problemi di connessione sulla rete ethernet. Nelle prossime versioni aggiungerò un meccanismo automatico di controllo della connessione.

Il codice HTML della pagina web inclusa nel progetto è composta essenzialmente da due parti: 
  • una tabella con le immagini dei tasti e i campi numerici.
  • 4 funzioni javascript. Due per inviare comandi e due per ricevere la risposta dal rover.

La pressione di uno dei tasti creati tramite il seguente codice:

<input type="text" style="text-align: center" size="2" name="timeL" value="40" id="timeL" /><br>
<img src="left.jpg"  id="timeLimage" onclick="sendCommand(3,document.getElementById('timeL').value);"/>

Esegue la funzione sendCommand che ha come parametri passati il numero 3 e il valore nel campo testo 40.

function sendCommand(mode,time)
{
          document.getElementById("info").innerHTML = "sent command >>>";
          server = "/arduino/mode/" + mode + "/" + time;
          richiesta = new XMLHttpRequest();
          richiesta.onreadystatechange = sendCommandResponse;
          richiesta.open("GET", server, true);
          richiesta.send(null);
}

La sendCommand non fa altro che mandare una HttpRequest (che equivale a scrivere un indirizzo su un browser e premere invio) con l'indirizzo: IP/arduino/mode/3/40. 
Tramite il Web Server e la libreria Bridge, questa stringa arriva allo sketch Arduino che si preoccupa di estrarre il numero tre che rappresenta il comando e il numero 40 che rappresenta la durata che tale comando deve avere. Tramite la funzione all'interno dello sketch Arduino: client.readStringUntil('/'); ripetuta tre volte vengono letti nell'ordine "mode", "3" e "40".  

La riga di codice richiesta.onreadystatechange = sendCommandResponse; prenota la risposta da parte di Arduino e la informa che verrà gestita dalla funzione "sendCommandResponse".

 function sendCommandResponse()
{
          if ((richiesta.readyState == 4) && (richiesta.status == 200))
             {
             esito = richiesta.responseText;
             document.getElementById("info").innerHTML = esito;
             response = esito.split("#");
             document.getElementById("info").innerHTML = response;
             mode = response[0];
           Ardumia67timeout = response [1];
             }
}   

La funzione "sendCommandResponse" si preoccupa di aggiornare il campo di stato del rover che viene mostrato sotto ai tasti:

Nel prossimo post aggiungeremo una webcam sul rover.

venerdì 31 gennaio 2014

Confessioni di un pilota FPV. Il Rover parte 2.

Ecco la prima versione dello sketch Arduino per controllare il Rover da Web browser.


La scheda Arduino Yùn integra:
  • un microcontrollore "Arduino" 
  • un micro PC sul quale "gira Linux" e un web server .
  • una scheda wifi.
Ho realizzato il seguente sketch Arduino partendo dalla descrizione della libreria Bridge e Servo che potete leggere qui e qui


//includo le librerie necessarie

#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>
#include <Servo.h>

//creo il server per la comunicazione con la parte Linux 
YunServer server;

//creo gli oggetti per comandare i servi 
Servo myservoL;
Servo myservoR;

// variabile di modo di funzionamento (avanti, sinistra destra, fermo)
int mode; 
//variabile di timeout per evitare che il rover continui a muoversi in assenza di comandi
int timeout;

//la routine di inizializzazione Arduino
void setup() {
//definisco i pin che devono pilotare i servi
  myservoL.attach(9);
  myservoR.attach(10);

//inizializzo le variabili di funzionamento
  mode=0;
  timeout=0;
  myservoL.write(90);
  myservoR.write(90);

//inizializzo il pin13. Può servire per il debug
  pinMode(13,OUTPUT);

//avvio la comunicazione Bridge con Linux
  Bridge.begin();
  server.listenOnLocalhost();
  server.begin();
}


void loop() {
  digitalWrite(13, HIGH);
  //legge i comandi da Linux
  YunClient client = server.accept();
   if (client) {
   //se c'è un messaggio provo a leggerlo
    process(client);
    client.stop();
  }
  //comando il rover in funzione del "mode" corrente
  if (mode == 1) {
    gostraight();    
  }
  if (mode == 2) {
    turnleft();
  }
  if (mode == 3) {
    turnright();
  }
  if (mode == 4) {
    stopmode();
  }
  //lampeggio led per controllo funzionamento
  digitalWrite(13, LOW);
  //non serve andare veloce

  delay(50); 
}

void process(YunClient client) {
  String command = client.readStringUntil('/');
  if (command == "mode") {
   //se è un comando "mode" 
    modeCommand(client);
  }
  if (command == "state") {
   //se è un comando "state"
    stateCommand(client);
  }
}

void modeCommand(YunClient client) {
//cambio la modalità di funzionamento
  mode = client.parseInt();
  if (client.read() == '/') {
   //setto il nuovo timeout per il nuovo comando
    timeout = client.parseInt();
  }
  //rispondo con il "modo" e il "timeout" corrente
  client.print(mode);
  client.print(F("#"));
  client.print(timeout);
  client.println("");
}   

//rispondo con il "modo" e il "timeout" corrente
void stateCommand(YunClient client) {
  client.print(mode);
  client.print(F("#"));
  client.print(timeout);
  client.println("");


//comanda i servi - avanzamento
void gostraight() {
  if (timeout > 0) {
    myservoL.write(-180);
    myservoR.write(180);
    timeout = timeout -1;
  }
  else {
    stopmode();  
  }
}

//comanda i servi - rotazione sinistra
void turnleft() {
  if (timeout > 0) {
    myservoL.write(-180);
    myservoR.write(-180);
    timeout = timeout -1;
  }
  else {
    stopmode();  
  }
}

//comanda i servi - rotazione destra
void turnright() {
  if (timeout > 0) {
    myservoL.write(180);
    myservoR.write(180);
    timeout = timeout -1;
  }
  else {
    stopmode();  
  }
}

//comanda i servi - stop
void stopmode() {
    myservoL.write(90);
    myservoR.write(90);
    timeout = 0;
    mode=0;  
}


lunedì 27 gennaio 2014

Confessioni di un pilota FPV. Il Rover parte1.

In Dicembre 2013 è stato pubblicato il nuovo regolamento dell'ENAC. L'autorità italiana di regolamentazione tecnica, certificazione e vigilanza nel settore dell'aviazione civile. Le nuove regole sembrano vietare l'FPV anche se una frase che riporto sembra aprire una speranza:

"L’ENAC può prevedere procedure semplificate per i SAPR con massa massima al decollo 
minore o uguale a 2 kg." 


Come l'acqua che penetra in tutte le fessure e si inventa altre strade per soddisfare la propria indole ecco che, dopo poche googlate, decido di costruire un rover VideoWebControllato.

Mi ero divertito a costruire qualcosa di simile, parecchio tempo fa. Si trattava di un piccolo rover a tre ruote. Fu il predecessore terrestre del modello TZagi con telecamera a bordo descritto nel post Confessioni di un pilota FPV.  Avevo modificato due servi per aeromodellismo in modo da trasformarli in motori a rotazione continua e montato una telecamera per videosorveglianza con trasmettitore 2,4 GHz. Avevo collegato il video ricevitore alla TV e seduto sul divano, controllavo con un vecchio telecomando 2 canali il rover che scorrazzava in giardino.
Non avevo mai visto il mio giardino da quel punto di vista. Era un posto nuovo. Un piccolo pianeta inesplorato pieno di misteri. Popolato da enormi mostri a forma di gatto, gallina o riccio. Un videogioco con il quale ci si poteva perdere per ore. Era il 1997 e seguivo con passione le notizie sui progetti del Mars Pathfinder e da li nacque il desiderio di realizzare il mio piccolo e personale rover.

Ecco alcune foto del Rover V1.0:


Avete ragione!! E' molto brutto adesso ma crescerà. 
Riciclando alcuni componenti dei miei aeromodelli e rubando una terrina da cucina ho messo insieme il mucchietto di componenti che mi permetteranno di realizzare il software. Il sistema è composto da: 
Lo schema a blocchi:


Il software nel prossimo post.

mercoledì 15 gennaio 2014

Space 2099 - Il remake perduto


Qualche giorno fa stavo passeggiando senza meta su internet quando mi cade l'occhio su una coppia sospetta di 9.
Quando tre numeri nove sono preceduti da un 1 non possono fare altro che scatenare nella mia mente un insostenibile carico di ricordi e sensazioni. Confesso, mi si sono inumiditi gli occhi.
Era il 1976 e credo che in quell'anno sia nata anche la mia passione per la fantascienza.
La mia TV era in bianco e nero ma trattandosi di SPAZIO:1999 il danno era minimo.
SPAZIO:1999 era diverso da tutto quello che avevo visto prima. La bellezza della Base Alpha e delle sue Aquile nascondevano ai miei occhi di bambino gli errori scientifici della serie. Per me era tutto assolutamente credibile, anzi Vero!!
Questa volta però era diverso. Non c'era il numero 1 davanti ai 9 ma il 2 seguito da 099. Inoltre, poco distante, la parola remake mi ha letteralmente fatto saltare sulla sedia.


Con recitata calma, mi sono rimesso seduto e ho cercato e cercato e cercato.
Tutte le notizie che ho trovato si fermano alla data del 22 febbraio 2012 dove veniva annunciata l'intenzione di produrre il remake. Poi il nulla e anche sul sito ufficiale sembra tutto fermo.


Ecco un elenco di siti da tenere sotto controllo:

Nelle foto il modello di Rescue Eagle della AMT/ERTL che conservo nella mia bacheca.

martedì 7 gennaio 2014

Sega idraulica di Leonardo Da Vinci

La pioggia continuò a cadere per giorni e quindi, dopo essermi "allenato" nella costruzione del Martello a camme, mi lanciai nella costruzione della "Sega idraulica di Leonardo da Vinci".  
Ecco alcune foto delle fasi di costruzione: