Pages: 1 2 [3] 4   Go Down
Author Topic: Ethernet shield comunicazione con pagina web  (Read 7227 times)
0 Members and 1 Guest are viewing this topic.
Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 331
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

no, per ora ho caricato le immagini su un dominio esterno che possiedo, ma conto con il tempo di provare a usare una micro sd, dato che ho l'ethernetshield nuova, quella che ha anche lo slot MicroSd...

Vediamo cosa uscirà fuori.
Al momento sto cercando di capire come usare il millis() al posto del delay in delle azioni concatenate che richiedono tempi di attesa lunghi.. dai 30 ai 60 secondi e anche più.

Ma per questo eventualmente apro un altro post, almeno dividiamo un po i problemi smiley-grin
Logged

0
Offline Offline
Edison Member
*
Karma: 24
Posts: 2309
Have you mooed today?
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

..e bravo dr4gone!
Complimenti per l'obiettivo raggiunto!

Logged

Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 331
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Grazie mille. Stasera se ho tempo apro un altro post inerente alla gestione del millis() al posto del delay.
E' uno strumento potente, ma non mi quadra tanto, vediamo se con qualche aiuto riesco a superare anche questo ostacolo  smiley-grin.
Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 106
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao-

Anche io un paio di settimane fa smanettavo con queste cose..
Il codice scritto sopra va bene...
Ma sarebbe interessante anche fare in modo di conoscere lo stato del led (acceso o spento) anche quando si è a regime..

Questo codice potrebbe essere utile.


Ho provato a usare il tuo codice... :S Sto usando Chrome come browser ma la pagina dopo che accendo o spengo il led oppure basta anche ricaricarla si sformatta in modo impressionante. Come se il ciclo non si limitasse a stampare a schermo le scritte una sola volta ma in continuazione...Ho copiato esattamente il codice presente sul tuo sito. Ho provato in seguito anche con altri script. Ma sempre sto problema... la pagina vien fuori orrenda.. ripetuta più volte nella pagina.. Solo dopo un pò ho scoperto che il problema è dato dalla microSD inserita nell'ethernet Shield... qualcuno sa perchè? :S potrebbe essere difettosa la mia microSD?

Logged

http://www.hackerstribe.com - Nuova rubrica dedicata ad Arduino, chiunque voglia inserire il suo progetto mi contatti.

Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 331
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Premetto che sono anche io alle prime armi, quindi prendi quello che ti dico con le molle.. potrebbe essere un problema di alimentazione?  Con che cosa lo alimenti? Usb del pc o alimentazione esterna? Magari se lo alimenti con il pc , quelli che esce dall' usb non è sufficiente a tenere anche la uSD.

P.s. Quello non è il mio blog, io ho semplicemente preso spunto da li per fare il mio codice, e ottenere quello che c'è nelle pagine precedenti..

Il mio codice è un po diverso da quello su ioscripto.it smiley-grin
Se guardi dietro ci sono un paio di immagini di quello che ne è uscito fuori smiley-grin

Ti posto un codice semplificato senza grafica, che avevo postato per un altro utente...

L'idea di base l'ho presa qui http://www.ioscripto.it/arduino-accendere-led-via-web/ .
Poi ho semplificato e modificato un po la cosa e ti ho scritto velocemente il codice essenziale per fare in modo di vedere lo stato del led.

P.S. Grazie a Pitusso per i suggerimenti fondamentali  smiley-wink

Comunque essenzialmente si tratta di giocare un po con dei booleani.
associ lo stato al valore di un booleano. Se flag=true allora il led è acceso, se flag=false il led è spento.

Poi per stampare lo stato usi un client.println per stampare il codice html che vuoi...

Spero di essere stato chiaro.
Buon divertimento.

P.s. se carichi questo sketch di base su arduino, puoi vedere velocemente come  funziona
Code:
#include <String.h>
#include <SPI.h>
#include <Ethernet.h>
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Indirizzo MAC
byte ip[] = { 192, 168, 1, 2 }; // ip in lan
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
Server server(80); //porta server

String readString; //string
boolean flag1 = false; //Inizializzo lo stato del led

void setup(){
Ethernet.begin(mac, ip, subnet);
pinMode(2, OUTPUT);
Serial.begin(9600);
}
 
void loop(){
Client client = server.available();
if (client) {
  boolean currentLineIsBlank = true;
  while (client.connected()) {
    if (client.available()) {
      char c = client.read();
        readString.concat(c);
      if (c == '\n' && currentLineIsBlank) {
         Serial.print(readString);
         if(readString.indexOf("Led=2") > 0) {
          digitalWrite(2, HIGH); // Accendi Led
          flag1 = true;
}
          if(readString.indexOf("Led=02") > 0) {
          digitalWrite(2, LOW); // Spegni Led
          flag1 = false;
}
// INIZIO DICHIARAZIONE PAGINA HTML
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html");
        client.println();
        client.println("Led");
        client.println("<span>STATO: </span>");
if (flag1) {
              client.println("<span style='color:green'>ON</span>");
            }
            else
            {
              client.println("<span style='color:red'>OFF</span>");
          }
          //comando ON OFF
              client.println("<a href='/?Led=2'>ON</a> |<a href='/?Led=02'>OFF</a>");
client.println("</body></html>");
 
        //Resetto "String" per la prossima lettura
        readString="";
        //Fermo il client
        client.stop();
 
        }
    }
  }
}
}
« Last Edit: March 01, 2011, 01:45:27 pm by dr4gone » Logged

Offline Offline
Full Member
***
Karma: 3
Posts: 106
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Guarda ho provato prima con l'USB e mi dava sto problema. Ma anche con l'alimentatore 7,5 V e 1A mi da questo problema.

Ho risolto appunto rimuovendo la microSD.
boh.. forse hai ragione è un problema di alimentazione, ma per averne conferma dovrei fare altre prove.
Logged

http://www.hackerstribe.com - Nuova rubrica dedicata ad Arduino, chiunque voglia inserire il suo progetto mi contatti.

Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 331
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

prova!!  smiley-mr-green
Altrimenti aspettiamo che qualcuno più esperto o con gli stessi problemi si faccia avanti..
Io ancora non mi sono cimentato con l'uso della microSD perchè sono preso da altri progettini con moduli RF e simili smiley-grin, ma prima o poi ci dovrò tornare... quindi se trovi la soluzione e poi la condividi non sarebbe male smiley-grin
Logged

Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 331
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset


Ho provato a usare il tuo codice... :S Sto usando Chrome come browser ma la pagina dopo che accendo o spengo il led oppure basta anche ricaricarla si sformatta in modo impressionante. Come se il ciclo non si limitasse a stampare a schermo le scritte una sola volta ma in continuazione...Ho copiato esattamente il codice presente sul tuo sito. Ho provato in seguito anche con altri script. Ma sempre sto problema... la pagina vien fuori orrenda.. ripetuta più volte nella pagina.. Solo dopo un pò ho scoperto che il problema è dato dalla microSD inserita nell'ethernet Shield... qualcuno sa perchè? :S potrebbe essere difettosa la mia microSD?

Hai risolto poi?
Or ora, ho messo una microsd anche io, ed ho lo stesso problema.
Logged

Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 331
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao riprendo questo post..

Ho notato che ultimamente grazie alla libreria modificata da Gianni C, si può facilmente giocare con la micro sd, quindi stamattina ho deciso di cimentarmi velocemente anche io, cercando di passare questo su micro sd

Tralasciando la grafica che devo ancora sistemare, ho un problema che non mi spiego.
Ogni volta che mando su un uscita digitale un livello logico alto, il sensore di temperatura aumenta di 2 °C la temperatura...

Per vedere e provare cosa intendo cliccate qui

Il secondo problema è che non riesco  a fare una semplice funzione spegni tutto...
Io avevo pensato di fare un marker @E e dedicarlo a questa funzione, ma non riesco proprio a farlo andare. Suggerimenti?

allego lo sketch provvisorio

* gestionedomo.pde (8.11 KB - downloaded 14 times.)
Logged

Galliate (NO) Italia
Offline Offline
Full Member
***
Karma: 0
Posts: 180
Sviluppo sistemi software PLC/DCS/SCADA
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,

io vado a leggere le temperature del mio progetto una volta ogni 60sec, allego parte dello sketch...

Code:
void loop()
{
  set_replacements_array();
  // process incoming connections one at a time forever
  if (has_filesystem) {
     webserver.processConnection();
  }
 
  unsigned long currentMillis = millis();
 
   if(currentMillis - previousMillis > interval) {
     loop_temp();
     Serial.println(floatToString(str_AN1, Temp_inH2O, 2, 6));
     Serial.println(floatToString(str_AN2, Temp_outH2O, 2, 6));
     Serial.println(floatToString(str_AN3, Temp_esterna, 2, 6));
     Serial.println(floatToString(str_AN4, Temp_ambiente, 2, 6));
     
     Serial.println(floatToString(str_AO1, Set_start[0], 2, 6));
     Serial.println(floatToString(str_AO2, Set_stop[0], 2, 6));
     Serial.println(floatToString(str_AO3, Set_start[1], 2, 6));
     Serial.println(floatToString(str_AO4, Set_stop[1], 2, 6));
     Serial.println(floatToString(str_AO5, Set_start[2], 2, 6));
     Serial.println(floatToString(str_AO6, Set_stop[2], 2, 6));     
     
     previousMillis = currentMillis;   
  }
}

e non ho mai avuto problemi nelle letture della AI dovute ad attivazione dei DO, l'unica cosa che mi viene in mente, metti un +5v in Aref...
Logged

kattivik76
Sviluppo e realizzazione  Progetti Arduino
Teamspeack -> Arduino.cc -> 79.38.142.178:9987

Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 331
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Non mi serve aggiornare ogni 60 secondi,, ma una cosa semplice... Ogni volta che si richiede la pagina si rileva la temperatura...

Cmq ho provato ad alimentare l'arduino con un alimentatore esterno e non tramite l'usb dal pc.. ora la differenza di temperatura è di 1 Grado ogni volta che aziono un pin digitale.

Bho non me lo spiego..
Non credo che sia problema di codice.. ma di tensione e shield..
Che ne dite?
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10464
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si, direi che quando accendi illed provochi un calo di tensione che sbarella un pò tutto... cos'hai attaccato all'arduino? che board stai usando? da quello che ho capito usi anche la microSD che magari ciuccia un pò (non so)
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 331
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

arduino UNO, 3 led, un sensore di temp lm35  una ethernet shield e la microsd sull'eth shield. Sto alimentando tutto con un akimentatore 7.5V 1 Ampere
Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10464
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

da quanto la resistenza sui led?
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 331
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 smiley-roll-blue smiley-roll-blue smiley-roll-sweat smiley-roll-sweat

effettivamente me la sono dimenticata  smiley-sweat smiley-sweat

Sono un fesso.. poi metto quelle da 220 ohm e vediamo  smiley-twist
Logged

Pages: 1 2 [3] 4   Go Up
Jump to: