Consiglio server web

Ciao, ho realizzato un telecontrollo per ora funzionante su seriale.

L'hardware e basato su Arduino Mega a cui ho connesso un display lcd per visualizzare tutti gli stati delle uscite digitali e degli ingressi analogici.

La gestione di Arduino da seriale avviene tramite un applicativo grafico realizzato in VB.

Vorrei ora rendere il tutto controllabile da web.... tramite una o due pagine visitabili da intranet.

Che strada mi consigliate di intraprendere? per evitare di imbarcarmi in percorsi ciechi?

P.S. Ho a disposizione l'ethernet shield con SD.

Devo fare una cosa circa simile ma la shield mi è arrivata oggi e non so ancora da dove cominciare…
comunque su SD io voglio caricare tutto il codice HTML/JavaScript e immagini poi lascio fare il resto ad arduino…

Neanche farlo apposta…
guarda qui :slight_smile:

Prova questo http://www.panu.it/jsounduino/20111125_jsonduino.zip presto aggiungerò anche la scrittura dei dati su arduino.

Visto... Ci sarebbe niente di più semplice, tipo acenndo e spengo un led e visualizzo un ingresso analogico.

Tanto per capire come funziona la cosa.

Appena provato :slight_smile:
ti avevo detto io di guardare nel sito di elettronica in…

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //physical mac address
byte ip[] = { 192, 168, 0, 77 };	             // ip in lan

Server server(80);                                   //server port        
int ledPin = 2;  // LED pin
char link[]="http://www.elettronicain.it/"; //link data
String readString = String(30); //stringa 
boolean LEDON = false; //LED status flag

void setup(){
//start Ethernet
  Ethernet.begin(mac, ip);
//Set pin to output
  pinMode(ledPin, OUTPUT);  
//enable serial datada print  
  Serial.begin(9600);
}
void loop(){
// Crea la connessione con il client
Client client = server.available();
  if (client) {
    while (client.connected()) {
   if (client.available()) {
    char c = client.read();
    //legge la richiesta dal client
    if (readString.length() < 30) 
      {
        //salva i caratteri letti in una stringa 
        readString +=c;
      }  
        //riporta la stringa su serial monitor
        Serial.print(c);
        
        //verifica che la richiesta sia terminata
        if (c == '\n') {
          
        //verifica se sulla richiesta è presente l'attivazione del LED

  if(readString.startsWith("L=LED_ON", 6))
           {
             //led acceso
             digitalWrite(ledPin, HIGH);    // set the LED on
             LEDON = true;
           }else{
             //led spento
             digitalWrite(ledPin, LOW);    // set the LED OFF
             LEDON = false;             
           }
           
          // risposta al client
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          //set background color
          client.print("<body style=background-color:withe>");
          //send first heading
          client.println("<font color='red'><h1>Arduino EthernetShield TEST</font></h1>");
          client.println("<hr />");  //separatore a linea
          //visualizza valore canale analogico 4
          client.println("<font color='blue' size='5'>Analogico CH0= ");        
          
          client.print(analogRead(4));     //visualizza il valore della variabile
          client.println("<form><input type=submit value=CHECK ></form>");           
          client.println("<hr />");
          //visualizza link
          client.println("<font color='blue' size='5'>Link: ");
          client.print("<a href=");
          client.print(link);
          client.println(">ElettronicaIN!</a>");
          client.println("
");
          client.println("<hr />");
          //controllo led via checkbox
          client.println("<h1>Controllo LED</h1>");
          client.println("<form method=get name=LED><input type=checkbox name=L value=LED_ON>LED
<input type=submit value=submit></form>");      
          client.println("<hr />");        
          
          // Gestione LED con pulsanti
          client.println("<form><input type=submit name=L value=LED_ON> </form>");                       
          client.println("<hr />");
          
          //client.println("<form><input name=L value=0>Numero da inviare<input type=submit value=INVIA></form>");    
        
          client.println("<form><input type=submit name=L value=LED_OFF ></form>");                       
          client.println("<hr />");        
            
          //visualizza stato del LED
          client.print("<font size='5'>Stato LED: ");
          if (LEDON)
              client.println("<font color='green' size='5'>ON"); 
          else
              client.println("<font color='red' size='5'>OFF");     

          client.println("</body></html>");
          //cancella la stringa per una nuova lettura
          readString="";
          //ferma il client
          client.stop();
            }
          }
        }
      }
 }

Se implementassi una console dei comandi da web verso arduino ad esempio al progetto di bigjohnson, creare un vero e proprio terminale, cosa ci si potrebbe fare? Potrebbe servire a qualcosa? sparate qualche opzione, idea

ciao

Si potrebbe servire... tipo controllo luci piccole automazioni.. boh altro non saprei....

Recupero il topic per non aprirne un altro e perchè sto incontrando alcuni problemi.... Allora... Riesco a comunicare con il Pc tramite il cavo incrociato senza problemi, carico una paginetta nel codice di arduino e non cè problema.. la vedo... uso la SD per memorizzare dei dati o altro e nonn cèè problema.. se provo ad aprire il file HTML contenuto nella SD per visualizzarlo nel brosware non va nulla... ho provato questo codice :http://www.webweavertech.com/ovidiu/weblog/archives/000477.html

e mi dice could not find file INDEX.HTML

ho controllato più volte il file, il suo nome l'estensione etc e non trovo errori (nemmeno all'interno del codice inn esso contenuto) dove posso cercare il problema ?

Bjonson ho provato il tuo codice ma non lo compila...

Mi è venuto un sospetto:

Non è che la libreria tratta solo in nomi dei file in formato DOS 8+3? Tipo:

index.htm e non index.html per intenderci.

La libreria SD tratta SOLO nomi in formato MSDOS 8+3: http://www.arduino.cc/en/Reference/SD

It only supports one open file at a time and only uses short 8.3 file names.

leo72: La libreria SD tratta SOLO nomi in formato MSDOS 8+3: http://www.arduino.cc/en/Reference/SD

It only supports one open file at a time and only uses short 8.3 file names.

Ecco, apppunto...

Come già avevo detto ho provato a modificare le estensioni senza risultati =( ora controllo che il problema non sia del programma che mi salvail file modificando l'estensione.. se fossi in linux non avrei questo problema -_-"

Funsia :):):):) era la memory.... l'ho cambiata ed ora va' :)

Cosa era nel dettaglio? Il tipo di SD, o perchè era troppo vecchia (o nuova)?

BaBBuino: Cosa era nel dettaglio? Il tipo di SD, o perchè era troppo vecchia (o nuova)?

Non so nemmeno dove posso averla presa o dove posso averla trovata ... Non ha nome so solo che è da un Gb e a quanto pare non tutti i pc la leggono allo stesso modo... trovo differenze tra il nettop ed il fisso perfino sui nomi dei file memorizzati... evidentemente è andata.. ora ho montato una toshiba da 2GB e funziona bene...