Go Down

Topic: Problemi trasmissione Ethernet schield e web server (Read 2 times) previous topic - next topic

pablos

Sullo sketch lascia quello che c'era prima, sono le impostazioni della scheda di rete del tuo pc da cambiare , come ti ho scritto prima

no comment

icarus93

Allora, ho fatto come hai detto ed ora funziona.
Il problema che ho ora è sulla SD, poichè non riesco a visualizzare un file html dalla scheda
è possibile prendere i dati dai sensori, salvare i parametri in un file txt e visualizzarli sul sito presente sulla sd? c'è una via più veloce? Grazie per l'aiuto   
mi sto basando su questo sketch che ho trovato
Code: [Select]
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,1, 127 };
File htmlFile;
EthernetServer server(80);



void setup ()
{
 
  Ethernet.begin(mac, ip);
  server.begin();
  if (!SD.begin(4)) { return; }
 
  Serial.begin(9600);
 
}



void loop ()
{
 
  EthernetClient client = server.available();

    if (client) {
     
      boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (c == '\n' && currentLineIsBlank) {
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();

          htmlFile = SD.open("index.htm");
          if (htmlFile) {
            while (htmlFile.available()) {
                client.write(htmlFile.read());
            }
            // close the file:
            htmlFile.close();
          }
          break;
        }
        if (c == '\n') {
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          currentLineIsBlank = false;
        }
      }
    }
    delay(1);
    client.stop();
  }
}

ratto93

Pure a me funziona lo sketch, prova con un cavo incrociato collegato direttamente al PC senza passare per lo switch..
Se corri veloce come un fulmine, ti schianterai come un tuono.

icarus93

Ora mi funziona.... Vorrei prendere tutti i dati relativi ai sensori ( le temp che rilevano etc) e salvarli in un txt, e poi con un sito html messo sulla SD visualizzarli.. inoltre vorrei poter accendere ogni led utilizzando un pulsante html, è possibile farlo? ho guardato i file esempio datalogger e tutti gli altri ma non sono riuscito
Grazie per la disponibilità

ratto93

Questo non usa la SD però forse può aiutarti...
Code: [Select]
#include <SPI.h>
#include <Ethernet.h>
//Funzioni Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 0, 2 };          
Server server(80);                                 
int ledPin = 2; 
String readString = String(30);
boolean LEDON = false;

//Funzioni per la misura della temperatura
void termometro();
#define LM35_TEMP 3
#define LM35_REF 2
double temperatura;



void setup(){
  Ethernet.begin(mac, ip);
  pinMode(ledPin, OUTPUT); 
}


void loop(){
Client client = server.available();
  if (client) {
    while (client.connected()) {
   if (client.available()) {
    char c = client.read();
    if (readString.length() < 30)
      {
        readString +=c;
      } 
          if (c == '\n') {         
  if(readString.startsWith("L=LED_ON", 6))
           {
             digitalWrite(ledPin, HIGH);
             LEDON = true;
           }else{
             digitalWrite(ledPin, LOW);
             LEDON = false;             
           }           
          client.println("HTTP/1.1 200 OK");
          client.println("META HTTP-EQUIV=REFRESH CONTENT =5");
          client.println();
          client.print("<body style=background-color:#F5F5F5>");
          client.println("<font color='red'><h1>Piccolo esempio di web server in rete locale</font></h1>");
          client.println("<hr />");
          client.println("<font color='blue' size='5'>Temperatura attuale del laboratorio: ");       
          termometro();
          client.print(temperatura);
          client.println("<form><input type=submit value=AGGIORNA ></form>");
          client.println("<hr />");
          client.println("<font color='blue' size='5'>Laboratorio di Sistemi Informatici ed Elettronica/Telecomunicazioni");
          client.println("<BR>");           
          client.println("<hr />");
          client.println("<form><input type=submit name=L value=LED_ON> </form>");                       
          client.println("<hr />");
          client.println("<form><input type=submit name=L value=LED_OFF ></form>");                       
          client.println("<hr />");   
          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.print("<hr /><font color='black' size='4'><p>Questa pagina e' stata creata in HTML usando i Form, risiede in web server minimale basato sull' integrato W5100,");
          client.print("e' gestita da una (MCU micro controller unit) sostanzilmente micro computer programmato in C, ATmega 328P-PU (Pico-Power-Unit)..a risparmio energetico");
          client.println("</body></html>");
          readString="";
          client.stop();
            }
          }
       }
    }
}     



void termometro(){
  int cont,ref,sensoreTemperatura;
  int ref_medio = 0;
  int sensoreTemperatura_medio = 0;
  float prev_temperatura = 0;
 
  for( cont = 0; cont < 10; cont++)
  {
    sensoreTemperatura = analogRead(LM35_TEMP);
    sensoreTemperatura_medio += sensoreTemperatura;
    ref = analogRead(LM35_REF);
    ref_medio += ref;
    delay(50);
  }
  if(cont == 10)
  {
    cont = 0;
    sensoreTemperatura_medio = sensoreTemperatura_medio / 10;
    ref_medio = ref_medio / 10;
    temperatura = (sensoreTemperatura_medio - ref_medio) * 100/2.56;
    temperatura = temperatura * 5/1024;
    prev_temperatura = temperatura;
    sensoreTemperatura_medio = 0;
    ref_medio = 0;
  }
  else{
    temperatura = prev_temperatura;
  }
}





Se corri veloce come un fulmine, ti schianterai come un tuono.

Go Up