non ho ancora ban capito come comunichi con arduino.
caso 1: la pagina php crea una connessione TCP (con i socket) all'arduino: in questo caso la connessione è a due vie e il php e arduino possono comunicarsi quello che vogliono
caso 2: la pagina html contiene un form che invia la richiesta ad arduino.
arduino riceverà una richiesta simile:
GET /file.php?pippo=1 HTTP/1.1
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko)
Accept: text/html, image/jpeg, image/png, text/*, image/*, */*
Accept-Encoding: x-gzip, x-deflate, gzip, deflate, identity
Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5
Accept-Language: en
a questo punto con arduino devi leggere le parte che ti interessa (/file.php?pippo=1), eseguire i comandi corrispondenti, e rispondere con una pagina HTML che contiene i risultati dei tuoi comandi.
per fare qualche test, puoi collegarti via telnet a qualche sito (tipo google) e provare ad inviare una richiesta get.
per esempio, ci colleghiamo a wikipedia (ehm per errore mi son collegato a wikipedia.it che NON è il sito di wikipedia, ma un sito che poi ti rimbalza al vero sito di wikipedia, che è it.wikipedia.org):
telnet www.wikipedia.it 80
Trying 217.12.160.169...
Connected to www.wikipedia.it.
Escape character is '^]'.
inviamo la richiesta di una pagina (questa sarà simile alla richiesta che l'arduino avrà in input)
GET /wiki/Pagina_principale HTTP/1.1
Connection: Keep-Alive
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko)
Accept: text/html, image/jpeg, image/png, text/*, image/*, */*
Accept-Encoding: x-gzip, x-deflate, gzip, deflate, identity
Accept-Charset: iso-8859-1, utf-8;q=0.5, *;q=0.5
Accept-Language: en
Host: it.wikipedia.org
ed ecco la risposta, quello che l'arduino dovrà scrivere come output (ovviamente modificato)
HTTP/1.1 200 OK
Date: Sat, 12 Feb 2011 14:17:33 GMT
Server: Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/0.9.8g mod_perl/2.0.4 Perl/v5.10.0
Last-Modified: Thu, 08 Apr 2010 17:28:40 GMT
ETag: "340499-43f-483bd02732200"
Accept-Ranges: bytes
Content-Length: 1087
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
<html>
<body bgcolor="#ffffff">
<center>
<a href="http://yepa.com">
<img src="http://yepa.com/yepa/images/yepa.gif"></a>
<h1>Domain suspended</h1>
Service for this domain has been suspended for billing reasons.
Please contact <a href="mailto:billing@yepa.com">billing@yepa.com</a>.
<script type="text/javascript"><!--
google_ad_client = "pub-8279910352339639";
google_ad_slot = "2269210679";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</center>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-1425951-2");
pageTracker._setDomainName("none");
pageTracker._setAllowLinker(true);
pageTracker._trackPageview();
} catch(err) {}</script>
</body>
</html>
edit: si va due volte a capo perchè il protocollo HTTP dice che bisogna fare così 