Introduzione
• Questo progetto nasce dalla mia passione per la Robotica.
• Robotica = Informatica + Elettronica + Meccanica.
• Il prototipo che ho realizzato include al suo interno numerose tecnologie che permettono di comunicare all’utente informazioni sull’ambiente circostante e sulla posizione del Robot.
• Il Robot necessita di una forte interazione con il suo utilizzatore.
• Non si tratta infatti di un Robot autonomo ma di un ‘Rover’ in grado di effettuare semplici e complesse operazioni ‘a distanza’.
• Proprio l’interazione ‘Uomo-Macchina’ è uno degli argomenti che fin da piccolo mi hanno appassionato e che continuo a studiare sia a scuola sia a casa.
• Ho preferito creare ‘da zero’ il Robot piuttosto che utilizzare progetti già pronti in modo da poter imparare meglio i meccanismi che consentono ad una ‘macchina’ di svolgere il lavoro richiesto da un essere umano.
• Ho chiamato questo prototipo MAR10 (Measuring Advanced Robot Versione 10).
• La realizzazione di MAR10 è costata circa 500 Euro non considerando i componenti elettrici e i pezzi meccanici che già possedevo.
Storia delle Versioni
• L’idea di costruire un Robot nasce nel Febbraio-Marzo 2012.
• Dopo aver acquistato una Fox Board G20 mi sono messo alla ricerca dei pezzi meccanici di base come i motori e le ruote.
• Man mano ho acquistato i vari componenti elettrici ed ho iniziato a scrivere il software del Robot.
• Successivamente ho scritto il software in Java per il collegamento via Socket e ho installato i servizi Web-based del Webserver.
• Il progetto è stato concluso a fine Maggio 2013.
Hardware - Schema Logico

Struttura - Tecnica Costruttiva
• I dispositivi e i circuiti che compongono il robot sono posizionati su due ripiani in vetronite (basette millefori) di dimensioni standard: 160x100 mm.
• La Scheda 1, che corrisponde al ripiano basso, poggia sulle ruote e regge con 4 ‘Spacer’ da 6 cm la Scheda 2 ovvero il ripiano più alto.
• Tutti i circuiti e i collegamenti che compongono il Robot, escludendo i moduli Daisy, il Sonar e la Fox Board, sono saldati a mano con una lega di Stagno-Piombo (60/40).
• La progettazione dei circuiti, ovvero gli schemi elettrici, è stata prevalentemente realizzata su carta. In seguito si è provveduto a ‘digitalizzare’ il lavoro svolto con il software Multisim della National Instruments.
• Per organizzare la disposizione dei componenti è stato utilizzato il software Open source Fidocad.
• La maggior parte dei circuiti, prima di essere saldati, sono stati montati in una breadboard.
Struttura - Scheda 1
• La Scheda 1 è la scheda dove sono raggruppati la maggior parte dei dispositivi e dei controller.
• Su di essa si trovano: Batteria, Fusibile, Stabilizzatori, Shutdown Controller, Battery Check, 12 Volt Enabler, Sensori di prossimità, Led, Motori per il movimento delle ruote, Contagiri e Webcam.
Struttura - Scheda 2
• Sulla Scheda 2 sono presenti i dispositivi più complessi ovvero: Fox Board G20, modulo Daisy 7, modulo Daisy 13 e modulo SRF08 con il suo motore.
• Sono presenti anche il Clacson e il Faretto Anteriore.
• Pur avendo meno dispositivi, la Scheda 2 è la più importante perché su di essa si trova la Fox Board, il ‘cervello’ del robot, che contiene tutto il software necessario al funzionamento dei vari circuiti e sensori.
Struttura - Connessione tra le schede

• Le due schede devono necessariamente essere collegate insieme per poter funzionare.
• Un unico cavo flat a 40 pin si occupa di trasferire l’alimentazione e tutti i segnali da una scheda all’altra.
• Durante la costruzione del robot, spesso era necessario rimuovere la Scheda 2 per poter effettuare delle saldature o dei test. Per questo motivo è stato inserito un connettore ausiliario a 4 pin che fornisce alla Scheda 2 solo l’alimentazione a 5 Volt. In questo modo la Fox Board sarà utilizzabile anche se non potrà dialogare con i dispositivi della Scheda 1.
Alimentazione - Batteria

• La batteria è costituita da 4 celle collegate in serie.
• Ogni cella è un accumulatore a Ioni di Litio che fornisce 3,7 Volt.
• La tensione in uscita dalla batteria è quindi di 14,8 Volt.
• Ogni cella ha la capacità di 2,2 Ampere/Ora.
Alimentazione - Caricatore

• Il Caricatore permette di ricaricare in sicurezza la batteria, fornendo esattamente 4,2 Volt per cella (16,8 Volt in totale) con una corrente non superiore a 985 milliampere.
• Un alimentatore HP da 18,5 Volt alimenta il circuito di regolazione della corrente e della tensione progettato da Scott Henion.
Alimentazione - Fusibile

• Per protezione da eventuali cortocircuiti, subito prima dell’interruttore generale è presente un fusibile da 3,15 Ampere.
• Una eventuale corrente superiore a questo valore, fa bruciare immediatamente il fusibile, senza danneggiare gli altri circuiti.
Alimentazione - Shutdown Controller

• Lo Shutdown Controller, inserito in un apposito connettore della Scheda 1, permette il completo spegnimento del Robot quando il sistema operativo della Fox Board viene arrestato.
• Il circuito è composto principalmente da un relè bistabile a doppia bobina.
• Un pulsante posizionato sul retro permette l’accensione del Robot.
• Il segnale SHDN (Shutdown) proveniente dalla Fox Board provoca invece l’interruzione dell’alimentazione.
• Lo Shutdown Controller essendo rimovibile risulta essere anche la ‘chiave’ di accensione del Robot.
• In mancanza di questa piccola scheda il Robot non potrà essere acceso.
Alimentazione - Stabilizzatori

• Gli stabilizzatori di tensione hanno l’importante compito di livellare e stabilizzare la tensione della batteria, che, oltre ad essere troppo elevata, varia in base alla carica residua.
• Gli integrati L7805 e L7812 forniscono in uscita rispettivamente 5 Volt e 12 Volt.
• La tensione superflua viene inevitabilmente trasformata in calore che viene smaltito con un dissipatore metallico e da una ventola alimentata a 12 Volt.
Alimentazione - Battery Check

• Un piccolo circuito formato da un optoisolatore H11D4, segnala alla Fox Board se la batteria è in carica.
• Inoltre, la tensione della batteria, abbassata con un partitore di tensione, viene misurata dalla Fox Board grazie al suo ADC (Analog to Digital Converter).
• Il software di gestione sarà quindi in grado di mostrare il livello di carica residua della batteria.
• Il dispositivo viene chiamato anche BSI (Battery Status Indicator).
Alimentazione - 12 Volt Enabler

• Un ulteriore piccolo circuito, formato da un relè e da un transistor NPN tipo BC517, si occupa di scollegare il motore posteriore e i 12 Volt se richiesto dalla Fox Board.
• Per fare ciò, viene utilizzata una porta GPIO connessa alla base del transistor (collegato a sua volta al relè).
Fox Board - Descrizione

• La Fox Board G20, è prodotta dall’italiana Acme Systems Srl.
• Si tratta di un Single Board Computer, ovvero di un completo sistema basato su Linux ma con potenzialità hardware molto più ampie di quelle di un semplice PC.
• La distribuzione di Linux che gira sulla Fox Board è Debian, con kernel opportunamente modificato e alleggerito.
• La Fox Board non ha nessuna uscita video e Debian non ha nessuna interfaccia grafica: dispone solamente di una CLI (Command Line Interface) accessibile da un terminale.
• La mancanza della GUI, presente invece su schede avversarie come la Raspberry Pi, risulta essere un vantaggio dal punto di vista delle prestazioni essendo il S.O. più leggero e stabile.
Fox Board - Caratteristiche Hardware

• CPU: ARM AT91SAM9G20 a 400Mhz
• RAM: 64MB (SDRAM)
• ROM: 256KB (Flash Memory)
• Storage Principale: Memory Card da 4GB
• Porte di comunicazione: 3 USB, 1 Ethernet, 80 GPIO, 4 ADC, 6 USART, 2 SPI, 1 I2C.
• Altre caratteristiche: alimentatore integrato, Clock Real Time con batteria tampone, pulsante per la procedura di spegnimento.
• Attraverso la scheda Daisy 1, montata direttamente sopra la Fox Board, è possibile connettere altri dispositivi della Acme Systems alla Fox Board stessa.
Fox Board - Connessione - MiniUSB
• Il Robot per svolgere i suoi compiti, deve essere connesso ad un ‘Client’ che richieda i suoi servizi.
• Il metodo più semplice e minimale per connettersi alla Fox Board, è utilizzare la porta miniUSB (terminale ttyGS0). Installando gli opportuni driver sul PC Client, sarà possibile accedere alla console del robot con un emulatore di terminale (Hyperterminal, Putty, ecc… ).
• Sarà necessario collegare fisicamente il cavetto USB fra Robot e PC e questo impedisce al Robot di muoversi.
• È un metodo di connessione lento e limitato, utilizzato solamente per configurare la connessione ad una rete locale.
Fox Board - Connessione - TCP/IP
• Per accedere al 100% alle funzionalità della Fox Board è necessario connettere il Robot ad una rete LAN con i protocolli della Suite TCP/IP.
• Per fare ciò, si può utilizzare un cavo Ethernet (IEEE 802.3) o una chiavetta WiFi (IEEE 802.11).
• Si potrà accedere al terminale della Fox Board grazie al protocollo SSH (porta 22 TCP) ma sarà anche possibile accedere al sito web interno con il protocollo HTTP (porta 80 TCP) e scambiare file con il protocollo FTP (porta 21 TCP) o SFTP (porta 22 TCP).
• Utilizzando una chiavetta WiFi, il Robot potrà essere libero di muoversi, non essendoci nessun collegamento fisico con il PC.
Fox Board - Connessione - GPRS
• Se il Robot non può essere connesso ad una LAN perché troppo distante, è possibile utilizzare i suoi servizi inviando un SMS alla scheda SIM inserita nel modulo Daisy 13, sfruttando quindi la rete GPRS.
• Con questa modalità, non tutte le potenzialità della Fox Board potranno essere sfruttate, ma almeno sarà possibile contattare il Robot quasi in ogni parte del mondo.
• Grazie al potente Kernel Linux, è possibile utilizzare contemporaneamente più mezzi di comunicazione ed eventualmente connettere più utenti.
Motore Posteriore - Asse e Ruote
• L’asse posteriore ha il compito di trasferire il movimento del motore posteriore alle ruote.
• Il Robot si appoggia su di esso tramite 2 cuscinetti che limitano l’attrito.
• Al centro dell’asse è presente una puleggia (ruota dentata) che accoglie la cinghia collegata al motore.
• La puleggia ha inoltre 6 prolungamenti neri che fuoriescono da un lato: serviranno per utilizzare il contagiri.
Motore Posteriore - Motore

• Il motore posteriore, di tipo DC (Direct Current), è alimentato direttamente dalla batteria e quindi riceve una tensione di circa 14,8 Volt non stabilizzati.
• È collegato alla Scheda 1 con 2 fascette stringenti.
• All’albero motore è collegata una puleggia a cui aderisce la cinghia collegata all’asse posteriore.
• Una molla tira il motore allontanandolo dalle ruote. Questo permette alla cinghia di restare sempre ben aderente alle pulegge.
Motore Posteriore - Controller del Motore

• La gestione del movimento del motore è affidata a 2 relè comandati dalla Fox Board attraverso 2 transistor NPN tipo BC517.
• Il primo relè attiva l’alimentazione, il secondo definisce la direzione della rotazione dell’albero motore scambiando i 2 fili che arrivano al motore stesso (ovvero 14,8 Volt e Gnd).
Motore Posteriore - Contagiri

• Il contagiri permette di misurare i giri che compie l’asse posteriore ed è quindi posizionato in prossimità della puleggia dell’asse.
• Si tratta di una fotocellula, ovvero di un diodo Led a luce infrarossa e di un fototransistor posizionati a pochi millimetri l’uno dall’altro.
• Quando l’asse ruota, ognuno dei 6 prolungamenti della puleggia attraversa la fotocellula e interrompe il fascio di luce infrarossa. Questa interruzione viene percepita dalla Fox Board che quindi potrà sapere esattamente quanti ‘step’ ha percorso il Robot.
Motore Posteriore - Controller del Contagiri
• Il controller del Contagiri è formato da 2 resistenze che rispettivamente proteggono il diodo Led e polarizzano il fototransistor.
• Al collettore del fototransitor è direttamente collegata una porta GPIO della FoxBoard.
• Quando il transistor conduce (ovvero quando la fotocellula non è interrotta dal prolungamento) alla porta non arriverà tensione. Viceversa, quando il transistor non conduce (fascio di luce interrotto) alla porta arriverà tensione.
Motore Anteriore - Motore

• Il motore anteriore permette al Robot di sterzare per effettuare delle curve.
• Il motore è di tipo ‘Stepper Bipolare’ ed è alimentato dalla tensione di 14,8 Volt della batteria.
• Questo tipo di motore permette una precisione di spostamento molto superiore rispetto ad un motore DC, a scapito di un maggiore costo e di una difficoltà in più nel pilotarlo.
• Per permettere al motore di ruotare è necessario fornire ai suoi 4 pin dei brevi impulsi ordinati e sequenziali.
• La corretta sequenza permette al motore di girare in entrambe le direzioni.
Motore Anteriore - Controller

• Il circuito che pilota il motore anteriore è basato su un singolo integrato L298.
• Alle sue uscite, sono collegati diversi diodi che eliminano eventuali tensioni inverse.
• La combinazione esatta di impulsi è definita dalla Fox Board e la invia all’integrato attraverso 4 porte GPIO.
• L’integrato si occupa di trasferire questi impulsi al motore.
Motore Sonar - Motore

• Questo motore permette la rotazione del modulo SRF08 che è montato sopra il motore stesso.
• Il motore è a sua volta attaccato alla scheda 2, ad una altezza di 3 centimetri circa.
• È un motore ‘Stepper Unipolare’ e viene alimentato dai 12 Volt stabilizzati.
• Il metodo di funzionamento è identico al motore Stepper Bipolare utilizzato per sterzare.
Motore Sonar - Controller

• Il circuito integrato che gestisce il motore non è un L298 (utilizzato solo per i motori Bipolari) ma un ULN2003A.
• Il compito che svolge è identico a quello svolto dall’L298 del motore anteriore.
• Anche l’interfacciamento con la Fox Board avviene sempre grazie all’uso di 4 porte GPIO.
Clacson

• Nella scheda 2 è presente un piccolo altoparlante che permette di generare suoni.
• Da una porta GPIO della Fox Board arriverà un segnale ad onda quadra avente una certa frequenza.
• Il transistor BD243C amplificherà questo segnale e l’altoparlante potrà generare il suono.
Sensori di Prossimità - Sensori ad Infrarossi

• Il Robot è dotato di 4 sensori ad infrarossi OPB732, posizionati ai 4 angoli della Scheda 1.
• Internamente, sono costituiti da un Led ad infrarossi e da un fototransistor sensibile alla luce infrarossa.
• Se un ostacolo è abbastanza vicino (massimo 2,5-3 cm), la luce emessa dal Led viene riflessa dall’ostacolo e il fototransitor la rileva.
• Purtroppo sono influenzati dalla luce solare che emette anch’essa radiazione infrarossa. In caso di forte luminosità, segnalano quindi un ostacolo inesistente.
Sensori di Prossimità - Controller

• L’uscita di ogni sensore è analogica poiché corrisponde al collettore del fototransistor.
• Per trasformare il segnale da analogico a digitale viene utilizzata una porta NOT Triggherata 40106.
• Il segnale così ottenuto (0 Volt o 5 Volt) viene inoltre livellato da un partitore di tensione per evitare che le porte GPIO (che funzionano a 3,3 Volt) vengano danneggiate.
Illuminazione - Led RGB

• Il Robot è provvisto di 2 Diodi Led RGB da 5mm e di un Led ad alta intensità di 10mm (Faro Anteriore).
• I Led RGB sono posizionati a destra e a sinistra della Webcam.
• Ogni Led RGB è internamente formato da 3 punti luce che emettono i 3 colori fondamentali per costituire tutti gli altri: Rosso, Verde e Blu.
• I colori disponibili sono quindi Blu, Azzurro, Verde, Rosso, Viola, Giallo e Bianco.
Illuminazione - Faro Anteriore

• Il Faro Anteriore è posizionato davanti alla Fox Board, nella scheda 2.
• Non è direttamente saldato alla scheda ma si trova montato sopra un piccolo slot.
• Quando si deve rimuovere la MicroSD dalla Fox Board, sarà necessario rimuovere il Led da questo alloggiamento.
• Il Led emette una forte luce bianca, capace di illuminare la strada per qualche metro.
Illuminazione - Controller

• Il Controller che pilota i due Led RGB, è formato da 6 transistor NPN tipo BC546.
• La base di ogni transistor è collegata ad una porta GPIO della Fox Board.
• Il collettore è invece collegato ad uno dei 3 colori dei 2 Led.
• Il Controller del Faro Anteriore è invece formato da un transistor NPN tipo BC337 collegato esattamente come gli altri 2 transistor.
Webcam

• La Webcam del Robot è posizionata sopra il motore anteriore.
• È connessa alla Fox Board grazie ad una porta USB.
• Non è una webcam HD, permette una risoluzione massima di 640x480 pixel.
• All’interno della Fox Board è installato il software Open Source MJPG-Streamer che consente lo streaming video e la cattura di fotogrammi.
• Sia lo streaming sia le foto sono visibili attraverso il sito web interno della Fox Board.
WLAN Stick

• La WLAN Stick (chiavetta WLAN) permette al robot una connessione senza fili (Wireless) con un PC.
• La chiavetta è connessa direttamente alla Fox Board attraverso una porta USB.
• All’avvio del Robot, Linux controllerà automaticamente se la chiavetta è inserita.
• Se non è inserita, Linux resta in attesa di un collegamento alternativo: via cavo Ethernet o via porta miniUSB.
Daisy 7

• Il modulo Daisy 7, prodotto dalla Acme Systems, è uno dei dispositivi più importanti del Robot.
• Al suo interno sono presenti: un termometro, un barometro, una IMU e un ricevitore GPS.
• La IMU (Inertial Measurement Unit) è composta da 3 sensori inerziali a 3 assi ciascuno: un accelerometro, un giroscopio e un magnetometro.
• Tutti i sensori sono connessi alla Fox Board con il protocollo I2C. Il ricevitore GPS è invece connesso con un protocollo seriale funzionante a 3,3 Volt.
• Il barometro e il termometro sono entrambi contenuti nel circuito integrato BMP085. Misurando la pressione atmosferica, sarà possibile anche calcolare l’altitudine rispetto al livello del mare.
• L’accelerometro a 3 assi si trova nell’integrato LIS331DLH.
• Il giroscopio a 3 assi si trova nell’integrato L3G4200D.
• Il magnetometro a 3 assi si trova nell’integrato HMC5883L.Questi tre sensori inerziali inviano alla Fox Board ben 9 valori che dovranno essere opportunamente elaborati per ottenere la posizione del Robot nello spazio.
• Il ricevitore GPS si trova nell’integrato Venus638LPx. Ad esso è collegata un’apposita antenna attiva che riceve il segnale e lo amplifica. I connettori del cavo sono di tipo SMA.
• Grazie alla connessione con i satelliti GPS, si potrà localizzare il Robot, trovare l’altitudine e ricavare l’orario preciso degli orologi atomici presenti nei satelliti.
• Tutti i dispositivi del modulo, sono connessi alla Fox Board grazie ad un cavo flat da 10 pin che arriva alla scheda Daisy 1, a sua volta connessa alla Fox Board.

Daisy 13

• Il modulo Daisy 13, anch’esso prodotto dalla Acme Systems, è un modem GPRS.
• Grazie a questo dispositivo è possibile inviare e ricevere un SMS inserendo semplicemente una SIM nell’apposito socket.
• Sfruttando le frequenze della rete GPRS, un telefono cellulare potrà inviare comandi alla Fox Board.
• Il modulo, fisicamente connesso alla Fox Board grazie alla scheda Daisy 1, sfrutta il protocollo seriale per comunicare con Linux.
• Al ricevitore, verranno inviati opportuni comandi (‘AT Command’) utili a configurare il modem.

SRF08 - Descrizione Modulo

• Il modulo SRF08, prodotto dalla Devantech, include al suo interno un sensore ad ultrasuoni (sonar) e un sensore di luminosità.
• Si trova montato in un apposito supporto che lo fissa al motore.
• È collegato alla Scheda 2 grazie ad un cavo flat da 4 pin, tenuto abbastanza lungo da permettere la completa rotazione del modulo stesso intorno al motore.
• Per permettere la comunicazione con la Fox Board entrambi i sensori utilizzano il protocollo I2C.
SRF08 - Sensore ad Ultrasuoni

• Il Sonar per valutare la distanza da un ostacolo, invia un’onda ad ultrasuoni (circa 40KHz) attraverso il suo trasmettitore ultrasonico.
• Le onde sonore si scontreranno con l’ostacolo e ritorneranno al ricevitore ultrasonico.
• Calcolando il tempo trascorso fra la trasmissione e la ricezione del segnale, il controller interno riuscirà a trovare la distanza in centimetri fino ad un massimo teorico di 6 metri.
SRF08 - Sensore di Luminosità

• Il sensore di luminosità è formato principalmente da una fotoresistenza posizionata sopra il ricetrasmettitore ultrasonico.
• Al variare della luminosità, il valore della fotoresistenza cambierà facendo variare la tensione.
• Il Controller interno provvede a convertire la variazione di tensione in variazione di luminosità.
SRF08 - Controller

• A differenza dei moduli Daisy 7 e Daisy 13, che possono essere direttamente connessi alla Fox Board, il modulo SRF08 ha la necessità di un piccolo circuito che abbassa la tensione.
• Infatti, la Fox Board usa il protocollo I2C a 3,3 Volt mentre il dispositivo utilizza il protocollo I2C a 5 Volt.
• Il circuito è formato da una coppia di resistenze da 2,2 Kohm, una per il segnale di Dati e l’altra per il segnale di Clock.
Software - Schema Logico

Robot - Fox board G20
• Il software del Robot è situato all’interno della microSD della Fox Board e si avvia sopra il sistema operativo Linux Debian.
• Senza questo software, il Robot non potrebbe svolgere le sue funzioni.
• Il software del Robot si occupa di fornire diversi servizi e funzionalità agli utenti che desiderano utilizzare il Robot. Per questo si può dire che il Robot ha la funzione di ‘Server’.
• È composto da diversi software che interagiscono con i ‘Clients’ sfruttando il protocollo HTTP, la rete GPRS oppure il meccanismo dei Socket TCP.
Software di Gestione (robot)
• Il software di gestione, chiamato semplicemente ‘robot’, si occupa di gestire tutte le operazioni che può svolgere l’hardware del Robot.
• È scritto interamente in linguaggio ANSI C ed utilizza le librerie dello standard POSIX e quelle del progetto GNU.
• La funzionalità da avviare viene identificata da un codice operativo ed eventualmente da un parametro che possono essere forniti direttamente dalla linea di comando.
• Il software di gestione consente l’accesso in 3 modalità: Console, Socket ed SMS.
• Se non si definiscono parametri dalla linea di comando, all’avvio parte automaticamente la modalità Console.
Modalità Console

• Questa modalità si presenta sotto forma di un menù testuale che mostra la data, l’orario, la carica della batteria e l’elenco dei codici operativi con le rispettive descrizioni.
• Sotto il menù un prompt resta in attesa di un comando dell’utente.
• Si tratta della modalità più diretta e più veloce per l’interazione con il Robot anche se ovviamente non dispone di una GUI.
• Non vengono necessariamente utilizzati i servizi del TCP/IP se il Robot è connesso attraverso la porta miniUSB.
• Per ritornare alla modalità Console mentre si sta usando un’altra modalità è necessario fornire il codice operativo ‘83’.
Modalità Socket

• Con il codice operativo ’81’ è possibile attivare la modalità ‘Socket’.
• Questa modalità utilizza un meccanismo di IPC (Inter-Process Communication) molto comune in ambito UNIX: i Socket.
• I Socket sono flussi di dati che mettono in comunicazione due o più sistemi attraverso le porte TCP o UDP.
• Una volta attivata questa modalità, il robot (che funziona da Server) resterà in ascolto sulla porta TCP 4400.
• Il RAT (ovvero il Client avviato dal PC) si connetterà a questa porta e così i due processi potranno iniziare a scambiarsi dati.
• Non sarà possibile avviare più sessioni contemporaneamente per evitare che più utenti eseguano funzionalità contrastanti.
Modalità SMS
• La modalità ‘Sms’ viene attivata con il codice operativo ‘82’.
• Con questa modalità sarà possibile inviare comandi attraverso un normale cellulare utilizzando la rete GPRS.
• L’utente con il proprio telefonino invia un SMS alla SIM inserita nel modulo Daisy 13 del Robot.
• L’SMS verrà analizzato dal software di gestione e si ottiene quindi il codice operativo e il parametro richiesto per eseguire il comando.
• Il Robot risponderà con un altro SMS che invierà direttamente al telefonino dell’utente.
• L’elenco delle stringhe che l’utente può inviare si trova nel file ‘sms’ situato nella directory ‘/root/save/’.
Modalità SMS - I comandi AT
• I comandi AT, consentono al Modem GPRS Daisy 13 di inviare e ricevere SMS. Questi comandi vengono inviati tramite protocollo seriale dalla Fox Board al Modem.
• I comandi AT sono standardizzati e quelli utilizzati all’interno del software di gestione sono:
• AT: prova la connessione con il modem.
• AT+CMGF: imposta il tipo di connessione (testo o dati).
• AT+CMGD: libera lo spazio di memoria per inviare o ricevere.
• AT+CMGS: definisce il numero di telefono e il contenuto dell’SMS. Poi invia il messaggio al numero desiderato.
• AT+CNMI: riceve il messaggio e lo scrive in memoria, insieme alle informazioni sul mittente.
Script

• Il software di gestione è in grado anche di interpretare e registrare file di scripting scritti con un opportuno linguaggio.
• All’interno di questi file saranno salvati i comandi da eseguire ed eventualmente le ‘pause’ fra un comando e un altro.
• Grazie al meccanismo delle ‘fork’ di Linux all’interno di uno script sarà possibile a sua volta avviare uno o più script.
• Gli script risultano molto utili quando il Robot deve eseguire più operazioni ripetitive, quando deve seguire un ‘percorso’ o anche semplicemente per ‘registrare’ le operazioni appena svolte.
• Il linguaggio di scripting è comunque molto rudimentale: non prevede né salti né cicli di alcun tipo.
Script e Intelligenza Artificiale
• L’uso degli Script è molto importante perché è il primo passo che rende un Robot ‘intelligente’.
• Creando un linguaggio di scripting più complesso (che prevede salti condizionati, cicli e variabili) si potrebbe far interagire il Robot con l’ambiente che lo circonda senza che l’utente si preoccupi di controllarlo.
• Si potrebbero eseguire certi comandi solo se si verificano certe condizioni.
• Esempi:
• Allontanarsi da una fonte di luce.
• Scegliere la strada più breve per raggiungere un certo luogo.
• Trovare il luogo dove la temperatura è più bassa.
Shutdown-Button
• Shutdown-Button è un piccolo programma scritto in C che parte automaticamente all’avvio del sistema.
• Resta in attesa che l’utente prema il pulsante presente nella Fox Board.
• I costruttori della Acme Systems non hanno impostato nessuna funzionalità a questo pulsante.
• Attraverso questo processo, al pulsante viene associata la funzione ‘Robot 92’ che esegue lo spegnimento del sistema operativo.
Webserver Lighttpd

• Lighttpd è il Webserver Open source installato all’interno del sistema operativo della Fox Board.
• Spreca molte meno risorse rispetto ad altri webserver perché Lighttpd è studiato proprio per le macchine poco potenti.
• Lighttpd è in grado di visualizzare: un client SSH (Shell-In-A-Box), un client FTP (Net2ftp), le pagine di MJPG-Streamer, le pagine html con i grafici che usano la libreria RGraph, il gestore per il Database PhpMyAdmin.
• La pagina Index, disegnata da Gregorio Candolo, è scritta in HTML5 e JavaScript.
MJPG-Streamer

• MJPG-Streamer è un software Open Source che consente di gestire la Webcam del Robot attraverso semplici comandi forniti dal software di gestione.
• Può visualizzare nel browser lo streaming video della Webcam attraverso il protocollo HTTP sulla porta 4300 e può scattare e salvare fotografie, anch’esse visualizzabili dal browser.
• Supporta numerose risoluzioni e frame rate.
• Nelle webcam con sistema ‘Pan & Tilt’ consente anche di ruotare, zoomare e modificare la luminosita del Led della webcam direttamente dalla pagine HTTP (Funzionalità non supportate dalla Webcam del Robot).
• Gli script delle pagine web sono scritti in JavaScript.
Shell-In-A-Box

• Shell-In-A-Box è un potente emulatore di terminale scritto in Javascript accessibile direttamente dal browser (protocollo HTTP - HyperText Transfer Protocol).
• Utilizza la porta TCP 4200 del Webserver e si connette al Robot stesso con il protocollo SSH (Secure Shell) in ascolto sulla porta TCP 22.
• Supporta tutte le caratteristiche di un terminale DEC VT100 come i colori e le sequenze di Escape ed è quindi un’ottima alternativa agli emulatori di terminale ‘classici’ come Putty.
• Shell-In-A-Box dispone anche di un comodo menù a tendina che permette di copiare o incollare del testo e di adattarsi alla grandezza del browser con l’apposita funzione ‘Reset’.
Net2ftp

• Net2ftp è un client FTP (File Transfer Protocol) grafico scritto in PHP anch'esso direttamente utilizzabile dal browser.
• Utilizza la porta standard del protocollo HTTP (ovvero la porta TCP 80) e si connette al Server FTP del Robot in ascolto sulla porta TCP 20 e 21.
• Permette di visualizzare, modificare, creare e rimuovere i file e le cartelle del Filesystem di Linux del Robot.
• È anche possibile caricare o scaricare file dal PC client.
• Si tratta di un’alternativa a client non Web-based come FileZilla o WinSCP anche se quest’ultimi hanno il vantaggio di poter utilizzare anche connessioni criptate con il protocollo SCP (Secure CoPy, porta TCP 22).
RGraph

• RGraph è una libreria scritta in Javascript e HTML5 utilizzata per la creazione di pagine HTML che devono contenere grafici.
• Supporta numerosi tipi di grafici: istogrammi, grafici a torta, grafici a stella, grafici a linee, ecc.
• Grazie all’utilizzo di questa libreria è possibile visualizzare i grafici delle misurazioni ambientali.
• Una pagina mostra i grafici a linee di temperatura, pressione, altitudine, distanza e luminosità in funzione del tempo.
• L’altra pagina mostra due grafici a stella che rappresentano la distanza e la luminosità intorno al Robot.
MYSQL e PhpMyAdmin

• La Fox Board ha al suo interno MYSQL, un DBMS (Database Management System) molto utilizzato.
• Il software di gestione utilizza proprio MYSQL per salvare i dati prelevati dal modulo Daisy 7 e dal modulo SRF08.
• In particolare, il software consente di salvare la temperatura, la pressione, l’altitudine in base alla pressione, la luminosità, la distanza da un ostacolo, le misurazioni inerziali dell’IMU, le coordinate geografiche, l’altitudine GPS e il numero di satelliti GPS disponibili.
• L e tabelle risultanti potranno essere visualizzate ed eventualmente modificate direttamente sul browser grazie all’utilizzo di PhpMyAdmin.
RAT - PC Windows/Linux
• Il RAT (Remote Administration Tool) è un software per PC con OS Windows o Linux che è in grado di amministrare il Robot.
• La gestione tramite RAT è molto più user-friendly perché questo software è provvisto di una comoda interfaccia grafica che consente anche all’utente meno esperto di inviare e ricevere dati dal Robot.
• È scritto in linguaggio Java grazie al supporto dell’IDE Eclipse che fornisce una comoda interfaccia utile per la creazione delle Finestre con le librerie AWT, Swing, SWT e Java 3D.
• La connessione con il Software di Gestione avviene tramite la porta 4400 TCP abilitata quando si entra in modalità ‘Socket’.
• Il RAT dispone di tre ‘Finestre’ che hanno compiti diversi.
Finestra di Gestione

• La Finestra di Gestione è la finestra che appare non appena il software viene avviato.
• È formata da diversi pannelli ma solo un pannello alla volta può essere visualizzato dall’utente.
• In ogni pannello sono presenti pulsanti, menù a tendina, etichette e altri oggetti che permettono di agire su una parte specifica del Robot.
• I pannelli presenti sono: Menù (che permette l’accesso agli altri pannelli), Webcam, Misurazioni Ambientali, Misurazioni Inerziali, Movimento, Illuminazione, GPS, Data e Orario, Script, Configurazione della connessione.
• Nel Menù ci sono ulteriori pulsanti e informazioni del Robot.
Rotazioni 3D

• Questo Frame consente di visualizzare graficamente la posizione del Robot nello spazio attraverso l’uso delle Canvas 3D della libreria Java 3D.
• Il Robot viene rappresentato da un parallelepipedo rosso.
• Ogni 100 millisecondi il Robot invia i dati relativi all’IMU già filtrati e il RAT si occuperà di ruotare il parallelepipedo in base a questi dati.
• Due pulsanti permettono di ruotare manualmente il cubo per orientarlo nella giusta direzione rispetto al Robot.
• Un altro pulsante permette di resettare la posizione del cubo.
• Per la trasmissione, viene creata una nuova connessione sulla porta 4500, isolata dalla connessione principale (porta 4400).
Pagina Web
• Questa finestra si apre ogni volta che è necessario visualizzare un contenuto presente nel Web oppure nella pagina interna del Robot.
• Si tratta quindi di un piccolo e semplice browser che ovviamente si appoggia al browser installato nel sistema operativo del PC.
• Per la scrittura del componente è stata utilizzata la libreria SWT.
• La pagina Web viene aperta quando di deve visualizzare: lo streaming o le immagini della Webcam, i grafici delle misurazioni ambientali, la posizione geografica con Google Maps.
Funzionalità
Codice |
Funzione |
01 |
Visualizza la data e l’orario. |
02 |
Aggiorna la data e l’orario connettendosi ad un Server su Internet. Utilizza il protocollo NTP (Network Time Protocol). |
03 |
Aggiorna l’orario (ma non la data) utilizzando i satelliti GPS. |
11 |
Avvia lo Streaming Video sulla porta 4300. |
12 |
Scatta una o più fotografie. |
13 |
Avvio lo Streaming Video e scatta una o più fotografie. |
14 |
Disattiva lo streaming e gli scatti fotografici. |
15 |
Elimina tutte le fotografie memorizzate. |
16 |
Modifica la frequenza degli scatti fotografici. |
17 |
Modifica la risoluzione dello streaming e delle foto. |
18 |
Modifica i fotogrammi per secondo per lo streaming. |
19 |
Visualizza le configurazioni salvate. |
21 |
Visualizza le misurazioni ambientali (temperatura, pressione, altitudine, distanza da un oggetto, luminosità). |
22 |
Visualizza le misurazioni inerziali (accelerometro, giroscopio, magnetometro). |
23 |
Attiva il monitoraggio dell’ambiente con i grafici. |
24 |
Disattiva il monitoraggio dell’ambiente. |
25 |
Monitora posizione (SOLO MODALITA SOCKET). |
26 |
Salva le misurazioni ambientali sul Database. |
27 |
Salva le misurazioni inerziali sul Database. |
31 |
Accende i motori. |
32 |
Spegne i motori. |
33 |
Consente lo spostamento manuale del Robot. |
34 |
Ruota l’asse anteriore fino alla posizione desiderata. |
35 |
Consente al Robot di avanzare fino alla posizione scelta. |
36 |
Ruota il sonar fino alla posizione desiderata. |
37 |
Visualizza le posizioni del motore anteriore e del motore del sonar. |
38 |
Resetta le posizioni dei motori. |
41 |
Permette la scelta del colore di accensione del Led destro. |
42 |
Permette la scelta del colore di accensione del Led sinistro. |
43 |
Avvia o ferma il lampeggio simultaneo dei due Led RGB (destro e sinistro). |
44 |
Avvia o ferma il cambiamento casuale dei colori dei led RGB (destro e sinistro). |
45 |
Accende o Spegne il Led centrale (faro anteriore). |
51 |
Visualizza le coordinate satellitari (latitudine, longitudine, altitudine), l’orario, il numero di satelliti disponibili e la disponibilità del segnale. |
52 |
Visualizza la stringa NMEA proveniente dai satelliti senza elaborazioni. |
53 |
Converte la latitudine e la longitudine dei satelliti nelle rispettive coordinate per Google Maps. |
54 |
Salva tutte le informazioni dei satelliti (comprese le coordinate per Google Maps) nel Database. |
61 |
Misura la luminosità e la distanza man mano che il motore del sonar gira su se stesso. |
62 |
Visualizza la carica della batteria e mostra se è in carica utilizzando il BSI (Battery Status Indicator). |
63 |
Visualizza il credito residuo di una Sim inviando un SMS al 40916. |
71 |
Visualizza la lista degli script salvati. |
72 |
Esegue lo script scelto dall’utente. |
73 |
Visualizza il codice dello script scelto dall’utente. |
74 |
Elimina lo script scelto dall’utente. |
75 |
Avvia la registrazione delle operazioni svolte dal Robot. Ogni comando eseguito verrà scritto in un file che diventerà un nuovo script. |
76 |
Interrompe la registrazione in corso. |
81 |
Avvia la modalità socket sulla porta 4400. Resta in attesa che il RAT si connetta. Se la porta 4400 non è disponibile, permette di scegliere una porta diversa. |
82 |
Avvia la modalità sms utilizzando il modem Daisy 13. Resta in attesa che arrivi un SMS. |
83 |
Avvia la modalità console. Da utilizzare nel caso in cui sia attiva un’altra modalità e si voglia interrompere. |
91 |
Esce dal software di gestione e ritorna alla shell di Linux. |
92 |
Esce dal software di gestione e avvia il processo di spegnimento del sistema operativo (ovvero avvia il RunLevel 0 di Linux). |
Funzionalità - Spostamento Manuale (33)
Codice |
Funzione |
|
↑ |
w |
Avanti |
↓ |
s |
Indietro |
← |
a |
Sinistra |
→ |
d |
Destra |
‘ ’ |
Ferma Spostamento |
|
k |
Ruota il sonar a sinistra |
|
l |
Ruota il sonar a destra |
|
p |
Avanza/Indietreggia fino ad ostacolo |
|
c |
Suona Clacson |
|
r |
Resetta le posizioni dei motori |
|
x |
Uscita |