1. Reperimento dei materiali
I materiali utilizzati per il progetto sono i seguenti:
•
•
•
•
•
•
•
•
Arduino UNO rev3;
Arduino Ethernet Shield;
Router TP-Link Modello TL-MR3020;
L293D;
Pennetta 3G compatibile con il router;
Macchinina radiocomandata;*
Batterie AAA;
Batterie 9V.
* L'unico consiglio è di trovarne una che non sia troppo piccola altrimenti potrete avere
problemi nella disposizione dei componenti.
2. Progetto circuito elettrico
Il circuito che è stato progettato è un ponte H. Il circuito risulta così semplice grazie
all'integrato L293D che contiene al suo interno tutte le componenti del ponte.
Di seguito il circuito:
Gli schemi sono reperibi alla pagina di download.
3. Prove e montaggio circuito elettrico
Il circuito è stato prima di tutto testato su breadboard per prevedere eventuali
malfunzionamenti.
Dopodichè, è stato progettato il footprint, che grazie alla disponibilità della scuola, è stato
stampato.
Al circuito sono state poi saldate le componenti:
4. Acquisizione e Elaborazione dati
Come detto in precedenza i dati vengono acquisiti dalla paginaComanda, che contiene
una grafica intuitiva per controllare la nostra macchinina.
In base al tasto o alla combinazione di tasti che viene premuta questa funzione calcola un
numero da 1 a 9(come nela tastiera del nostro PC). Poi vengono assemblati ed infine
inviati, attraverso l'utilizzo di un iFrame ad una pagina con indirizzo no-ip. Qusto indirizzo
che sfrutta un servizio DDNS ci consente di avere un indirizzo statico per il nostro indirizzo
IP altrimenti dinamico.
Ricerca dati:
function posizione(lax,lay){
sugiu = lay;
dxsx = lax;
if(sugiu==2)
{
if(dxsx==4)
{
val="1";
}
else if(dxsx==5)
{
val="2";
}
else if(dxsx==6)
{
val="3";
}
else
{
val="5";
}
}
else if(sugiu==5)
{
if(dxsx==4)
{
val="4";
}
else if(dxsx==5)
{
val="5";
}
else if(dxsx==6)
{
val="6";
}
else
{
val="5";
}
}
else if(sugiu==8)
{
if(dxsx==4)
{
val="7";
}
else if(dxsx==5)
{
val="8";
}
else if(dxsx==6)
{
val="9";
}
else
{
val="5";
}
}
else
{
val="5";
}
return val;
}
Acquisizione ed Elaborazione:
$(function(){
var y=5;
var x=5;
var server = "http://mioserver.no-ip.org";
$("#su").click(
function()
{
y=8;
var indirizzo = server+posizione(x,y);
document.getElementById('scar').setAttribute('src',indirizzo);
$("#su").css("background-color","#CCCCCC");
$("#xd").css("background-color","#999999");
$("#giu").css("background-color","#999999");
});
$("#xd").click(
function()
{
y=5;
var indirizzo = server+posizione(x,y);
document.getElementById('scar').setAttribute('src',indirizzo);
$("#su").css("background-color","#999999");
$("#xd").css("background-color","#CCCCCC");
$("#giu").css("background-color","#999999");
});
$("#giu").click(
function()
{
y=2;
var indirizzo = server+posizione(x,y);
document.getElementById('scar').setAttribute('src',indirizzo);
$("#su").css("background-color","#999999");
$("#xd").css("background-color","#999999");
$("#giu").css("background-color","#CCCCCC");
});
$("#sx").click(
function()
{
x=4;
var indirizzo = server+posizione(x,y);
document.getElementById('scar').setAttribute('src',indirizzo);
$("#sx").css("background-color","#CCCCCC");
$("#xs").css("background-color","#999999");
$("#dx").css("background-color","#999999");
});
$("#xs").click(
function()
{
x=5;
var indirizzo = server+posizione(x,y);
document.getElementById('scar').setAttribute('src',indirizzo);
$("#sx").css("background-color","#999999");
$("#xs").css("background-color","#CCCCCC");
$("#dx").css("background-color","#999999");
});
$("#dx").click(
function()
{
x=6;
var indirizzo = server+posizione(x,y);
document.getElementById('scar').setAttribute('src',indirizzo);
$("#sx").css("background-color","#999999");
$("#xs").css("background-color","#999999");
$("#dx").css("background-color","#CCCCCC");
});
I dati ora pronti sul web vengono letti da Arduino collegato all'Ethernet Shield e ad un
router connesso ad internet tramite una pennetta 3g.
L'Arduino viene utilizzato come web server e nel router è stata aperta la porta 80(Verrà
spiegato in seguito), e connesso con il sito no-ip. Tutto ciò fa in modo che ogni
informazione che arrivi all'indirizzo di no-ip venga letto da Arduino.
* Per una maggiore comprensione tutto il codice del sito è disponibile nella pagina
download.
5. Comunicazione WEB
Una volta che abbiamo ottenuto ed inviato il nostro indirizzo completo questo, come fa ad
arrivare ad Arduino?
Il servizio che no-ip offre è un servizio, come già ripetuto più volte in precedenza, di
DDNS(Dynamic DNS). Ovvero il nostro IP globale, quello del router, viene associato con
un nome DNS dello stesso host, anche se l'indirizzo cambia nel tempo. Questo ci permette
di inviare comandi all'alrduino anche se il nostro router si è riavviato ed ha quindi cambiato
il suo IP globale.
Per attivare il servizio, basta resgistrarsi su no-ip. Una volta fatto questo, basta recarsi su
Hosts/Redirects ed aggiungere un nuovo host.
Fatto questo possiamo iniziare a modificare le impostazioni del router.
Per accedere al pannello di controllo del router basta digitare il seguente IP:
192.168.0.254 ed accedere con le seguenti credenziali: Username: admin - Password:
admin
Inserimento dati no-ip:
Pe quanto riguarda l'arduino, utilizzato come web server, bisgna effettuare due operazioni:
La prima è quella di impostare l'IP dell'arduino statico.
La seconda è quella di aprire la porta 80 all'arduino sul router in maniera tale che tutti i
comandi vadano a finire all'Arduino.
Ora il nostro arduino è pronto per la comunicazione web.
6. Elaborazione dati
Una volta che i dati sono stati inviati tocca all'arduino codificarli.
Questo avviene nella seguente maniera:
msg = "";
EthernetClient pc_client = ArduinoEthernetServer.available();
//controllo se pc_client è true
if (pc_client != false)
{
//controllo continuamente che il client sia connesso
while (pc_client.connected())
{
//Controllo se ci sono byte disponibili per la lettura
if (pc_client.available())
{
Data_RX = pc_client.read(); //leggo i byte disponibili provenienti
dal client
msg += Data_RX; //ricostruisco la stringa ricevuta concatenando i
singoli byte
Dopo aver ricorstruito la stringa, controllo che sia finita.
if (Data_RX == '\n')
Dopo questa operazione attraverso una serie di if controllo il comando,
if (msg.indexOf("reset")>0) cmd=0;
if
if
if
if
if
if
if
if
if
(msg.indexOf("c1")>0)
(msg.indexOf("c2")>0)
(msg.indexOf("c3")>0)
(msg.indexOf("c4")>0)
(msg.indexOf("c5")>0)
(msg.indexOf("c6")>0)
(msg.indexOf("c7")>0)
(msg.indexOf("c8")>0)
(msg.indexOf("c9")>0)
cmd=1;
cmd=2;
cmd=3;
cmd=4;
cmd=0;
cmd=6;
cmd=7;
cmd=8;
cmd=9;
che verrà poi filtrato attraverso uno switch.
switch (cmd)
{
7. Realizzazione sito web
Per il sito web sono tate create un buon numero di pagine. In HTML sono state create
quelle statiche, cioè tutte quelle contenenti le spiegazioni teoriche o gli schemi.
In PHP sono invece state create le pagine dinamiche.
Una delle pagine dinamiche è ad esempio quella dei download, che controlla con che
browser viene aperto il sito prima di impostare gli indirizzi dei file di download.
Con questo linguaggio è stata creata anche la pagina contatti, cioè quella adibita ad
inviare mail con le richieste degli utenti al proprietario del sito.
Per alcune pagine, come quella per comandare la macchinina, viene utilizzato il javascript
come si può notare sopra, con la funzione e la pagina che inviano i dati all'arduino.
Scarica

- Home - Arduino Mobile