Pages: 1 [2] 3 4   Go Down
Author Topic: aduino ethernet shield  (Read 2794 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

con processing, ci sono della pagine belle e pronte con dei pulsanti, oppure devo crearmele?
Dato che devo operare sempre nella stessa rete, e dovendo collegare due arduino (uno collegato ai magneti della porta e l'altro che deve acendere il led quando la porta si apre) mi conviene caricare due pagine html sulle sd in modo da gestirle da qualsiasi computer della rete?
dal punto di vista grafico, processing mi dà la possibilità di creare pulsanti o di visualizzare se l'input di arduino è attivato o meno? grazie, a presto..... smiley-roll-sweat
Logged

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

processing mette a disposizione degli oggetti pulsante ecc... con la libreria p4 qualcosa.
Però il posizionamento/apparenza lo fai via codice, non c'è una GUI builder.

Però se le tue necessità son queste, meglio andare di webserver e pagine html
Logged

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

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

infatti la mia paura è proprio quella di non riuscire poi a creare una interfaccia grafica intuitiva: con la pagina web mi sembra più facile creare qualcosa di gestibile anche da uno meno esperto. Ma se creo la pagina come faccio a caricarla su arduino? grazie....
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

aiutooooooo..... .sto cercando di caricare una pagina web su Sd di arduino: non riesco!!!! qualcuno mi spiega come si fa??????grazie...
Logged

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

metodo facile: stacca l'sd, attaccala al pc e carica il file

metodo medio: crei uno sketch che legge un file da seriale e lo salva su SD

metodo "difficile": crei un comando seriale che esegua il codice del metodo medio
Logged

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

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

opto per la più facile grazie!!! smiley
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

sto cercando di caricare l'esempio di gianni c. http://arduino.cc/forum/index.php/topic,54797.msg404446.html#msg404446 ma mi dà l'errore quando carico lo skethc su arduino; ho copiato i file nella root della sd, e poi la demo su arduino: -------> serie di errors!!!!come mai?
Logged

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

senza conioscere gli erorri la vedo dura....
Logged

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

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

finalmente riesco ad accendere un led da ethernet

#include <Server.h>
#include <Client.h>

#include <Ethernet.h>

//Arduino uses digital pins 10, 11, 12, and 13 (SPI) to communicate with the W5100 on the ethernet shield
int ledPIN = 9;
byte mac[] = {
 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
//byte ip[] = { 10, 0, 0, 4};
byte ip[] = { 192,168,1,15 };
byte gateway[] = {192,168,1,1};
byte subnet[] = {255,255,255,0};

Server server(77);

void setup()
{
 // setta come output
 pinMode(ledPIN, OUTPUT);
 // initialize the ethernet device
 Ethernet.begin(mac, ip, gateway, subnet);
 // start listening for clients
 server.begin();
 Serial.begin(9600);
 Serial.println("Accetto");
 blink (5);
}

void loop()
{
 Client client = server.available();
 server.write('_ok_');
 // il client si collega con il comando:
 // telnet 192.168.1.15 77
 if (client) {
   int rcv = client.read();
   // echo vs il client:
   server.write(rcv);
   // Serial.print(rcv);

   // comandi accettati:
   // 1=acceso, 0=spento, B=blink
   switch (rcv) {
   case '1':
    digitalWrite(ledPIN, HIGH);
     Serial.println("CMD 1 received");
     break;
   case '0':
     digitalWrite(ledPIN, LOW);
     Serial.println("CMD 0 received");
     break;
   case 'B':
     blink(2);
     Serial.println("CMD B received");
     break;
   }
 }
}


void blink (int times)
{
 for (int cnt=times; cnt>0; cnt--)
 {
   digitalWrite(ledPIN, HIGH);   // set the LED on
   delay(200);
   digitalWrite(ledPIN, LOW);    // set the LED off
   delay(200);
 }
}


« Last Edit: April 07, 2011, 04:38:10 pm by fafidio » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

qualcuno mi aiuta comporre uno sketch che mi consenta di mettere in ascolto il secondo dei due arduino collegati su rete intranet mentre il primo invia un comando? fin'ora sono riuscito "solo" ad inviare un comando via telnet e fare accendere un led  (con ethernet shield)!!!!
praticamente devo inviare un comando sull'indirizzo ip del secondo arduino.....ma non trovo la soluzione... smiley-confuse
grazie a tutti!!
Logged

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

beh, il secondo arduino sarà un client...
e guarda caso tra gli esempi c'è TelnetClient, che legge dei comandi da seriale e li invia al server... a partire da quel codice dovrebbe essere uno scherzo fare quello che ti serve  smiley-mr-green
Logged

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

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...che fatica..ma non mi arrendo!!! grazie lesto di tutte le dritte!!
finalmente ho modificato un prgammino in html che mi fa accendere il led con una inte
Quote
/*
 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,0,107 };

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
Server server(80);

int analogChannel = 5; //pin analogico dell LM35
int ledpin = 8;  //pin del led
float tempC = 0;  //temperatura in gradi celsius
int ledstatus = 0;  //stato del led

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
  Serial.begin(9600);
}

void loop()
{
  //leggiamo la temperatura
  tempC = (analogRead(analogChannel) * 4.88 * 100)/1024;
  // listen for incoming clients
  Client client = server.available();
  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(c);    //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
          }
          // 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>Domotic-Arduino</title>");
          
          client.println("</head>");
          client.println("<body bgcolor=""black"" text=""white"">");
          
          client.println("<h1 align=""center"">Domotic-Home</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""> ON</font>");
          }else{
            client.println("<font color=""red""> OFF</font>");
          }
          client.println("<br />");
          client.println("<h2><a href=""/?led=1"">ACCENDI</a> | <a href=""/?led=0"">SPEGNI</></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(1);
    // close the connection:
    client.stop();
  }
}


rfaccia grafica in html.

Ma ora non riesco a capire come fare  a farlo accendere premendo il tasto sull'altro arduino. Ho provato con la libreria telnet client: ma dove modifico la stringa per far capire al server che deve rievere da client?

grazie a presto.
Logged

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

non devi modificare nulla. Il secondo arduino si connette, invia un messaggio facendo in modo che la stringa "led=1" o "led=0" sia in 6 posizione, così da essere riconosciuta e accettata dall'indexof().
fine smiley
Logged

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

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

quindi non mi resta che collegare il pulsante su pin 2 e 5V , con il resistore pin 2 verso ground e alla pressione del pulsante il server sarà già in ascolto... naturalmente dopo aver assegnato gli indirizzi del client per far recapitare il tutto al server in rete locale!!! Speriamo bene..a dopo per i risultati, spero che non mi esploda l'arduino smiley-lol smiley-lol smiley-lol.......
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 112
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

che faccio lesto, procedo così?
Logged

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