<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="it">
	<id>https://wiki.golem.linux.it/index.php?action=history&amp;feed=atom&amp;title=Arduino_ed_Internet</id>
	<title>Arduino ed Internet - Cronologia</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.golem.linux.it/index.php?action=history&amp;feed=atom&amp;title=Arduino_ed_Internet"/>
	<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;action=history"/>
	<updated>2026-04-29T18:51:00Z</updated>
	<subtitle>Cronologia della pagina su questo sito</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=9918&amp;oldid=prev</id>
		<title>Martinligabue: /* Il codice Arduino */ sottocategoria</title>
		<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=9918&amp;oldid=prev"/>
		<updated>2026-04-05T22:39:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Il codice Arduino: &lt;/span&gt; sottocategoria&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versione delle 22:39, 5 apr 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l284&quot; &gt;Riga 284:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 284:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Category&lt;/del&gt;:&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Howto&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Categoria&lt;/ins&gt;:&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Hardware&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Martinligabue</name></author>
	</entry>
	<entry>
		<id>https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=8025&amp;oldid=prev</id>
		<title>Giomba: Risistemata, riscritta la parte sulle reti in maniera semplificata, eliminati imprecisioni e errori, tuttavia rimane un &quot;corso molto molto accelerato sulle reti&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=8025&amp;oldid=prev"/>
		<updated>2018-06-01T20:17:12Z</updated>

		<summary type="html">&lt;p&gt;Risistemata, riscritta la parte sulle reti in maniera semplificata, eliminati imprecisioni e errori, tuttavia rimane un &amp;quot;corso molto molto accelerato sulle reti&amp;quot;&lt;/p&gt;
&lt;a href=&quot;https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;amp;diff=8025&amp;amp;oldid=6882&quot;&gt;Mostra modifiche&lt;/a&gt;</summary>
		<author><name>Giomba</name></author>
	</entry>
	<entry>
		<id>https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=6882&amp;oldid=prev</id>
		<title>Giomba il 15:16, 3 apr 2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=6882&amp;oldid=prev"/>
		<updated>2016-04-03T15:16:02Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versione delle 15:16, 3 apr 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l270&quot; &gt;Riga 270:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 270:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;alla scheda.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;alla scheda.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[Category&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;:&lt;/del&gt;:Howto]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[&lt;/ins&gt;[Category:Howto&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]&lt;/ins&gt;]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Giomba</name></author>
	</entry>
	<entry>
		<id>https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=6881&amp;oldid=prev</id>
		<title>Giomba il 15:15, 3 apr 2016</title>
		<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=6881&amp;oldid=prev"/>
		<updated>2016-04-03T15:15:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versione delle 15:15, 3 apr 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l270&quot; &gt;Riga 270:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 270:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;alla scheda.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;alla scheda.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;[&lt;/del&gt;[Category::Howto&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;]&lt;/del&gt;]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[Category::Howto]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Giomba</name></author>
	</entry>
	<entry>
		<id>https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=6880&amp;oldid=prev</id>
		<title>Giomba: /* Pagina categorizzata */</title>
		<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=6880&amp;oldid=prev"/>
		<updated>2016-04-03T15:14:49Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Pagina categorizzata&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;it&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versione meno recente&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versione delle 15:14, 3 apr 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l269&quot; &gt;Riga 269:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Riga 269:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Prossimamente vedremo come interagire via Ethernet con i componenti collegati&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Prossimamente vedremo come interagire via Ethernet con i componenti collegati&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;alla scheda.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;alla scheda.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category::Howto]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Giomba</name></author>
	</entry>
	<entry>
		<id>https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=6819&amp;oldid=prev</id>
		<title>Giulio: creata pagina, ancora da revisionare</title>
		<link rel="alternate" type="text/html" href="https://wiki.golem.linux.it/index.php?title=Arduino_ed_Internet&amp;diff=6819&amp;oldid=prev"/>
		<updated>2015-12-11T17:35:10Z</updated>

		<summary type="html">&lt;p&gt;creata pagina, ancora da revisionare&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nuova pagina&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Ci sono applicazioni per cui è comodo avere Arduino collegato ad&lt;br /&gt;
internet, ad esempio per un sistema di '''domotica''' per gestire le luci&lt;br /&gt;
di casa online, oppure per '''monitorare''' dei sensori ambientali dal cellulare.&lt;br /&gt;
&lt;br /&gt;
Per questi piccoli progetti è adatta la Ethernet Shield, una scheda&lt;br /&gt;
già pronta per essere &amp;quot;incastrata&amp;quot; su un Arduino e che mette a disposizione&lt;br /&gt;
una porta Ethernet coordinata da un chip dedicato, ed uno slot per&lt;br /&gt;
microSD, utile per esempio in progetti di monitoraggio per salvare&lt;br /&gt;
le informazioni catturate.&lt;br /&gt;
Esiste anche una ''wireless shield'', molto simile, che però usa la rete&lt;br /&gt;
senza fili.&lt;br /&gt;
&lt;br /&gt;
Ma '''attenzione''', questa scheda&lt;br /&gt;
dipende molto dalla potenza del microprocessore di Arduino, poiché è lui&lt;br /&gt;
che deve occuparsi, come vedremo, di tutti i ''protocolli di rete''.&lt;br /&gt;
Scordatevi quindi di poter tirare su in questo modo un server web&lt;br /&gt;
con tante pagine, database, eccetera.&lt;br /&gt;
In questo caso bisognerà optare per schede come [Raspberry Pi http://www.glgprograms.it/?p=tricks/raspberrypi-1] o BeagleBone,&lt;br /&gt;
anziché Arduino.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Concetti di base=&lt;br /&gt;
&lt;br /&gt;
==TCP/IP e protocolli==&lt;br /&gt;
Tutti i dispositivi collegati in rete devono rispettare un certo&lt;br /&gt;
protocollo, ovvero seguire regole per poter identificarsi fra loro&lt;br /&gt;
senza creare conflitti.&lt;br /&gt;
    &lt;br /&gt;
Ogni dispositivo è in particolare identificato da un nome sulla&lt;br /&gt;
rete, detto indirizzo IP. Ad esempio, nella mia rete di casa&lt;br /&gt;
il computer che uso ha come indirizzo &amp;lt;code&amp;gt;192.168.142&amp;lt;/code&amp;gt;, e il cellulare&lt;br /&gt;
&amp;lt;code&amp;gt;192.168.1.119&amp;lt;/code&amp;gt;.&lt;br /&gt;
    &lt;br /&gt;
Tutti gli indirizzi IP sono composti da una quartina di numeri&lt;br /&gt;
compresi fra 0 e 255, separati da un punto. Solitamente, nelle&lt;br /&gt;
reti di casa, la prima coppia è fissa a 192 e 168, mentre il terzo&lt;br /&gt;
è solitamente 1.&lt;br /&gt;
Quello a cui siamo interessati è quindi l'ultimo numero, che varia&lt;br /&gt;
da dispositivo a dispositivo.&lt;br /&gt;
    &lt;br /&gt;
Fa eccezione &amp;lt;code&amp;gt;192.168.1.255&amp;lt;/code&amp;gt;, che è un indirizzo speciale detto&lt;br /&gt;
broadcast che equivale a parlare contemporaneamente con tutti i&lt;br /&gt;
dispositivi connessi alla rete di casa.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Chi è che dà gli indirizzi nella rete casalinga?&lt;br /&gt;
Teoricamente ogni dispositivo può autoassegnarsi un indirizzo,&lt;br /&gt;
ma questo non viene fatto su oggetti &amp;quot;quotidiani&amp;quot; (cellulari,&lt;br /&gt;
computer, etc..) perché verrebbero a crearsi altrimenti conflitti&lt;br /&gt;
quando due o più si assegnano lo stesso indirizzo.&lt;br /&gt;
È quindi il router che ha l'autorità di dare ad ognuno il suo&lt;br /&gt;
indirizzo evitando i conflitti; si dice che il router &amp;quot;è il DHCP&lt;br /&gt;
(Dynamic Host Configuration Protocol)&amp;quot;.&lt;br /&gt;
  &lt;br /&gt;
Il router sbriga tutta questa burocrazia, e cerca anche di associare&lt;br /&gt;
ad uno stesso dispositivo lo stesso IP. Riesce a far ciò perché&lt;br /&gt;
c'è una seconda informazione necessaria per &amp;quot;presentarsi sulla rete&amp;quot;,&lt;br /&gt;
il MAC address.&lt;br /&gt;
Questo è un secondo codice, univoco, che viene assegnato in fabbrica&lt;br /&gt;
ad ogni dispositivo.&lt;br /&gt;
&lt;br /&gt;
Può sorgere la domanda &amp;quot;perché allora non si usa il MAC address&lt;br /&gt;
per presentarsi in rete?&amp;quot;. Senza perdersi in cose complicate,&lt;br /&gt;
rispondo dicendo che sono due indirizzi che hanno un significato&lt;br /&gt;
completamente diverso: l'indirizzo IP può variare a seconda&lt;br /&gt;
delle reti, e inserisce il dispositivo in un &amp;quot;gruppo&amp;quot; di &lt;br /&gt;
altri dispositivi connessi insieme&lt;br /&gt;
(ricordi la parte fissa 192.168? Dice che tutti quelli che hanno&lt;br /&gt;
questo indirizzo appartengono alla stessa rete casalinga).&lt;br /&gt;
Il MAC è invece statico, tipico del dispositivo.&lt;br /&gt;
  &lt;br /&gt;
Per fare un paragone che renda chiaro il tutto,&lt;br /&gt;
l'indirizzo IP è come fosse il soprannome di una persona,&lt;br /&gt;
mentre il MAC address è il codice fiscale del dispositivo, che&lt;br /&gt;
permette di &amp;quot;beccarlo&amp;quot; in qualsiasi gruppo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bene, detto questo, sappiamo che anche il nostro Arduino on the internet&lt;br /&gt;
dovrà avere una coppia di indirizzi IP e un MAC.&lt;br /&gt;
Il MAC è solitamente scritto su un adesivo sotto l'ethernet shield.&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
Per quanto riguarda l'IP, bisogna aggiungere qualcos'altro:&lt;br /&gt;
per i dispositivi che &amp;lt;b&amp;gt;si collegano&amp;lt;/b&amp;gt; ad internet non ci interessa&lt;br /&gt;
che abbiano un IP particolare, e quindi lo possono anche chiedere&lt;br /&gt;
al router col meccanismo del DHCP: si dice che hanno un IP&lt;br /&gt;
dinamico.&lt;br /&gt;
&lt;br /&gt;
I dispositivi a cui invece &amp;lt;b&amp;gt;ci dobbiamo collegare&amp;lt;/b&amp;gt; dovrebbero&lt;br /&gt;
avere sempre lo stesso IP, noto e indipendente dalle volontà&lt;br /&gt;
del router: si dice che hanno un IP statico.&lt;br /&gt;
&lt;br /&gt;
Anche il nostro Arduino dovrà avere un IP statico, che gli assegneremo&lt;br /&gt;
nel programma. Prima però dovremo assicurarci di due cose:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt;quale &amp;quot;serie&amp;quot; di IP è in uso nella propria rete casalinga;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;gt; se l'IP scelto è disponibile, ovvero se il router non l'ha già&lt;br /&gt;
    assegnato a qualcuno;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per il primo punto basta controllare a quale IP risponde il router:&lt;br /&gt;
solitamente infatti ha ip 192.168.1.1 oppure 192.168.0.1.&lt;br /&gt;
Basta quindi aprire un browser e digitare il primo e poi&lt;br /&gt;
il secondo indirizzo.&lt;br /&gt;
A noi interessa sapere se il terzo numero è 1 oppure 0.&lt;br /&gt;
&lt;br /&gt;
Noto questo, basta tirare un numero a caso da aggiungere in coda&lt;br /&gt;
a &amp;lt;code&amp;gt;192.168.1.&amp;lt;/code&amp;gt; per avere un IP, e verificare tramite un terminale&lt;br /&gt;
(o il prompt di DOS su windows) se è disponibile:&lt;br /&gt;
digita ping &amp;lt;code&amp;gt;192.168.1.245&amp;lt;/code&amp;gt; e se nessuno risponde&lt;br /&gt;
il comando dovrebbe dare come output un errore come&lt;br /&gt;
&amp;lt;code&amp;gt;Destination Unreachable&amp;lt;/code&amp;gt;.&lt;br /&gt;
Appuntati quindi questo IP.&lt;br /&gt;
&lt;br /&gt;
===Servizi e Servitori===&lt;br /&gt;
Quando ti colleghi ad un sito internet, chi ti dà la pagina non&lt;br /&gt;
è una magica entità immateriale, bensì uno (o più) computer.&lt;br /&gt;
Il questo caso il computer con cui ti colleghi al sito è un&lt;br /&gt;
cliente (client), mentre il computer che risponde inviando&lt;br /&gt;
la pagina è un server, ovvero offre un servizio.&lt;br /&gt;
&lt;br /&gt;
Di servizi offribili sulla rete ve ne sono molti: oltre alla&lt;br /&gt;
classica pagina web (gentilmente offerta dai server web), si possono&lt;br /&gt;
avere servizi di trasferimento files (ftp oppure sftp), servizi di&lt;br /&gt;
e-mail (POP3, IMAP, SMTP), e tanti altri. Uno stesso computer&lt;br /&gt;
può offrire più servizi contemporaneamente, e per poter discriminare&lt;br /&gt;
a chi mandare cosa, il protocollo TCP/IP prevede una struttura a porte.&lt;br /&gt;
&lt;br /&gt;
Quando con un browser si richiede, ad esempio, una pagina web ad un computer, si&lt;br /&gt;
&amp;quot;bussa&amp;quot; alla porta numero 80 del suo indirizzo IP, e tramite quella&lt;br /&gt;
porta fluisce la compunicazione.&lt;br /&gt;
Ogni servizio ha una porta dedicata, in particolare il servizio&lt;br /&gt;
di trasferimento pagine web (HTTP) ha il numero 80.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo stesso dovrà succedere con il nostro Arduino: lo metteremo in grado&lt;br /&gt;
di poter &amp;quot;rispondere&amp;quot; alle richieste fatte sulla porta 80.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HTTP &amp;amp;amp; HTML===&lt;br /&gt;
Ed eccoci quasi arrivati al termine.&lt;br /&gt;
Dopo che il browser ha inviato la richiesta di connessione&lt;br /&gt;
al server, incomincia uno scambio di informazioni&lt;br /&gt;
fra i due, seguendo un protocollo molto rigoroso: l'HTTP&lt;br /&gt;
(HyperText Transfer Protocol).&lt;br /&gt;
    &lt;br /&gt;
Il browser invia la richiesta della pagina web, seguita da una&lt;br /&gt;
linea bianca per indicare il termine,&lt;br /&gt;
e il server gli deve rispondere con un codice di approvazione&lt;br /&gt;
o di errore (a seconda se la pagina è disponibile o no),&lt;br /&gt;
specificare il formato della pagina (HTML nel nostro caso)&lt;br /&gt;
e accodare finalmente il contenuto.&lt;br /&gt;
&lt;br /&gt;
Vedremo queste cose direttamente nel codice Arduino,&lt;br /&gt;
in particolare lo scambio di dati: attivando la trasmissione&lt;br /&gt;
USB si vede in diretta tutta la comunicazione HTTP fra lui&lt;br /&gt;
e il browser.&lt;br /&gt;
&lt;br /&gt;
==Il codice Arduino==&lt;br /&gt;
Il codice altro non è che l'esempio EthernetServer di Arduino, leggermente&lt;br /&gt;
modificato e commentato in italiano. In linea di massima questo&lt;br /&gt;
programma resta in attesa di una richiesta HTTP, dopodiché legge il&lt;br /&gt;
valore analogico del pin Analog0 e lo trasmette al client connesso.&lt;br /&gt;
Per avere letture sensate bisognerà collegare un sensore analogico,&lt;br /&gt;
che in questo esempio è stato simulato da un semplice potenziometro.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;amp;lt;SPI.h&amp;amp;gt;&lt;br /&gt;
#include &amp;amp;lt;Ethernet.h&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
// Pin del sensore da monitorare via Ethernet&lt;br /&gt;
const byte PIN_SENSORE = A0;&lt;br /&gt;
&lt;br /&gt;
// Qui va il MAC address della tua shield&lt;br /&gt;
byte mac[] = {&lt;br /&gt;
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// E qui l'indirizzo IP che dovrà essere associato&lt;br /&gt;
IPAddress ip(192, 168, 1, 177);&lt;br /&gt;
&lt;br /&gt;
// Inizializza il &amp;quot;server&amp;quot; EthernetServer con la porta 80 (HTTP)&lt;br /&gt;
EthernetServer server(80);&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  // Apre la comunicazione seriale: è utile per monitorare via USB&lt;br /&gt;
  // cosa sta succedendo&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  // Avvia la connessione ethernet ed il server&lt;br /&gt;
  Ethernet.begin(mac, ip);&lt;br /&gt;
  server.begin();&lt;br /&gt;
  &lt;br /&gt;
  // Messaggi di controllo inviati via USB&lt;br /&gt;
  Serial.print(&amp;quot;Il server Arduino risponde all'indirizzo &amp;quot;);&lt;br /&gt;
  Serial.println(Ethernet.localIP());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // &amp;quot;ascolta&amp;quot; sulla porta 80 in attesa di un client&lt;br /&gt;
  EthernetClient client = server.available();&lt;br /&gt;
  &lt;br /&gt;
  // se un client si è connesso...&lt;br /&gt;
  if (client) {&lt;br /&gt;
    Serial.println(&amp;quot;Un nuovo client!&amp;quot;);&lt;br /&gt;
    &lt;br /&gt;
    // una richiesta HTTP termina con una linea bianca (un doppio a-capo)&lt;br /&gt;
    // serve quindi una variabile per ricordare se si è già ricevuto un a-capo&lt;br /&gt;
    boolean lineaCorrenteBianca = true;&lt;br /&gt;
    &lt;br /&gt;
    // Finché il client è connesso avviene lo scambio dei dati&lt;br /&gt;
    while (client.connected()) {&lt;br /&gt;
      if (client.available()) {&lt;br /&gt;
        // Leggo un byte trasmesso&lt;br /&gt;
        char c = client.read();&lt;br /&gt;
        &lt;br /&gt;
        Serial.write(c);&lt;br /&gt;
        &lt;br /&gt;
        // se avevo già ricevuto un a-capo (lineaCorrenteBianca == true)&lt;br /&gt;
        // e ricevo un nuovo a-capo ('\n') è finita la richiesta del client&lt;br /&gt;
        // e posso inviare la pagina web&lt;br /&gt;
        if (c == '\n' &amp;amp;amp;&amp;amp;amp; lineaCorrenteBianca) {&lt;br /&gt;
          // invio la risposta HTTP standard&lt;br /&gt;
          client.println(&amp;quot;HTTP/1.1 200 OK&amp;quot;);&lt;br /&gt;
          client.println(&amp;quot;Content-Type: text/html&amp;quot;);&lt;br /&gt;
          // Chiudo la connessione al termine della tramsissione&lt;br /&gt;
          client.println(&amp;quot;Connection: close&amp;quot;);&lt;br /&gt;
          // Aggiorna la pagina ogni 5 secondi&lt;br /&gt;
          client.println(&amp;quot;Refresh: 5&amp;quot;);&lt;br /&gt;
          client.println();&lt;br /&gt;
          &lt;br /&gt;
          /* ****** Qui comincia la pagina HTML vera e propria ****** */&lt;br /&gt;
          client.println(&amp;quot;&amp;amp;lt;!DOCTYPE HTML&amp;amp;gt;&amp;quot;);&lt;br /&gt;
          client.println(&amp;quot;&amp;amp;lt;html&amp;amp;gt;&amp;quot;);&lt;br /&gt;
          &lt;br /&gt;
          int lettura_sensore = analogRead(PIN_SENSORE);&lt;br /&gt;
          client.print(&amp;quot;Il valore della lettura del pin &amp;quot;);&lt;br /&gt;
          client.print(PIN_SENSORE);&lt;br /&gt;
          client.print(&amp;quot; è &amp;quot;);&lt;br /&gt;
          client.print(lettura_sensore);&lt;br /&gt;
          &lt;br /&gt;
          client.println(&amp;quot;&amp;amp;lt;/html&amp;amp;gt;&amp;quot;);&lt;br /&gt;
          /* ******  Termine della pagina HTML ****** */&lt;br /&gt;
&lt;br /&gt;
          // break esce dal ciclo while, perché lo scambio dati è terminato&lt;br /&gt;
          break;&lt;br /&gt;
        }&lt;br /&gt;
        // Se ricevo un a-capo devo ricordare che ho iniziato una nuova riga&lt;br /&gt;
        if (c == '\n') {&lt;br /&gt;
          lineaCorrenteBianca = true;&lt;br /&gt;
        }&lt;br /&gt;
        // Se invece ricevo tutti gli altri caratteri, fatta eccezione per&lt;br /&gt;
        // '\r', significa che la richiesta del client non è ancora terminata&lt;br /&gt;
        else if (c != '\r') {&lt;br /&gt;
          lineaCorrenteBianca = false;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // piccola pausa per la trasmissione, dopodiché si chiude la connessione&lt;br /&gt;
    delay(1);&lt;br /&gt;
    client.stop();&lt;br /&gt;
    Serial.println(&amp;quot;client disconnesso!&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prossimamente vedremo come interagire via Ethernet con i componenti collegati&lt;br /&gt;
alla scheda.&lt;/div&gt;</summary>
		<author><name>Giulio</name></author>
	</entry>
</feed>