alegenqua Inviato 18 Settembre 2013 Condividi Inviato 18 Settembre 2013 Ciao a tutti, ho creato (scopiazzando in giro i vari pezzi e sistemandoli a mio piacimento) un webserver per gestire alcune luci via web proprio per iniziare ad utilizzare arduino... ho creato una paginetta web perfettamente funzionante... ora però vorrei dare a questa pagina un comparto grafico più carino e stavo pensando a jquerymobile ma non riesco ad implementare la pagina da creare nel codice di arduino e tra l'altro non so se serve caricarla su microsd collegata a scheda ethernet o se va caricata direttamente... qualcuno sa come aiutarmi? devo postare il codice? ditemi voi... Link al commento Condividi su altri siti Altre opzioni di condivisione...
RyujiAndy Inviato 18 Settembre 2013 Condividi Inviato 18 Settembre 2013 Ciao a tutti, ho creato (scopiazzando in giro i vari pezzi e sistemandoli a mio piacimento) un webserver per gestire alcune luci via web proprio per iniziare ad utilizzare arduino... ho creato una paginetta web perfettamente funzionante... ora però vorrei dare a questa pagina un comparto grafico più carino e stavo pensando a jquerymobile ma non riesco ad implementare la pagina da creare nel codice di arduino e tra l'altro non so se serve caricarla su microsd collegata a scheda ethernet o se va caricata direttamente... qualcuno sa come aiutarmi? devo postare il codice? ditemi voi... Non sarebbe male se alleghi schema elettrico e codice, comunque premetto che una interfaccia troppo complessa inceppa Arduino, questo per le ridotte risorse di calcolo del multicontattore, io uso rasperry come Server web e Arduino per la gestione locale dell'impianto, utilizzando SIA un protocollo Ethernet che un bus i2c Gesendet von meinem GT-I9300 mit Tapatalk 2 Link al commento Condividi su altri siti Altre opzioni di condivisione...
alegenqua Inviato 18 Settembre 2013 Autore Condividi Inviato 18 Settembre 2013 no no nessuna interfaccia troppo complessa... ne ho viste moltissime in web quindi credo venga supportato tranquillamente... [spoiler=Espandi] /* Web server preso dall'esempio dell'ide e modificato da me */ #include <SPI.h> #include <Ethernet.h> #include <WString.h> // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x3A, 0xA3 }; byte ip[] = { 192,168,1,107 }; // Initialize the Ethernet server library // with the IP address and port you want to use // (port 80 is default for HTTP): EthernetServer server(80); int analogChannel = 5; //pin analogico dell LM35 int ledpinc = 7; int ledpinb = 8; //pin del led int ledpin = 9; //pin del led float tempC = 0; //temperatura in gradi celsius int ledstatus = 0; //stato del led int ledstatusb = 0; //stato del led int Clock = millis(); int IntervalloPing = 5000;//ogni 5 minuti controlla se c'è connessione int TempoAttesa= 1000; //Attesa ping void setup() { // start the Ethernet connection and the server: Ethernet.begin(mac, ip); server.begin(); pinMode(analogChannel,INPUT); //input dell' LM35 pinMode(ledpin,OUTPUT); //output del led pinMode(ledpinb,OUTPUT); //output del led pinMode(ledpinc,OUTPUT);//output del led Serial.begin(9600); } void loop() { EthernetClient client = server.available(); Clock = millis(); /*if (IntervalloPing > millis() - Clock) { client.println("POST /Ping");//invia il comando Ping; client.println(); TempoAttesa = millis(); Serial.println("post"); } if (TempoAttesa > millis() + 1000) { //impostato a 60 secondi String readstring; if (readstring.indexOf("Pong") == 6 ) { digitalWrite(ledpinc,LOW); } else { digitalWrite(ledpinc,HIGH); } } */ //leggiamo la temperatura tempC = (analogRead(analogChannel) * 4.88 * 100)/1024; // listen for incoming clients if (client) { // an http request ends with a blank line boolean currentLineIsBlank = true; String readstring; //stringa per la lettura dal browser while (client.connected()) { if (client.available()) { char c = client.read(); readstring.concat©; //aggiunge c alla stringa; // if you've gotten to the end of the line (received a newline // character) and the line is blank, the http request has ended, // so you can send a reply if (c == '\n' && currentLineIsBlank) { readstring.concat('\0'); //controllo su seriale Serial.println("stringa: "); //Serial.println(readstring); //Serial.print("indexOf(led=1): "); //Serial.println(readstring.indexOf("led=1")); // Serial.print("indexOf(led=0): "); //Serial.println(readstring.indexOf("led=0")); if(readstring.indexOf("led=1") == 6){ digitalWrite(ledpin,HIGH); ledstatus = 1; Serial.println("LED ON"); //controllo } if(readstring.indexOf("led=0") == 6){ digitalWrite(ledpin,LOW); ledstatus = 0; Serial.println("LED OFF"); //controllo } if(readstring.indexOf("led=4") == 6){ digitalWrite(ledpinb,HIGH); ledstatusb = 1; Serial.println("LEDb ON"); //controllo } if(readstring.indexOf("led=3") == 6){ digitalWrite(ledpinb,LOW); ledstatusb = 0; Serial.println("LEDb OFF"); //controllo } // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); //Creazione pagina web client.println("<html><head>"); client.println("<title>Sinottico Allarme DISPAC</title>"); client.println("</head>"); client.println("<body bgcolor=""black"" text=""white"">"); client.println("<h1 align=""center"">Sinottico Allarme DISPAC</h1><hr />"); client.println("<br />"); client.print("Temperatura interna : "); client.print((int)tempC); client.println(" C"); client.println("<br /><br />"); client.println("<h3><a href=""/"">Aggiorna Sensore</a></h3>"); client.println("<br />"); client.println("<hr />"); client.println("<br />"); client.print("Comandi LED su pin "); client.println(ledpin); client.println("<br />"); client.print("Stato LED :"); if(ledstatus){ client.println("<font color=""green""> Allarme in corso</font>"); }else{ client.println("<font color=""red""> Centrale a riposo</font>"); } client.println("<br />"); client.println("<h2><a href=""/?led=1"">TEST ALLARME</a> | <a href=""/?led=0"">RESET ALLARME</a></h2>" ); client.println("<br />"); client.println("<hr />"); client.println("<br />"); client.print("Comandi LED su pin "); client.println(ledpinb); client.println("<br />"); client.print("Stato LED :"); if(ledstatusb){ client.println("<font color=""green""> ON</font>"); }else{ client.println("<font color=""red""> OFF</font>"); } client.println("<br />"); client.println("<h2><a href=""/?led=4"">ACCENDI</a> | <a href=""/?led=3"">SPEGNI</a></h2>"); client.println("</body></html>"); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(50); // close the connection: client.stop(); } } Link al commento Condividi su altri siti Altre opzioni di condivisione...
alegenqua Inviato 18 Settembre 2013 Autore Condividi Inviato 18 Settembre 2013 questo funziona perfettamente con una pagina web normale... non riesco con una dall'interfaccia grafica migliore... Link al commento Condividi su altri siti Altre opzioni di condivisione...
RyujiAndy Inviato 20 Settembre 2013 Condividi Inviato 20 Settembre 2013 no no nessuna interfaccia troppo complessa... ne ho viste moltissime in web quindi credo venga supportato tranquillamente... [spoiler=Espandi] /* Web server preso dall'esempio dell'ide e modificato da me */ #include <SPI.h> #include <Ethernet.h> #include <WString.h> // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x3A, 0xA3 }; byte ip[] = { 192,168,1,107 }; // Initialize the Ethernet server library // with the IP address and port you want to use // (port 80 is default for HTTP): EthernetServer server(80); int analogChannel = 5; //pin analogico dell LM35 int ledpinc = 7; int ledpinb = 8; //pin del led int ledpin = 9; //pin del led float tempC = 0; //temperatura in gradi celsius int ledstatus = 0; //stato del led int ledstatusb = 0; //stato del led int Clock = millis(); int IntervalloPing = 5000;//ogni 5 minuti controlla se c'è connessione int TempoAttesa= 1000; //Attesa ping void setup() { // start the Ethernet connection and the server: Ethernet.begin(mac, ip); server.begin(); pinMode(analogChannel,INPUT); //input dell' LM35 pinMode(ledpin,OUTPUT); //output del led pinMode(ledpinb,OUTPUT); //output del led pinMode(ledpinc,OUTPUT);//output del led Serial.begin(9600); } void loop() { EthernetClient client = server.available(); Clock = millis(); /*if (IntervalloPing > millis() - Clock) { client.println("POST /Ping");//invia il comando Ping; client.println(); TempoAttesa = millis(); Serial.println("post"); } if (TempoAttesa > millis() + 1000) { //impostato a 60 secondi String readstring; if (readstring.indexOf("Pong") == 6 ) { digitalWrite(ledpinc,LOW); } else { digitalWrite(ledpinc,HIGH); } } */ //leggiamo la temperatura tempC = (analogRead(analogChannel) * 4.88 * 100)/1024; // listen for incoming clients if (client) { // an http request ends with a blank line boolean currentLineIsBlank = true; String readstring; //stringa per la lettura dal browser while (client.connected()) { if (client.available()) { char c = client.read(); readstring.concat©; //aggiunge c alla stringa; // if you've gotten to the end of the line (received a newline // character) and the line is blank, the http request has ended, // so you can send a reply if (c == '\n' && currentLineIsBlank) { readstring.concat('\0'); //controllo su seriale Serial.println("stringa: "); //Serial.println(readstring); //Serial.print("indexOf(led=1): "); //Serial.println(readstring.indexOf("led=1")); // Serial.print("indexOf(led=0): "); //Serial.println(readstring.indexOf("led=0")); if(readstring.indexOf("led=1") == 6){ digitalWrite(ledpin,HIGH); ledstatus = 1; Serial.println("LED ON"); //controllo } if(readstring.indexOf("led=0") == 6){ digitalWrite(ledpin,LOW); ledstatus = 0; Serial.println("LED OFF"); //controllo } if(readstring.indexOf("led=4") == 6){ digitalWrite(ledpinb,HIGH); ledstatusb = 1; Serial.println("LEDb ON"); //controllo } if(readstring.indexOf("led=3") == 6){ digitalWrite(ledpinb,LOW); ledstatusb = 0; Serial.println("LEDb OFF"); //controllo } // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); //Creazione pagina web client.println("<html><head>"); client.println("<title>Sinottico Allarme DISPAC</title>"); client.println("</head>"); client.println("<body bgcolor=""black"" text=""white"">"); client.println("<h1 align=""center"">Sinottico Allarme DISPAC</h1><hr />"); client.println("<br />"); client.print("Temperatura interna : "); client.print((int)tempC); client.println(" C"); client.println("<br /><br />"); client.println("<h3><a href=""/"">Aggiorna Sensore</a></h3>"); client.println("<br />"); client.println("<hr />"); client.println("<br />"); client.print("Comandi LED su pin "); client.println(ledpin); client.println("<br />"); client.print("Stato LED :"); if(ledstatus){ client.println("<font color=""green""> Allarme in corso</font>"); }else{ client.println("<font color=""red""> Centrale a riposo</font>"); } client.println("<br />"); client.println("<h2><a href=""/?led=1"">TEST ALLARME</a> | <a href=""/?led=0"">RESET ALLARME</a></h2>" ); client.println("<br />"); client.println("<hr />"); client.println("<br />"); client.print("Comandi LED su pin "); client.println(ledpinb); client.println("<br />"); client.print("Stato LED :"); if(ledstatusb){ client.println("<font color=""green""> ON</font>"); }else{ client.println("<font color=""red""> OFF</font>"); } client.println("<br />"); client.println("<h2><a href=""/?led=4"">ACCENDI</a> | <a href=""/?led=3"">SPEGNI</a></h2>"); client.println("</body></html>"); break; } if (c == '\n') { // you're starting a new line currentLineIsBlank = true; } else if (c != '\r') { // you've gotten a character on the current line currentLineIsBlank = false; } } } // give the web browser time to receive the data delay(50); // close the connection: client.stop(); } } Il codice di norma non lo si mette nello spoiler perche escono un sacco di faccine, comunque dove stanno i jquerry Gesendet von meinem GT-I9300 mit Tapatalk 2 Link al commento Condividi su altri siti Altre opzioni di condivisione...
alegenqua Inviato 20 Settembre 2013 Autore Condividi Inviato 20 Settembre 2013 Non c'è... per l'appunto... voglio implementare qualcosa al posto della webpage che ha realizzato li sotto... mi sapresti cambiare il codice con uno contente un pulsante e una scritta solamente fatto con jquerymobile? Link al commento Condividi su altri siti Altre opzioni di condivisione...
RyujiAndy Inviato 23 Settembre 2013 Condividi Inviato 23 Settembre 2013 Non c'è... per l'appunto... voglio implementare qualcosa al posto della webpage che ha realizzato li sotto... mi sapresti cambiare il codice con uno contente un pulsante e una scritta solamente fatto con jquerymobile? Ho fatto delle piccole prove a casa e come detto in precedenza é successo che la pagina viene letta solo un paio di volte e poi dopo un certo numero di richiami si interrompe la comunicazione tra Arduino ed il Browser, SE invece uso un vero Server web questo non avviene. Gesendet von meinem GT-I9300 mit Tapatalk 2 Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Crea un account o accedi per lasciare un commento
Devi essere un membro per lasciare un commento
Crea un account
Iscriviti per un nuovo account nella nostra community. È facile!
Registra un nuovo accountAccedi
Sei già registrato? Accedi qui.
Accedi Ora