Creazione di un server web con Arduino uno, senza ricorrere a SD

Buonasera a tutti,
Come progetto per la mia tesina scolastica sto realizzando una piccola “stazione meteo” con arduino uno.
In pratica con un DHT11 al rilevamento di una certa temperatura (esempio 24 gradi) la ventola per il raffreddamento dell’aria scatta tramite relè, e fin cui tutto bene.
Successivamente ho sviluppato una semplice pagina HTML, in cui viene visualizzata la temperatura.
Il mio unico problema è che la pagina html è troppo semplice e sgradevole alla vista, volevo quindi chiedervi se vi era qualche modo di renderla più accattivante magari integrandola con CSS e altre librerie, tutto ciò pero senza ricorrere a sd, quindi sviluppando tutto il sito nello sketch arduino senza ricorrere a sd.
Allego il codice in seguito.
Grazie mille.

#include <SPI.h>

#include <Ethernet.h>

#include <dht11.h>

#include <Wire.h>

#define DHT11PIN 7

int relePin3= 3;

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress ip(192,168,1,95);

EthernetServer server(80);

dht11 DHT11;



void setup()
{
 
  Serial.begin(9600);
  
  while (!Serial) {
    ; 
  }


  Ethernet.begin(mac, ip);
  
  server.begin();
  
  Serial.print("Il server si trova all'IP");
  
  Serial.println(Ethernet.localIP());
  
  pinMode(relePin3, OUTPUT);
  
}

void loop() 
{
  
  EthernetClient client = server.available();
  
  if (client) {
    
    Serial.println("nuovo client");
    
    boolean currentLineIsBlank = true;
    
    while (client.connected()) {
      
      if (client.available()) {
        
        char c = client.read();
        
        Serial.write(c);
 
        if (c == '\n' && currentLineIsBlank) {
  
          client.println("HTTP/1.1 200 OK");
          
          client.println("Content-Type: text/html");
          
          client.println("Connnection: close");
          
          client.println();
          
          client.println("<!DOCTYPE HTML>");
          
          client.println("<html>");
          
          client.println("<body bgcolor=LIGHTSTEELBLUE>");
          
         
    
          client.println("<meta http-equiv=\"refresh\" content=\"5\">");
          
          client.print("<h1 style=text-align:center;>Rilevatore Temperatura</h1>");
          client.print("<hr align=”left” size=”3″ width=”300″ color=black noshade>");
          
          
           
          client.println("
");  
       
   

   

          int chk = DHT11.read(DHT11PIN);

          Serial.print("Lettura Sensore: ");
          
          switch (chk)
          
          {
          case 0: 
            Serial.println("OK"); 
            break;
            
          case -1: 
            Serial.println("Errire di Check"); 
            break;
          case -2: 
          
            Serial.println("Errore di Time-Out"); 
            break;
            
          default: 
            Serial.println("Errore sconosciuto"); 
            break;
          }  

          client.print("<h1 style=text-align:center;>La Temperatura nella stanza &egrave di ");
          client.println("
");
          client.println("
");
          
          client.println(DHT11.temperature,1 ); 
          client.println("gradi");
           
          client.println("
");  
         
          client.println("</html>");
          break;
        }
        if (c == '\n') {
 
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
     
          currentLineIsBlank = false;
        }
      }
    }
   
    delay(1);

    
    if (DHT11.temperature > 30) {
      
digitalWrite (relePin3, LOW);

}
else {
  
  digitalWrite (relePin3,HIGH);
}

}
    
    client.stop();
    
    Serial.println("client disconesso");
  }

Si che puoi, ma dipende da quanto risultano grandi le pagine, rispetto alla (poca) memoria di Arduino.
O passi ad un Arduino Mega, ma ti consiglio di usare la SD anche perché se hai una shield Ethernet spesso queste hanno il lettore SD integrato, qual è il problema?).
Oppure puoi passare il progetto ad una scheda WeMos D1 che oltre ad avere già integrato il WiFi, ha onboard 4Mbyte di memoria non volatile (se installi una apposita libreria puoi anche gestirla come file system, anche se limitato a "soli" 3 Mega). E si programma sempre con lo stesso IDE e linguaggio di Arduino, non devi imparare nulla di nuovo.
Vedi tu...

Ciao vedi il link in firma al Wjsonduino, ce ne sono due versioni una su sd l'altra usa solo la memoria di programma.
Sul mio sito c'è anche Svgduino che usa solo la progmem per la pagina e pure l'Ardumando

Alberto

Altra strada praticabile sarebbe quella di de localizzare il web server sfruttando un hosting remoto; da questo installare una comunicazione asincrona verso Arduino che si occuperebbe solo di inviare un dump, che il web server si occuperebbe di formattare e presentare all'utente, cosi da risolvere tutti i problemi di carico(sia computazionali legati alla risposta al client, al resto di operazioni che l'Arduino deve svolgere e di storage) che puoi incontrare facendo gestire un web server ad un sistema cosi poco potente. Inoltre trattandosi di un progetto di didattico questo ne aumenterebbe sicuramente la qualità grazie all'interazione tra vari sistemi di rete.

>Fabio1998: Ti segnalo anche QUESTA semplice libreria che forse fa al caso tuo ...
... l'autore è sempre piuttosto presente sul forum e fornisce il supporto necessario.

Guglielmo