problemi arduino web

Salve a tutti, mi chiamo Jacopo ho realizzato un progettino che tramite un input da seriale accende e spegne dei led (e fin quì tutto ok..)
Adesso vorrei poter accendere questi led tramite un web server con magari qualche bottone.
Avete qualche consiglio da darmi? Mi piacerebbe molto creare anche un'interfaccia grafica e un login con un controllo in php.

Per adesso questo è il mio codice:

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
char incomingByte;
int pinTerm = 0;
void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);
  pinMode(12,OUTPUT); 
  pinMode(11,OUTPUT); 
  Serial.begin(9600);  
  Serial.println("1. Accendo luce 1"); 
  Serial.println("2. Spengo luce 1");
  Serial.println("3. Accendo luce 2");
  Serial.println("4. Accendo luce 2");
  Serial.println("5. Accendo tutte le luci");
  Serial.println("6. Spengo tutte le luce");
  Serial.println("7. Temperatura");
  Serial.println("8. Accendo ventilatore");
  Serial.println("9. Spengo ventilatore");
}

void loop() {
    
     
     
  if (Serial.available() > 0) {
                // read the incoming byte:
                incomingByte = Serial.read();
                
                // say what you got:
                Serial.print("Arduino ha ricevuto: ");
                Serial.println(incomingByte-48, DEC);
                switch(incomingByte){
                 case '1':  //accende la luce 1 sul pin 13
                     Serial.println("Accendo luce 1");
                     digitalWrite(13, HIGH);
                 break;
                 case '2': //spegne la luce 1 sul pin 13
                    Serial.println("Spengo luce 1");
                     digitalWrite(13,LOW);
                 break;
                 case '3': //accende la luce 2 sul pin 12
                      Serial.println("Accendo luce 2");
                     digitalWrite(12,HIGH);
                     break;
                 case '4': //spegne la luce 2
                    Serial.println("Spengo luce 2");
                     digitalWrite(12,LOW);
                     break;
                 case '5': //accende tutto
                     Serial.println("Accendo tutto");
                     digitalWrite(13,HIGH);
                     digitalWrite(12,HIGH);
                   break;
                 case '6': //spegne tutto
                    Serial.println("Spengo tutto");
                     digitalWrite(13,LOW);
                     digitalWrite(12,LOW);
                     break;
                 case '8':
                  Serial.println("Accendo il 'ventilatore'");
                  digitalWrite(11,HIGH);
                  break;
                  case '9':
                  Serial.println("Spegni ventilatore");
                  digitalWrite(11,LOW);
                  break;
                  
                 case '7':
                 int reading = analogRead(pinTerm); 
                 float voltage = reading * 5.0;
                  voltage /= 1024.0; 
                   Serial.print(voltage); Serial.println(" volts");
                   float temp = (voltage - 0.5)*100;
                   Serial.print(temp+50);
                     Serial.println("gradi");
                     break;
               
                }
                
  }
 
}

PS: Ho acquistato lo shield ethernet di Arduino e vorrei poter usare un login con questi files scritti da me, però non so dove metterli..

<html>
<head>
<title>Registrazione Cliente</title>
</head>
<body>
<p> Registrazione Cliente  </p>
<form action="verifica.php" method="post">
Utente:  <input type="text" name="Utente" size="" value="">

Password:  <input type="password" name="Password" size="" value="">

Ok:  <input type="submit" value="ok">
Annulla:  <input type="reset" value="annulla">
</form>
</body>
</html>
<?php
session_start();
?>
<html>
<head>
<title>Verifica</title>
</head>
<?php
if($_POST[Utente]=="j"  && $_POST[Password]=="j")
{
$_SESSION[Utente]=$_POST[Utente];
echo "login effetuato";
header('location:sitointerno.php');
}
else
echo"utente o password errate";
?>
</html>
<?php
session_start();

if($_SESSION[Utente]=="j")
{
 echo "ciao benvenuto nel mio sito";	
}
 else
 {
 echo "ciao benvenuto";	
 	
 }
?>

Si potrebbe usare anche javascript per la grafica?
Graze mille per l'aiuto
Jacopo

Benvenuto Jacopo,
Arduino non supporta php.

Quindi, le soluzioni sono 2:
1 - se hai un serverino/pc/openwrt sempre acceso, fai fare a lui il web server con tanto di login / wui / etc; Arduino sarà connesso a questo tramite cavo usb/porta seriale;
2- se vuoi fare tutto lato Arduino, fornito di Ethernet Shield, puoi caricare tutti i file (js, css, html, .*) in SD e gestirli "on demand" (cerca tinywebserver qui sul forum o su google per maggiori info)

grazie mille per la risposta
c'è un modo per scrivere una web page sfruttando javascript che mi controlli le uscite di arduino?

Ciao Jacopo e benvenuto

pitusso:
Benvenuto Jacopo,
Arduino non supporta php.

Quindi, le soluzioni sono 2:
1 - se hai un serverino/pc/openwrt sempre acceso, fai fare a lui il web server con tanto di login / wui / etc; Arduino sarà connesso a questo tramite cavo usb/porta seriale;
2- se vuoi fare tutto lato Arduino, fornito di Etherne Shield, puoi caricare tutti i file (js, css, html, .*) in SD e gestirli "on demand"

+1
l'ethernet shield è un tema frequente nel forum, per iniziare magari dai un'occhiata qua:Controllare Arduino tramite iPhone - #4 by system - Generale - Arduino Forum
Poi magari mano a mano che ti vengono dei dubbi li posti.
ciao

Ciao

c'è un modo per scrivere una web page sfruttando javascript che mi controlli le uscite di arduino?

il meccanismo con cui Arduino processa richeste web è facendo il parsing di richieste GET.
Chiaramente non fa nulla in automatico, il parsing lo fai tu :grin:

Se inizi spulciando i link di critical, e pure guardando gli esempio disponibili sull'IDE, inizierai a capire meglio come lavorare con la tua Arduino e Ethernet Shield.

Grazie a tutti per le risposte, sto cercando di seguire questo tutorial:

Dopo aver modificato e riadattato un pò il codice che dava qualche problema sono riuscito ad aprire dall'sd il file htm, il problema è che invece che eseguire il codice il mio browser visualizza un output solo numerico....
Non so più che pesci prendere....
Questo è il codice html che tentavo di fare eseguire ad arduino:

<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
</head>

<body>
<p>If you click on me, I will disappear.</p>
</body>

</html>

Le informazioni che ti hanno dato sono tutte ottime.
Mi indichi quali problemi hai incontrato nel codice e come li hai corretti così posso correggere il mio articolo per quanti altri lo vorranno seguire.
Che versione di IDE usi? e Arduino?
L'errore dei numeri sul browser è successo anche a me, nel mio caso era causato dalla mancanza del parametro BYTE come secondo parametro della client.print(), con l'IDE 1.0 la libreria Ethernet è cambiata in client.write() e non ha più bisogno di quel parametro.

Ciao
Mauro

Ciao Mauro, innanzitutto complimenti per il tuo blog, mi piace molto ed è uno dei pochi dove si approfondisce il tema delle pagine lette da SD
Il problema è proprio quello, perchè compilando il tuo sorgente usciva proprio quell'errore lì nella client.print(), purtroppo adesso non ho il sorgente sottomano quindi non posso dirti di più :frowning: .
Quindi dici che basterebbe cambiare la client.print() con client.write senza parametro e dovrebbe caricare la pagina correttamente?
Un qualcosa di questo tipo?

client.print(htmlFile.read()); //to 
client.write(htmlFile.read());

per caricare la prima pagina htm fai client.write(htmlFile.read()); diciamo ok, non lo so mai usato quell'istruzione, ma quando nell'esecuzione dell'htm ci sono queste righe?

<link rel="style" type="text/css" href="mystyle.css"

come fai a spedirgli questi file?
devi usare per forza una libreria oppure ti spulci a mano gli header per ricavare i file richiesti

che lib usi per fare tutto ciò?
se non hai pagine troppo pesanti ti conviene usare lo sketch e un po' di eeprom

ciao