Ethernet board használat

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
dckillman
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2013. október 7. hétfő, 11:23

Ethernet board használat

Hozzászólás Szerző: dckillman »

Sziasztok!

Mega alappanel és Ethernet boardot szeretnék használni.

Hálózattal összedugtam, de nem tudom hogy hogyan kell feléleszteni vagy életjelet kicsikarni a hálózatos lapból.
Pontosabban link és egyéb ledek világítanak és valamelyik villog.

Hogyan oldjam meg?

A célom az hogy egy weboldal segítségével pl bekapcsoljak egy ledet...aztán majd továbbgondolom :-)(nyomógomb szerűen azaz benyomom majd elengedem és akkor hajtson végre működést)

Köszönöm a választ
A hozzászólást 1 alkalommal szerkesztették, utoljára dckillman 2013. november 17. vasárnap, 12:15-kor.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Ethernet board élesztés

Hozzászólás Szerző: Robert »

Ethernet boardból kb. 5 féle létezik. Milyen IC van rajta?
- w5100
- enc28j60
- cs8900
- rtl1829as
- ???

Mit ír a gyártója? Műszaki támogatásban mi szerepel?
Mit próbáltál ki eddig? Milyen eredménnyel?
dckillman
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2013. október 7. hétfő, 11:23

Re: Ethernet board élesztés

Hozzászólás Szerző: dckillman »

Tavir webshopból rendeltem meg
W5100 chip

Szóval ez a kód megy:

Kód: Egész kijelölése

#include <SPI.h>
#include <Ethernet.h>

// MAC address from Ethernet shield sticker under board
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(10, 0, 0, 20); // IP address, may need to change depending on network
EthernetServer server(80);  // create a server at port 80

String HTTP_req;          // stores the HTTP request
boolean LED_status = 0;   // state of LED, off by default

void setup()
{
    Ethernet.begin(mac, ip);  // initialize Ethernet device
    server.begin();           // start to listen for clients
    Serial.begin(9600);       // for diagnostics
    pinMode(2, OUTPUT);       // LED on pin 2
}

void loop()
{
    EthernetClient client = server.available();  // try to get client

    if (client) {  // got client?
        boolean currentLineIsBlank = true;
        while (client.connected()) {
            if (client.available()) {   // client data available to read
                char c = client.read(); // read 1 byte (character) from client
                HTTP_req += c;  // save the HTTP request 1 char at a time
                // last line of client request is blank and ends with \n
                // respond to client only after last line received
                if (c == '\n' && currentLineIsBlank) {
                    // send a standard http response header
                    client.println("HTTP/1.1 200 OK");
                    client.println("Content-Type: text/html");
                    client.println("Connection: close");
                    client.println();
                    // send web page
                    client.println("<!DOCTYPE html>");
                    client.println("<html>");
                    client.println("<head>");
                    client.println("<title>Arduino LED Control</title>");
                    client.println("</head>");
                    client.println("<body>");
                    client.println("<h1>LED</h1>");
                    client.println("<p>Click to switch LED on and off.</p>");
                    client.println("<form method=\"get\">");
                    ProcessCheckbox(client);
                    client.println("</form>");
                    client.println("</body>");
                    client.println("</html>");
                    Serial.print(HTTP_req);
                    HTTP_req = "";    // finished with request, empty string
                    break;
                }
                // every line of text received from the client ends with \r\n
                if (c == '\n') {
                    // last character on line of received text
                    // starting new line with next character read
                    currentLineIsBlank = true;
                } 
                else if (c != '\r') {
                    // a text character was received from client
                    currentLineIsBlank = false;
                }
            } // end if (client.available())
        } // end while (client.connected())
        delay(1);      // give the web browser time to receive the data
        client.stop(); // close the connection
    } // end if (client)
}

// switch LED and send back HTML for LED checkbox
void ProcessCheckbox(EthernetClient cl)
{
    if (HTTP_req.indexOf("LED2=2") > -1) {  // see if checkbox was clicked
        // the checkbox was clicked, toggle the LED
        if (LED_status) {
            LED_status = 0;
        }
        else {
            LED_status = 1;
        }
    }
    
    if (LED_status) {    // switch LED on
        digitalWrite(2, HIGH);
        // checkbox is checked
        cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"2\" \
        onclick=\"submit();\" checked>LED2");
    }
    else {              // switch LED off
        digitalWrite(2, LOW);
        // checkbox is unchecked
        cl.println("<input type=\"checkbox\" name=\"LED2\" value=\"2\" \
        onclick=\"submit();\">LED2");
    }
}
Most vettem észre ha ezt a kódot használom és betötlöm a böngészőbe a szervert és frissítek egyet akkor nem jól működik.


Da akárhogy próbálom átalakítani gombra a checkboxot, hibás működést érek el vele.Úgy szeretném ha click van a gombon akkor menjen el az adat a http kéréssel és kigyulladjon a led.



(Az lenne a jó ha Post adatküldés is lenne de ez most nem fontos)

Ha valaki tud légyszvíes segítsen
dckillman
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2013. október 7. hétfő, 11:23

Re: Ethernet board használat

Hozzászólás Szerző: dckillman »

Csináltam egy működő verziót az előző alapján.

Hogyan lehet azt megoldani hogy frissítéskor ne villanjon a led meg?

Kód: Egész kijelölése



#include <SPI.h>
#include <Ethernet.h>


// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);

// Initialize the Ethernet server library
// with the IP address and port you want to use 
// (port 80 is default for HTTP):
EthernetServer server(80);
String HTTP_req;
int webinput=0;
String puffer_req;
int refresh=0;

void setup() {
  
  Serial.begin(9600);   //Soros port definiálás
  Serial.println("Serial.println teszt"); //Soros port teszt
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  pinMode(13,OUTPUT);
  
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}

void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    webinput=0;
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        
        // 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) {
          String HTTP_req ="";
           while(client.available())
          {
            c = client.read();
            // save the variables somewhere
            HTTP_req += c;
          }
          // send a standard http response header

          if(HTTP_req != "")
          {
            if(HTTP_req == "on=1"){

              Serial.println("on");
              
              digitalWrite(13,HIGH);
              delay(200);
              digitalWrite(13,LOW);
              
            }
          }
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          //client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          refresh=refresh+1;
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.println("<form method=post>");

          
          // client.println("<p>HELLO VILÁG</p>");
          client.println("<button name=\"on\"value=\"1\" onclick=\"this.form.submit()\"> BEKAPCSOL </button>");



          client.println("</form>");
          // onclick=\"this.form.submit();\" checked>LED2");
          client.println("</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();
    Serial.println("client disonnected");
  }
  }
  
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Ethernet board használat

Hozzászólás Szerző: Robert »

A LED nem lehet a 13-as lábon!
Az az SPI kommunikáció helye(10,11,12,13)! Másik lábra tedd át!
dckillman
Biztosítékgyilkos
Hozzászólások: 61
Csatlakozott: 2013. október 7. hétfő, 11:23

Re: Ethernet board használat

Hozzászólás Szerző: dckillman »

Robert írta:A LED nem lehet a 13-as lábon!
Az az SPI kommunikáció helye(10,11,12,13)! Másik lábra tedd át!

Átraktam de frissítéskor akkor is felvillan a másik led .
Laci_L
DrótVégénSzéndarab
Hozzászólások: 41
Csatlakozott: 2013. december 3. kedd, 9:31

Re: Ethernet board használat

Hozzászólás Szerző: Laci_L »

Üdv.

Szereztem egy Eth. Shield-et.
10,11,12,13-on összekötve világít, villog, ha megszólítom böngészőből a beállított IP címét, de soros-on a 0.0.0.0 local ip-t írja ki és természetesen nem ad vissza semmit a böngészőnek. (WebServer program).
Ping-re is villog, de nem válaszol.

Elvileg ez egy clone darab..........lehet, h másik library kellene neki!?
Van tapasztalata valakinek hasonlóval?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Ethernet board használat

Hozzászólás Szerző: Robert »

az spi csatlakozot probald.
Laci_L
DrótVégénSzéndarab
Hozzászólások: 41
Csatlakozott: 2013. december 3. kedd, 9:31

Re: Ethernet board használat

Hozzászólás Szerző: Laci_L »

olvastam, az még jó lehet, de azon sincs semmi kommunikáció, csak tápled világít, de azt külön szálakon kapja.

Van tőled a Wiz812MJ-m, az sem fog menni simán a digitális 10,11,12,13-ról?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Ethernet board használat

Hozzászólás Szerző: Robert »

Az SPI és a D13...D11 az alaplapon van összekötve nem a shielden!
Laci_L
DrótVégénSzéndarab
Hozzászólások: 41
Csatlakozott: 2013. december 3. kedd, 9:31

Re: Ethernet board használat

Hozzászólás Szerző: Laci_L »

rászúrtam a Nano SPI-re a Shield-et. Ez nem jó?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Ethernet board használat

Hozzászólás Szerző: Robert »

És a chipselect is kell....
Laci_L
DrótVégénSzéndarab
Hozzászólások: 41
Csatlakozott: 2013. december 3. kedd, 9:31

Re: Ethernet board használat

Hozzászólás Szerző: Laci_L »

a D10-eket külön kábelel összekötöttem, mind Nano, mind Shield oldalon.

Kód: Egész kijelölése

void setup()
{
  pinMode(10, OUTPUT);
  digitalWrite(10, HIGH);
  SPI.begin();
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.begin(9600);
  Serial.println(Ethernet.localIP());
}
Laci_L
DrótVégénSzéndarab
Hozzászólások: 41
Csatlakozott: 2013. december 3. kedd, 9:31

Re: Ethernet board használat

Hozzászólás Szerző: Laci_L »

most nézem, lehet,h nem jól fogalmaztam!

Nano D10-ét összekötöttem Eth.Shld. D10-ével. :)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Ethernet board használat

Hozzászólás Szerző: Robert »

Innen jónak kell lennie:
5V, GND, MOSI/MISO/SCK/D10.
Válasz küldése