Sto impazzendo !!!
Ho cercato giorni sul WEB ed alla fine ho deciso di chiedere aiuto!!
Vorrei caricare un piccolo sito su SD CARD ed accedervi tramite ETHERNET SHIELD da Arduino !! Ma non trovo la strada giusta
Grazie per l'aiuto
Sto impazzendo !!!
Ho cercato giorni sul WEB ed alla fine ho deciso di chiedere aiuto!!
Vorrei caricare un piccolo sito su SD CARD ed accedervi tramite ETHERNET SHIELD da Arduino !! Ma non trovo la strada giusta
Grazie per l'aiuto
maxvetro:
Ho cercato giorni sul WEB ed alla fine ho deciso di chiedere aiuto!!
Vorrei caricare un piccolo sito su SD CARD ed accedervi tramite ETHERNET SHIELD da Arduino !!
Pagina o sito
Sito = piu' di una pagina
Comincia provando gli esempi dell'IDE
Io ci ho provato l'altro giorno...
http://arduino.cc/forum/index.php/topic,101145.0.html
alla fine ho risolto come leggi nel post. Vedi se ti puo essere utile...
M.
medimax:
alla fine ho risolto come leggi nel post. Vedi se ti puo essere utile...
Ho letto sommariamente
Mi pare di capire che nel tuo caso inviavi dei comandi
Esempi di invio di una pagina se ne trovano e non e' un problema
Nell'esempio Energy_control linkato in firma io spedisco una pagina spezzata i 6 7 file
Pero' la parola sito per me ha un significato diverso di pagina web
Grazie
Si in effetti ciò che sto tentando di fare e caricare un SITo , pagine e collegamenti e quindi altre pagine
Utilizzare ARDUINO come se fosse uno spazio WEB al quale accedo da un IP dedicato ( con i limiti del HTML naturalmente )
per quanto riguarda il link
http://arduino.cc/forum/index.php/topic,101145.0.html
avevo già dato un occhiata ma a me le librerie TinyWebServer.h non vanno... Uso la rev 1.0 di ARDUINO

maxvetro:
Uso la rev 1.0 di ARDUINO
Io farei un approccio passo passo
Fai UNA paginetta WEB nello sketch e cerchi di visualizzare quella ; sfrutta gli esempi
Poi ti studi la lettura della SD ; anche qui ci sono gli esempi
Infine metti insieme e mandi una pagina complessa letta dalla SD
A quel punto sfruttando il Serial-Monitor cerchi di capire cosa arriva su arduino quando richiedi la pagina WEB
Capito cosa arriva cerchi di gestirlo per inviare pagine diverse
Devi dimenticare di fare tutto e subito
Assolutamente non voglio correre, vorrei imparare !
Ma forse sono partito male con lo spiegare ciò che devo fare :
Ho questo codice caricato su un ARDUINO UNO con ETHERNET SHIELD :
#include <SPI.h>
#include <Ethernet.h>
//Creao un array di byte per specificare il mac address
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//creo un array di byte per specificare l'indirizzo ip
byte ip[] = {192, 168, 1, 127};
char Data_RX;
//creao un oggetto server che rimane in ascolto sulla porta
//specificata
EthernetServer ArduinoServer(80);
void setup()
{
//inizializza lo shield con il mac e l'ip
Ethernet.begin(mac, ip);
//inizializza l'oggetto server
ArduinoServer.begin();
Serial.begin(9600);
}
void loop()
{
EthernetClient pc_client = ArduinoServer.available();
//controllo se pc_client è true
if (pc_client != false)
{
//controllo continuamente che il client sia connesso
while (pc_client.connected())
{
//Controllo se ci sono byte disponibili per la lettura
if (pc_client.available())
{
//leggo i byte disponibili
//provenienti dal client
Data_RX = pc_client.read();
//Attendo che tutti i byte siano letti
//quando Data_RX contiene il carattere
//di nuova line capisco tutti i byte sono
//stati letti
if (Data_RX == '\n')
{
//Invio la risposta al client
//invio lo status code
pc_client.println("HTTP/1.1 200 OK");
//imposto il data type
pc_client.println("Content-Type: text/html");
pc_client.println();
//invio codice html
pc_client.print("<html><body><h1>Hello world Arduino Web Server</h1></body></html>");
//aspetto 1 ms affinche la risposta giunga al browser del client
delay(1);
//esco dal ciclo while una volta completato l'invio della risposta
break;
}
}
}
//chiudo la connessione
pc_client.stop();
}
}
Dal browser vado all'indirizzo 192.168.1.127 e vedo la scritta "HELLO WORLD ....."
Cio che vorrei , e sto trovando difficoltà , e di "passare" questa parte di codice
//Invio la risposta al client
//invio lo status code
pc_client.println("HTTP/1.1 200 OK");
//imposto il data type
pc_client.println("Content-Type: text/html");
pc_client.println();
//invio codice html
pc_client.print("<html><body><h1>Hello world Arduino Web Server</h1></body></html>");
//aspetto 1 ms affinche la risposta giunga al browser del client
delay(1);
//esco dal ciclo while una volta completato l'invio della risposta
break;
dentro la SD card e leggerlo da li !
![]()
guarda qui http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1291319677/6
Purtroppo è su IDE 0022-23 devi cambiarlo (non è molto complicato), purtroppo ci vorrà ancora un po' prima di trovare molti esempi di ethernet completi sulla ide 1.0, però questo ti fa capire come impostare un load da sd
ciao
provo subito... grazie 1000
Grazie a tutti..
Posto la soluzione , dovesse servire ad altri
in pratica con il seguente codice , accedendo all'indirizzo 192.168.1.127 è possibile visualizzare la pagina INDEX.HTM presente sulla memoria SD card
Ho provato a creare con adobe dreamweaver un piccolo SITO con collegamenti ipertestuali ed altro , e funziona
Grazie ancora per la pazienza
#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();
}
}
scusate ancora...
il file INDEX.HTM che ho creato risiede nella SD ( in root ) ed anche una cartella "image" ( sempre in root ) dove all'interno c'è un immagine logo.jpg
<title>TITOLO</title>
</head>
<img src="image/logo.jpg" width="854" height="164" alt="" />
</html>
Richiamo l'indirizzo IP , si apre la pagina ma vedo l'immagine con il punto di domanda , credo che il percorso "image/logo.jpg" non sia corretto
Premetto che sul computer funziona ed il percorso è giusto
Consigli ???
Grazie
Hai provato senza cartella? metti il jpg in root
si ... ma nulla da fare
tasto destro sull'immagine che vedo nel BROWSER , apri link in un altra finestra e lui va a cercare :
http://192.168.1.127/image/logo.jpg
non credo che esista questo percorso !!
dovrei capire come è possibile avere accesso ad un file dentro la SD tramite BROWSER ( se possibile !! )
ho provato a far caricare l'immagine da un URL e funziona
grazie
io dentro al body ho messo questo
ho un tasto con un jpg che si trova su sd e funziona
Ma che non va!
Questo è il mio file index.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento senza titolo</title>
</head>
<body>
<button name="vai" type="submit"><img src="logo.jpg" width="103" height="90" title="invia adesso" border="1" vspace="5" alt="invia adesso" align="middle"><b></b></button>
</body>
</html>
L'immagine "logo.jpg" l'ho spostata nella root della SD
e questo e ciò che vedo :
ho aperto la porta 88 , se hai voglia è accessibile dal WEB , ecco l'indirizzo :
http://rubianahouse.homepc.it:88/
Grazie
ho provato, vedo solo un tasto con "invia adesso" ..... non so perchè non la carica, eppure dovrebbe.
Se non hai qualche prob col browser, se dici che cliccando sull'immagine da l'indirizzo di una cartella nonostante non esista sembrerebbe che un cokie se lo sia segnato bene, però posso dire anche una pu.....ta ![]()
Nessun problema con il browser , anche xche se l'immagine la carico da un link esterno funziona
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Documento senza titolo</title>
</head>
<body>
<button name="vai1" type="submit"><img src="logo.jpg" width="103" height="90" title="invia adesso" border="1" vspace="5" alt="invia adesso" align="middle"><b></b></button>
<p> </p>
<p> </p>
<img src="http://cdn1.1stwebdesigner.com/wp-content/uploads/2010/08/Internet_Explorer_9.png" />
</body>
</html>
Se hai voglia ho aggiornato la SD ( rubianahouse.homepc.it:88 )
Solo un dubbio , scusa se te lo chiedo ma e per non creare casini :
Tu hai la SD nel modulo ETHERNET SHIELD e riesci a vedere l'icona logo.jpg con il codice html ?
<button name="vai1" type="submit"><img src="logo.jpg" width="103" height="90" title="invia adesso" border="1" vspace="5" alt="invia adesso" align="middle"><b></b></button>