vuoi
o PayPal
tutte le volte che vuoi
Questa tesina descrive e spiega il controllo remoto di un Robot. Tesina maturità argomenti: in Informatica la programmazione web Php-html-javascritp-Jquery-MySQL-Python-C, in Elettronica digitale RaspBerry Pi model B, FPGA, Robotica Didattica, in Telecomunicazione Access Point Wi.FI (physical layer), Presentation, Application Layer Comunicazione SPI.
Informatica- La programmazione web Php-html-javascritp-Jquery-MySQL-Python-C.
Elettronica digitale - RaspBerry Pi model B, FPGA, Robotica Didattica.
Telecomunicazione: Access Point Wi.FI (physical layer), Presentation, Application Layer, Comunicazione SPI.
-Linux Embedded e Controllo Remoto 4
La distribuzione
RaspBian
Raspbian è un sistema operativo debian-
based, che nasce appositamente per essere
utilizzato su RaspBerry Pi. Raspbian è
nientemeno che un ottimizzazione di Debian
per lavorare con il processore di RaspBerry
Pi. Secondo i benchmark, questo nuovo
sistema consente, solo in alcune operazioni, di incrementare fino al 40% le prestazioni rispetto a
Debian.
Inoltre include il supporto per il set di istruzioni ARMv6.
E' possibile scaricare l'ultima immagine di Raspbian dal sito ufficiale di RaspBerry Pi, dove verrà
anche spiegato come installare il sistema su una scheda SD per poterla utilizzare sul mini-
computer.
Un altra ditro debian-based valida è Linaro Ubuntu.
PARTE III
Controllo remoto
L'ITCS Erasmo da Rotterdam dispone di un “Laboratorio Permanente di Robotica”, uno spazio
dove gli studenti possono applicare le loro conoscenze didattiche e approfondirle, dove ci si pone
delle problematiche e si trovano delle soluzioni, un metodo che propone una simulazione di
come un TEAM aziendale lavora in base a delle specifiche e a degli obiettivi. Il laboratorio ha
permesso alle nuove generazioni di cimentarsi nella realizzazione dei robot grazie agli sponsor
quali Xilinx, Futura Elettronica, Mirifica, Texas Instrument e alla partecipazione della RoboCup
Junior, organizzata da una rete nazionale di scuole. Dalla nascita della manifestazione il
Transistor Team e il Droiders Team hanno realizzato diversi prototipi con cadenza annuale
migliorando le problematiche riscontrate ogni anno.
Nessie 2013 si propone come modello di riferimento con un’architettura “a livelli” in cui sono
presi in considerazione tutti gli aspetti che riguardano il ciclo produttivo completo del robot,
-Linux Embedded e Controllo Remoto 5
partendo dalla parte meccanica, per giungere fino al software. Iniziando dal “Phisical Layer”, lo
chassis e tutte le componenti meccaniche sono realizzabili tramite un software di CAD e la
successiva “stampa 3D”. Con le FPGA possono essere sviluppate tutte le problematiche relative
alla gestione dell’hardware, modellandolo alle necessità dell’applicazione e di gestione, e
implementando il primo livello di protocollo “Data Link” per dialogare con la scheda di gestione su
cui è presente il sistema operativo necessario a sviluppare i layers “Presentation” e “Application”.
Sfruttando la potenza di Linux Embedded, Nessie 2013 introduce il concetto di controllo remoto
delle risorse hardware di cui il robot è costituito. Un pannello di controllo, RoboGUI, permetterà di
tenere sotto controllo i dati dei sensori e di guidare il robot in real-time mode.
PARTE IV
IL PROGETTO
Il progetto come prima descritto è costituito da un modello a strati (Layer) come avviene nel
modello OSI/ISO E TCP/IP.
Il primo livello determina il mezzo trasmissivo attraverso il quale i dati vengono scambiati. In
questo progetto verrà utilizzata la nota tecnologia senza fili Wi-Fi. Basterà avere un browser e
una connessione Wi-Fi per collegarsi al robot in modo da impartire comandi e tenere sotto
controllo i suoi stati interni.
-Linux Embedded e Controllo Remoto 6
Nella fase di progettazione il prototipo è stato sviluppato mediante la sottostante configurazione
che, per ovvie ragioni, non può costituire la scelta finale del mezzo fisico in quanto una
connessione cablata limiterebbe il robot nel movimento.
La RaspBerry , fisicamente installata sul robot, implementa il phisical layer della comunicazione e
il data link layer responsabile delle trame di input/output. Questa scheda implementa un server
web per rendere accessibile la pagina di controllo agli host collegati. Essa sarà visibile come
Access Point Wi-Fi a tutti i dispositivi dotati di browser che vorranno collegarsi al robot per
interagire.
La RaspBerry Pi non è dotata di una scheda di rete Wireless
integrata, pertanto ci serviremo di un dongle Wi-Fi USB per
rendere possibile la connessione senza fili. Il dongle in
questione è il RealTek RTL8188CUS 802.11n WLAN
Adapt e di seguito è riportata la procedura per l'installazione
dei driver utili al funzionamento come Access Point.
Il sistema operativo in questione e RaspBian di cui abbiamo
fatto una breve panoramica precedentemente , una “distro”
GNU/Linux ottimizzata per i dispositivi embedded ARM
-Linux Embedded e Controllo Remoto 7
PARTE V
AGGIORNAMENTO DRIVER PER ACCESS
POINT lsusb
Inseriamo il dongle USB Wi-Fi nella porta USB e con il comando dalla shell di linux
verificheremo che il dispositivo sia stato riconosciuto dal sistema.
Se tutto è andato a buon fine il comando restituirà la seguente riga
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN
#Realtek RTL8188CUS chipset
# scaricare driver
wget https://github.com/jenssegers/RTL8188-
hostapd/archive/v1.1.tar.gz
#estrarre archivio
tar -zxvf v1.1.tar.gz
#installare sorgenti
cd RTL8188-hostapd-1.1/hostapd
sudo make
sudo make install
#Installazione software e pacchetti necessari
sudo apt-get install hostapd udhcpd
#Impostazioni DHCP #Modificare file /etc/udhcpd.conf ( sudo nano /etc/udhcpd.conf )
start 192.168.42.2 # Questo è il range degli IP che assegnerà ai
client devices.
end 192.168.42.20
-Linux Embedded e Controllo Remoto 8
interface wlan0 # The device uDHCP listens on.
remaining yes
opt dns 8.8.8.8 4.2.2.2 # The DNS servers client devices will use.
opt subnet 255.255.255.0
opt router 192.168.42.1 # Questo sarà l'indirizzo dell'Access
Point
opt lease 864000 # 10 day DHCP lease time in seconds
#modificare file /etc/default/udhcpd commentare la riga
DHCPD_ENABLED="no" ---> #DHCPD_ENABLED="no"
#modifca interfaccia wlan0
#Assegnamento IP STATICO
sudo ifconfig wlan0 192.168.42.1
#Aprire e modificare file /etc/network/interfaces
iface wlan0 inet static
address 192.168.42.1
netmask 255.255.255.0
#Commentare le seguenti righe
#allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
#configurazione Acces Point Wi-Fi
#per creare una password WPA modificate file /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=My_AP
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=My_Passphrase
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
#network aperto
interface=wlan0
ssid=My_AP
hw_mode=g
channel=6
auth_algs=1
-Linux Embedded e Controllo Remoto 9
wmm_enabled=0
#Aggiungere il seguente path al file /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
# Avviare i seguenti servizi per rendere operativo l'AP
sudo service hostapd start
sudo service udhcpd start
# Aggiungere le precedenti righe nel file bashrc per avviare l'access point af ogni avvio
sudo update-rc.d hostapd enable
sudo update-rc.d udhcpd enable
web server
Un Web server è un processo che si occupa di ricevere richieste HTTP da parte di un client (es:
un browser) e di fornirne una risposta HTTP. L'host in questo modo è in grado si fornire servizio
ad altri host, e di rendere disponibile la pagina di controllo remoto del robot.
Per l'installazione delle funzionalità server sulla RaspBerry ci serviamo del famoso pacchetto
Apache. Apache HTTP Server è il Web server HTTP opensource della Apache Software
Foundation. Dal 1996, è il Web server più diffuso su Internet È un server modulare: le
funzionalità sono rese disponibili tramite moduli attivabili o disattivabili a piacimento attraverso il
file di configurazione “httpd.conf”. All'interno del mondo UNIX sono disponibili altri software che
svolgono la medesima funzione, uno di questi è lighttpd che non tratteremo.
Installazione di un web server su
raspbian
Il termine per indicare un server web sotto Linux, che abbia caricati i moduli di PHP e MySQL ,
viene detto LAMP. Digitate ora sul terminale le seguenti istruzioni
#Assicuratevi di essere aggiornati
sudo apt-get update
#modifcate il seguente file per cambiare il nome dell'host, CTRL+ X per uscire e salvare le
modifiche
sudo nano / etc / hostname
-Linux Embedded e Controllo Remoto 10
#rendere effettive le modifiche riavviando
sudo reboot
#Installiamo Apache e altri pacchetti
sudo apt-get install apache2 apache2-doc apache2-utils
#Installiamo i pacchetti di supporto per PHP
sudo apt-get install libapache2-mod-php5 php5 php-pear php5-xcache
#installiamo il modulo per le connettività con un database
sudo apt-get install php5-mysql
#installiamo il server MySQL
sudo apt-get install mysql-server mysql-client
Verrà chiesto di impostare una password di root.Inserire una password e confermarla quando
richiesto nella schermata blu.
Il dispositivo RaspBerry Pi ora sarà visibile a tutti gli host connessi tramite Access Point Wi-Fi.
/var/www/
La directory conterrà l'homepage e tutte le pagine del servizio offerto.
La pagina sarà disponibile agli altri host all'indirizzo IP assegnato col comando
sudo ifconfig wlan0 192.168.42.1
APPLICATION LAYER
REMOTE CONTROL PAGE
L'interfaccia con l'utente è caratterizzata da una pagina scritta prevalentemente in HTML. Nella
sua semplicità questa scelta adotta un particolare sistema di comunicazione tra client e server
Asynchronous Javascript And XML
utilizzando AJAX.AJAX è l’acronimo di e indica una tecnica
per permettere di costruire applicazioni web. AJAX è stato creato per consentire alle applicazioni
asincrono
web un dialogo tra client e server minimizzando così il tempo di risposta percepito
dall’utente. In questo senso i dati che il robot acquisisce dalla sensoristica vengono aggiornati in
tempo reale senza che l'utente debba riaggiornare la pagina evitando inutili attese. I dati
attendibili vengono tabellizzati da un programma PHP chiamato dalla funzione AJAX sopracitata
-Linux Embedded e Controllo Remoto 11
I nuovi comandi vengono inviati al lato server, il quale sempre tramite un interprete PHP si
occuperà di comunicare con i livelli inferiori le istruzioni fisiche (motori, pinza , direzioni) del robot
Una soluzione valida a
gestire dinamicamente il
flusso dei dati acquisiti dal
robot, può essere quella di
appoggiarsi ad un
database SQL. Il suo
scopo sarà quello di gestire
le tabelle cosi create, sarà
possibile ottenere
informazioni di ogni
sensore, stato e motore
mediante un interrogazione
al database. La soluzione attuale adotta un semplice file di
testo contenente il tipo e i dati del sensore.
La formattazione prevede un carattere
separatore della serie
SENSORE,DATO1,DATO2 in modo che la
stringa possa essere “esplosa” in differenti
leggo.php
campi. Il file costruisce la tabella
presente sulla pagina web servendosi dei dati
appena letti nel file di testo (dati.txt)
/var/www.
posizionato nella directory
L'homepage con la quale verrà comandato il
robot disporrà di un joystick virtuale
semplificato per poterlo pilotare. Insieme al
joystick sarà visibile la tabella che varierà
dinamicamente ogni 20 millisecondi, dando il
tempo alla RaspBerry di acquisire il valore e
renderlo disponibile.
Questo script AJAX permette l'esclusivo
refresh della tabella e non dell'intera pagina
<script type="text/javascript">
var auto_refresh = setInterval(
function (){
$('#load_tweets').load('leggo.php').fadeIn("slow");
}, 20); //richiama il file leggo.php ogni 20ms riaggiornando
la tabella dati
-Linux Embedded e Controllo Remoto 12
</script>
#sorgente del file leggo.php
<?php
function Carica(){
/ *LEGGE DATI DAL FILE C, OGNI LINEA VERàà ESPLOSA*/
$Line_Length=50;
if (!$p_file = fopen("dati.txt","r"))
{echo "Impossibile accedere ai Dati";
exit;}
$n = 0;
while($n<50)
{ $tabella[$n++] = explode(",",(fgets($p_file,
$Line_Length))."<br>");
}
fclose($p_file);
return $tabella;}
function Tabellizza($dati){
e cho "<table class=curvedEdges>
<TR> <td>Sensore</td> <td>Stato</td> <td>Stato2</td>
</TR>";
$n=0;
while($n<(count(file("dati.txt")))){
echo "<tr>
<td>".$dati[$n][0]."</td> <td>".$dati[$n][1]."</td> <td>".
$dati[$n][2]."</td>
</tr>"; $n++;}
echo "</table>";}
$record=Carica();
Tabellizza($record);
?>
-Linux Embedded e Controllo Remoto 13
PROTOCOLLO SPI E RaspBerry Pi
La trasmissione avviene tra un dispositivo
detto master e uno o più slave. Il master
controlla il bus, emette il segnale di clock,
decide quando iniziare e terminare la
comunicazione.
Il bus SPI si definisce: