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 )
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>
maxvetro:
Nessun problema con il browser , anche xche se l'immagine la carico da un link esterno funziona adesso"
Ma da un link esterno la puoi mettere senza problemi senza pulsanti di caricamento
Questo ne e' un esempio http://ifv.lancerotto.it:82 vedi logo Arduino
Purtroppo il SEARCH di questo forum e' notoriamente penoso ma ti posso assicurare che l'argomento e' stato dibattuto e si parlava di immagine codificata in BASE64
Magari chi ha interagito con quel post si ricorda il nome e lo puo' linkare
Forse qui ... non ho letto tutti i messaggi ma sembra abbia una conclusione positiva
http://arduino.cc/forum/index.php/topic,56669.0.html
Ma non è che ci vuole tipo lo slash davanti?
<img src="\logo.jpg" width="103" height="90" title="invia adesso" border="1" vspace="5" alt="invia adesso" align="middle"><b></b></button>
Visto che siamo a provarle...
La domanda ora diventa un altra , non vorrei averVi portato fuori pista ...
D: E' possibile visualizzare tramite BROWSER un immagine salvata in SD inserita in un ETHERNET SHIELD ? Se si quale è il percorso ?
http://rubianahouse.homepc.it:88
Questo è l'indirizzo del mio Arduino ( lo lascio acceso per test )
Vedete come :
Grazie a tutti per la disponibilità
maxvetro:
La domanda ora diventa un altra , non vorrei averVi portato fuori pista ...
tutti per la disponibilità
Visto che la cosa mi interessa e stuzzica ho girovagato un po' ed ho trovato questa affermazione
Il sistema dei LED è abbastanza macchinoso.
In pratica, con una funzione particolare di una libreria, faccio il check di una uscita se è HIGH o LOW, e in base a questo faccio uno strcpy_s di un buffer, che contiene una Stringa infilata dentro il BaBBuino con PROGMEM.
In questa Stringa c'è l'immagine del LED in base64, quindi non c'è nessun file .bmp o .jpg esterno da recuperare, ma è costruito direttamente dentro la memoria del BaBBUino.
In realtà sono 2 stringhe con 2 versioni base64 del LED: quello Rosso, acceso, e quello Grigio, spento.
Purtroppo Babbuino sembra volatilizzato
Affidiamoci ai "Testoni" se possono interpretare e spiegare le affermazioni riportate
Provo a codificare una immagine come stringa e metterla in una pagina per vedere cosa succede