Go Down

Topic: web server su sd con tiny e senza (Read 1 time) previous topic - next topic

roc3d

Ciao a tutti, sto per diventare scemo, ho provato vari esempi della libreria del tinywebserver blinkled e non va, mi da perfino errore nella compilazione usando l'ide 1.0 e la libreria aggiornata.
ho provato ad usare l'ide 0023 con una libreria sempre tiny per quella versione dell'ide, copiato i file nella sd, modificato l'ip nel programma, lo carica su arduino ma quando vado ad aprire l'indirizzo dal browser non va.
ho provato a seguire vari esempi nel forum tipo
http://arduino.cc/forum/index.php/topic,101336.0.html
http://arduino.cc/forum/index.php/topic,101145.0.html
http://arduino.cc/forum/index.php/topic,77511.0.html
http://arduino.cc/forum/index.php/topic,101744.0.html
ma niente da fare non riesco a far funzionare nulla.
ci sarebbe qualche buon anima che mi aiuterebbe a far funzionare almeno un'esempio???  =(
grazie in anticipo

pablos

#1
Apr 24, 2012, 02:53 pm Last Edit: Apr 24, 2012, 02:56 pm by pablos Reason: 1
Ti posso dire con certezza che sulla 0022 Finziona. Prova e ci aggiorniamo, se non si connette verifica bene i parametri della tua rete locale. ciao
no comment

roc3d

ciao pablos ho provato come hai detto tu con la 0022 ma niente da fare, non credo che siano le impostazioni della prete perchè con gli esempi della libreria ethernet funziona tutto.
per caso sai c'è qualche requisito particolare per la sd?

pablos

Di partcolare nulla, formattala in fat16. Da quanti gb è?
no comment

roc3d

È da 512 Mb ed è anche formattata fat16

mauroz

quando carichi gli esempi riesci a pingare l'arduino?

roc3d

ciao mauroz, con l'esempio caricato il ping va bene, nessun pacchetto perso

roc3d

per la precisione sto usando l'esempio blinkled5
http://arduino.cc/forum/index.php/topic,56928.0.html
da cui ho scaricato il codice e sto usando l'ide 0022

pablos

prova a mettere questo e carica qualsiasi pagina html rinominata index.htm che deve essere nella sd ovviamente
IDE 1.0 e cambia l'indirizzo ip

Code: [Select]

Code:

#include <SPI.h>
#include <Ethernet.h>
#include <Flash.h>
#include <SD.h>
#include <TinyWebServer.h>

const int SD_CS = 4;
const int ETHER_CS = 10;
byte ip[] = { 192, 168, 2, 177 };
static uint8_t mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
boolean file_handler(TinyWebServer& web_server);
boolean index_handler(TinyWebServer& web_server);

TinyWebServer::PathHandler handlers[] = {
 {"/", TinyWebServer::GET, &index_handler },
 {"/" "*", TinyWebServer::GET, &file_handler },
 {NULL},
};

const char* headers[] = {"Content-Length",NULL};
TinyWebServer web = TinyWebServer(handlers, headers);

boolean has_filesystem = true;
Sd2Card card;
SdVolume volume;
SdFile root;
SdFile file;

void send_file_name(TinyWebServer& web_server, const char* filename) {
 if (!filename) {
   web_server.send_error_code(404);
   web_server << F("Could not parse URL");
 } else {
   TinyWebServer::MimeType mime_type = TinyWebServer::get_mime_type_from_filename(filename);
   web_server.send_error_code(200);
   web_server.send_content_type(mime_type);
   web_server.end_headers();
   if (file.open(&root, filename, O_READ))
   {
     Serial << F("Read file "); Serial.println(filename);
     web_server.send_file(file);
     file.close();
   } else {
     web_server << F("Could not find file: ") << filename << "\n";
   }
 }
}

boolean file_handler(TinyWebServer& web_server) {
 char* filename = TinyWebServer::get_file_from_path(web_server.get_path());
 send_file_name(web_server, filename);
 free(filename);
 return true;
}

boolean index_handler(TinyWebServer& web_server) {
 send_file_name(web_server, "INDEX.HTM");
 return true;
}

void setup() {
 Serial.begin(9600);
 pinMode(SS_PIN, OUTPUT); // set the SS pin as an output                                
 digitalWrite(SS_PIN, HIGH); // and ensure SS is high
 pinMode(ETHER_CS, OUTPUT); // Set the CS pin as an output
 digitalWrite(ETHER_CS, HIGH); // Turn off the W5100 chip! (wait for                              
 pinMode(SD_CS, OUTPUT);       // Set the SDcard CS pin as an output
 digitalWrite(SD_CS, HIGH); // Turn off the SD card! (wait for
                             
 card.init(SPI_FULL_SPEED, SD_CS);
 volume.init(&card);  
 root.openRoot(&volume);
 Ethernet.begin(mac, ip);
 web.begin();
 Serial << F("Ready to accept HTTP requests.\n");
}

void loop()
{  
   web.process();
}

no comment

pablos

se non ti va anche questo hai problemi con lib flash
no comment

pablos

flash.h della 0022

...............
...............
#include <avr/pgmspace.h>
#include <WProgram.h>

#define FLASH_LIBRARY_VERSION 3
...............
...............
----------------------------------------------------------

flash.h della 1.0

...............
...............
#include <avr/pgmspace.h>
#include <Arduino.h>

#define FLASH_LIBRARY_VERSION 3
...............
...............
no comment

roc3d

ok, le cose grazie a te stanno migliorando
sto facendo tutto conl'ide 1.0
ho sistemato la libreria flash scaricando l'ultima versione da qui http://arduiniana.org/libraries/flash/
ho creato una pagina htm molto semplice e nominata INDEX.HTM come mi hai detto te inserendola nella root della sd.
adesso il programma funziona ma quando inserisco l'indirizzo di arduino il browser mi dice "Could not find file: INDEX.HTM ", prima non compariva nulla, come posso risolvere?
ci tengo a ringraziarti per la dritta che mi hai dato sulla libreria

roc3d

inizio a pensare che sia un problema di sd perchè ho provato a caricare il file CardInfo della libreia SD e mi trova la sd dicendomi che è collegata correttamente però non riesce a trovare la partizione fat16/fat32
può essere troppo piccola?

pablos

può essere, avevo avuto inzialmente problemi con una recuperata da un telefonino, poi ho comprato una kingston da 2 gb e vado alla grande :)
no comment

roc3d

Ok allora provo perché anch'io ho usato una recuperata da un telefono

Go Up