Compartir Servidor Web para Arduino UNO y Ethernet Shield con SD

/*

  • Alberto Seva WebServerSD.015t
  • http://dfists.ua.es/~alberto/arduino/arduino.htm
  • Mi proyecto es crear un servidor Web con el “Arduino UNO” (RS 715-4081[1]) y
  • el "ETHernet shield with SD card” (RS 715-4072[2]).
  • [1] http://es.rs-online.com/web/p/products/715-4081/
  • [2] http://es.rs-online.com/web/p/microcontrolador-procesador/7154072/
  • A partir del sketch 'SDWebBrowse.ino', las mejoras de mi código suponen
  • lo siguiente:
    • Los nombres de fichero 8.3 que el sistema SdFat es capaz de encontrar,
  • se guardan en el formato correspondiente a la página de códigos de
  • MSDOS cp850. Se debe especificar esa página de códigos para que los
  • enlaces se puedan reconstruir.
    • Los nombres 8.3 normalmente no deberían tener caracteres por encima
  • del 0x7F, pero en algunas de mis tarjetas he descubierto que no es así.
  • Surge el problema de que los enlaces con caracteres por encima del 0x7F
  • enviados en los enlaces con formato cp850, regresan con el formto UTF-8
  • expresado como %C2 ó %C3 y a continuación otro código con el formato
  • %XX. Esos códigos hay que convertirlos primero a un carácter
  • equivalente, y luego mediante una tabla totalmente arbitraria, al
  • carácter correcto en cp850 que sirva en el proceso de búsqueda del
  • nombre del fichero.
    • En el listado de directorio, la rutina es capaz de detectar las entradas
  • de nombre largo y escribirlas como información aunque sin ninguna opción
  • de búsqueda real.
    • En la petición de ficheros, se intenta mandar información del
  • content-type de manera correcta. El HTML supone programar muchas cadenas
  • constantes que hay que almacenar en la zona de programa para que el
  • programa no se quede sin memoria.
    • La transmisión de ficheros usando un buffer, mejora muchísimo el
  • rendimiento del servidor web.
  • Se ha probado con el Arduino UNO y con el MEGA 2560 (RS 715-4084 [3].
  • Como intento que funcione en el primero, hay unos trucos de ahorro de
  • memoria compartiendo el buffer de entrada.
  • Dos notas adicionales:
    • La comunicación serie está definida a 115200 bps.
    • Para que funcione y busque los caracteres acentuados, debe modificarse la librería.
  • SdBaseFile.cpp como se indica en la cabecera del sketch.
  • [3] http://es.rs-online.com/web/p/microcontrolador-procesador/7154084/
    */

sketch_mar21c004WebServerSD_015m.ino (32.2 KB)

sketch_mar21c004WebServerSD_015t.ino (32 KB)

En cuanto me llegue la ethernet shield lo pruebo a ver como va.
Muchas gracias

riscking:
En cuanto me llegue la ethernet shield lo pruebo a ver como va.
Muchas gracias

Gracias por tu interés. En la versión 15t faltaba un unsigned en un sitio, así que la he vuelto a subir. También dejo la 15m que usa algo mas de SRAM pero ocupa almo menos de memoria flash (programa).

gracias por compartir, me lo apunto para cuando tenga tiempo. :stuck_out_tongue_closed_eyes:

Estoy tratando de mejorar la velocidad de transferencia para un servidor sobre Arduino UNO, por ahora va a 330 bytes/segundo...
si gusta puedo enviar mi código para que me de sugerencias

Saludos,

UNO_server.ino (9.28 KB)