<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Accesso remoto Archives - Esperimenti con logiche programmabili</title>
	<atom:link href="https://logicaprogrammabile.it/tag/accesso-remoto/feed/" rel="self" type="application/rss+xml" />
	<link>https://logicaprogrammabile.it/tag/accesso-remoto/</link>
	<description>Tutorial in italiano per imparare a programmare usando Arduino, Raspberry PI, Netduino</description>
	<lastBuildDate>Sun, 15 Jan 2017 17:42:05 +0000</lastBuildDate>
	<language>it-IT</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://logicaprogrammabile.it/wp-content/uploads/2017/11/cropped-logicaprogrammabile-logo-02-32x32.png</url>
	<title>Accesso remoto Archives - Esperimenti con logiche programmabili</title>
	<link>https://logicaprogrammabile.it/tag/accesso-remoto/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ethernet shield usare un browser per pilotare Arduino</title>
		<link>https://logicaprogrammabile.it/ethernet-shield-utilizzare-browser-controllo-remoto-arduino/</link>
					<comments>https://logicaprogrammabile.it/ethernet-shield-utilizzare-browser-controllo-remoto-arduino/#comments</comments>
		
		<dc:creator><![CDATA[Marco Lai]]></dc:creator>
		<pubDate>Mon, 05 Sep 2011 08:57:11 +0000</pubDate>
				<category><![CDATA[Tutorial Arduino]]></category>
		<category><![CDATA[Accesso remoto]]></category>
		<category><![CDATA[Web Server]]></category>
		<guid isPermaLink="false">https://logicaprogrammabile.it/?p=1948</guid>

					<description><![CDATA[<p>Utilizzando l&#8217;ethernet shield possiamo pilotare da remoto le uscite dell&#8217;Arduino Continuiamo la serie di articolo per il controllo da remoto del nostro Arduino. Negli articoli precedenti abbiamo visto come sia semplice leggere lo stato dei pin digitali e come acquisire dei segnali con gli ingressi...</p>
<p>The post <a href="https://logicaprogrammabile.it/ethernet-shield-utilizzare-browser-controllo-remoto-arduino/">Ethernet shield usare un browser per pilotare Arduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Utilizzando l&#8217;ethernet shield possiamo pilotare da remoto le uscite dell&#8217;Arduino</h1>
<p>Continuiamo la serie di articolo per il controllo da remoto del nostro Arduino. Negli articoli precedenti abbiamo visto come sia semplice leggere lo stato dei pin digitali e come acquisire dei segnali con gli ingressi analogici della scheda.<br />
Questo articolo vedrà di utilizzare il browser per inviare dei comandi alla board <a href="http://www.amazon.it/gp/product/B008GRTSV6/ref=as_li_ss_tl?ie=UTF8&amp;camp=3370&amp;creative=24114&amp;creativeASIN=B008GRTSV6&amp;linkCode=as2&amp;tag=logicaprogram-21" target="_blank" rel="nofollow">Arduino UNO</a>, tramite protocollo http, per pilotare le uscite dei in digitali.</p>
<p>La prima operazione da decidere riguarda la scelta dei pin che intendiamo impiegare come uscite in questo esempio ho decido di configurare i pin2 e il pin3.</p>
<pre class="lang:arduino decode:true ">void setup()
{
//inizializza lo shield con il mac e l'ip
Ethernet.begin(mac, ip);
//inizializza l'oggetto server
ArduinoServer.begin();
//definisco i pin6 e pin7 come ingressi
pinMode(6, INPUT);
pinMode(7, INPUT);

//definisco i pin2 e pin3 come uscite
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}</pre>
<p>&nbsp;</p>
<p><span id="more-1948"></span>Adesso dobbiamo capire come inviare via browser dei comandi all&#8217;Arduino. Questo è possibile utilizzando la barra degli indirizzi del browser, infatti inserendo del testo dopo l&#8217;indirizzo ip della board possiamo recuperarlo utilizzando la funzione <strong>read()</strong>. Per capire meglio, l&#8217;esempio seguente illustra le varie fasi:</p>
<p>inserisco, nel browser, l&#8217;indirizzo ip della board e del testo aggiuntivo:</p>
<p style="text-align: center;"><strong>http://10.192.1.251/testo_personalizzato</strong></p>
<p>dopo aver premuto il tasto invio o il pulsante vai, il browser invierà alla board questa informazione:</p>
<p style="text-align: center;"><strong>GET /testo_personalizzato HTTP/1.0</strong></p>
<p style="text-align: left;">I singoli byte letti dalla funzione <strong>read()</strong> vengono concatenati per ricostruire l&#8217;intera stringa http. Questo avviene creando un oggetto <strong>String</strong>  e utilizzando l&#8217;istruzione di concatenamento <strong>+=</strong></p>
<pre class="lang:arduino decode:true ">//Dichiaro un oggetto String
String msg = "";

...

//leggo i byte disponibili
//provenienti dal client
Data_RX = pc_client.read();

//ricostruisco la stringa ricevuta concatenando i singoli byte
msg += Data_RX;

...</pre>
<p>&nbsp;</p>
<p style="text-align: left;">Quando termino di leggere tutti i byte inviati dal browser, l&#8217;oggetto <strong>msg</strong> conterrà l&#8217;intero dato, così come inviato dal browser</p>
<p style="text-align: center;"><strong>GET /testo_personalizzato HTTP/1.0</strong></p>
<p>utilizzando il metodo <strong>indexOf()</strong> dell&#8217;oggetto <strong>msg</strong> posso controllare se all&#8217;interno di questa stinga è presente un particolare teso, ad esempio per verificare la presente del testo <strong>HTTP</strong> dovrò scrivere</p>
<p style="text-align: center;"><strong>int occorrenza = msg.indexOf(&#8220;HTTP&#8221;)</strong>;</p>
<p>il valore restituito rappresenta il numero di occorrenze trovate all&#8217;interno della stringa <strong>msg</strong>, in questo caso il testo HTTP è presente una sola volta quindi la variabile <strong>occorrenza</strong> conterrà il valore 1.</p>
<p>Di conseguenza per pilotare l&#8217;uscita <strong>pin2</strong> al livello alto potremmo scrivere sulla barra dell&#8217;indirizzo del browser qualcosa del tipo</p>
<p style="text-align: center;"><strong>http://10.192.1.251/PIN2ON</strong></p>
<p>in questo caso la stringa <strong>msg</strong> sarà uguale a</p>
<p style="text-align: center;"><strong>GET /</strong><strong>PIN2ON </strong>HTTP/1.0</p>
<p>il metodo <strong>indexOf</strong> dovrà cercare la stringa <strong>PIN2ON</strong> e, in base al risultato, attivare o meno l&#8217;uscita dell&#8217;Arduino. Il codice seguente realizza quanto esposto</p>
<pre class="lang:arduino decode:true ">...

//cerco all'interno della stringa il parametro che mi interessa
cmd = msg.indexOf("LEDON");

if (cmd &gt; 0)
digitalWrite(2, HIGH);
else
digitalWrite(2, LOW);

...</pre>
<p>&nbsp;</p>
<p>Per chiarezza inserisco tutto il codice dello sketch :</p>
<pre class="lang:arduino decode:true ">/*
Semplice Controllo remoto
Settembre 2011
Marco Lai
*/

//Librerie impiegate per il progetto
#include &lt;SPI.h&gt;
#include &lt;Ethernet.h&gt;

//Creao un array di byte per specificare il mac address
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//creo un array di byte per specificare l'indirizzo ip
byte ip[] = {10, 192, 1, 251}; //modificate questo valore in base alla vostra rete

char Data_RX;

String msg = "";
int cmd = 0;

//creao un oggetto server che rimane in ascolto sulla porta
//specificata
Server ArduinoServer(80);

void setup()
{
//inizializza lo shield con il mac e l'ip
Ethernet.begin(mac, ip);
//inizializza l'oggetto server
ArduinoServer.begin();

//definisco i pin2 e pin3 come uscite
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);

}

void loop()
{
//IMPORTANTE pulisco la variabile msg
msg = "";

Client pc_client = ArduinoServer.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())
{
//leggo i byte disponibili
//provenienti dal client
Data_RX = pc_client.read();

//ricostruisco la stringa ricevuta concatenando i singoli byte
msg += Data_RX;

//Attendo che tutti i byte siano letti
//quando Data_RX contiene il carattere
//di nuova line capisco tutti i byte sono
//stati letti
if (Data_RX == '\n')
{
//cerco all'interno della stringa il parametro che mi interessa
cmd = msg.indexOf("LEDON");

//Invio la risposta al client
//invio lo status code
pc_client.println("HTTP/1.1 200 OK");
//imposto il data type
pc_client.println("Content-Type: text/html");
pc_client.println();
//invio codice html
pc_client.print("&lt;html&gt;&lt;body&gt;");
pc_client.print("&lt;head&gt;");
//questo codice html permette di eseguireil refresh automatico
//della pagina html
pc_client.print("&lt;META HTTP-EQUIV='refresh' CONTENT='5; /'&gt;");
pc_client.print("&lt;/head&gt;");

//Piloto l'uscita e invio lo stato al browser
if (cmd &gt; 0)
{
digitalWrite(2, HIGH);
pc_client.print("&lt;p&gt;PIN2 Attivo&lt;/p&gt;");
}
else
{
digitalWrite(2, LOW);
pc_client.print("&lt;p&gt;PIN2 NON Attivo&lt;/p&gt;");
}

pc_client.print("&lt;/body&gt;&lt;/html&gt;");

//aspetto 1 ms affinche la risposta giunga al browser del client
delay(1);
//esco dal ciclo while una volta completato l'invio della risposta
break;
}
}
}
//chiudo la connessione
pc_client.stop();
}
}</pre>
<p>&nbsp;</p>
<p>Utilizzando questo metodo possiamo attivare le uscite dell&#8217;Arduino ma anche inviare altri comandi che ad esempio generano un segnale pwm piuttosto che inviare dati tramite la porta UART ad altri dispositivi; le possibilità sono tante e permettono un controllo remoto completo ed efficiente.</p>
<p>The post <a href="https://logicaprogrammabile.it/ethernet-shield-utilizzare-browser-controllo-remoto-arduino/">Ethernet shield usare un browser per pilotare Arduino</a> appeared first on <a href="https://logicaprogrammabile.it">Esperimenti con logiche programmabili</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://logicaprogrammabile.it/ethernet-shield-utilizzare-browser-controllo-remoto-arduino/feed/</wfw:commentRss>
			<slash:comments>24</slash:comments>
		
		
			</item>
	</channel>
</rss>
