Go Down

Topic: Problem mit Ethernet shield (Read 324 times) previous topic - next topic

Matthi02

Hallo,
Ich habe bei meinem Arduino Mega ein ETHERNET schield angeschlossen und an das einen Router

Wenn ich aber dann mit meinem Handy die IP aufrufen möchte findet es den Arduino (IP) nicht.
 Kann mir jemand helfen??

Muss ich bei der IP/Mac Adresse noch etwas ändern??







Code: [Select]


#include <Ethernet.h>
#include <SPI.h>
boolean reading = false;

//Konfiguration

  byte ip[] = { 192, 168, 0, 21 };   //Manual setup only
  byte gateway[] = { 192, 168, 0, 1 }; //Manual setup only
  byte subnet[] = { 255, 255, 255, 0 }; //Manual setup only

  // if need to change the MAC address (Very Rare)

  // if need to change the MAC address
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xB4, 0x6F };

EthernetServer server = EthernetServer(80); //port 80


void setup(){
 
//Pins 10,11,12 & 13 werden vom ethernet shield verwendet, 1 zur Programmübertragung

  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);

  Ethernet.begin(mac); //Ethernet.begin(mac, ip, gateway, subnet); //for manual setup
  server.begin();
 
}

void loop(){

  // warten auf Anfragen von Clients
  checkForClient();

}

void checkForClient(){

  EthernetClient client = server.available();

  if (client) {

   
    boolean currentLineIsBlank = true;
    boolean sentHeader = false;

    while (client.connected()) {
      if (client.available()) {

        if(!sentHeader){
          // HTML senden
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
   
          client.println("<HTML>");
          client.println("<HEAD>");
          client.println("<TITLE>Arduino</TITLE>");
          client.println("</HEAD>");
          client.println("<BODY>");
          client.println("Arduino IO control <br>");
          client.println("<br>");
          client.println("</a>");
         
          client.println("Out 02");
          client.println("<a href=\"/?a\" target=\"inlineframe\">ON</a>");
          client.println("<a href=\"/?b\" target=\"inlineframe\">OFF</a><br>");
         
          client.println("Out 03");
          client.println("<a href=\"/?c\" target=\"inlineframe\">ON</a>");
          client.println("<a href=\"/?d\" target=\"inlineframe\">OFF</a><br>");
         
          client.println("Out 04");
          client.println("<a href=\"/?e\" target=\"inlineframe\">ON</a>");
          client.println("<a href=\"/?f\" target=\"inlineframe\">OFF</a><br>");
         
          client.println("Out 05");
          client.println("<a href=\"/?g\" target=\"inlineframe\">ON</a>");
          client.println("<a href=\"/?h\" target=\"inlineframe\">OFF</a><br>");
         
          client.println("Out 06");
          client.println("<a href=\"/?i\" target=\"inlineframe\">ON</a>");
          client.println("<a href=\"/?j\" target=\"inlineframe\">OFF</a><br>");
         
          client.println("Out 07");
          client.println("<a href=\"/?k\" target=\"inlineframe\">ON</a>");
          client.println("<a href=\"/?l\" target=\"inlineframe\">OFF</a><br>");
         
          client.println("Out 08");
          client.println("<a href=\"/?m\" target=\"inlineframe\">ON</a>");
          client.println("<a href=\"/?n\" target=\"inlineframe\">OFF</a><br>");
         
          client.println("Out 09");
          client.println("<a href=\"/?o\" target=\"inlineframe\">ON</a>");
          client.println("<a href=\"/?p\" target=\"inlineframe\">OFF</a><br>");
         
          client.println("<br>");
          client.println("</a>");
         
          client.println("<a href=\"/?acegikmo\" target=\"inlineframe\">all ON</a>");
          client.println("<a href=\"/?bdfhjlnp\" target=\"inlineframe\">all OFF</a><br>");
         
          client.println("<IFRAME name=inlineframe style=\"display:none\" >");         
          client.println("</IFRAME>");

          client.println("</BODY>");
          client.println("</HTML>");
          sentHeader = true;
        }
//auslesen der Eingabe

        char c = client.read();

        if(reading && c == ' ') reading = false;
        if(c == '?') reading = true; //found the ?, begin reading the info

        if(reading){
         
//schalten der Ausgänge

           switch (c) {
            case 'a':
              //add code here to trigger on 2
              digitalWrite(2, HIGH);
              break;
            case 'b':
            //add code here to trigger on 3
              digitalWrite(2, LOW);
              break;
            case 'c':
            //add code here to trigger on 4
              digitalWrite(3, HIGH);
              break;
            case 'd':
            //add code here to trigger on 5
              digitalWrite(3, LOW);
              break;
            case 'e':
            //add code here to trigger on 6
              digitalWrite(4, HIGH);
              break;
            case 'f':
            //add code here to trigger on 7
              digitalWrite(4, LOW);
              break;
            case 'g':
            //add code here to trigger on 8
              digitalWrite(5, HIGH);
              break;
            case 'h':
            //add code here to trigger on 9
              digitalWrite(5, LOW);
              break; 
              case 'i':
            //add code here to trigger on 2
              digitalWrite(6, HIGH);
              break;
            case 'j':
            //add code here to trigger on 3
              digitalWrite(6, LOW);
              break;
            case 'k':
            //add code here to trigger on 4
              digitalWrite(7, HIGH);
              break;
            case 'l':
            //add code here to trigger on 5
              digitalWrite(7, LOW);
              break;
            case 'm':
            //add code here to trigger on 6
              digitalWrite(8, HIGH);
              break;
            case 'n':
            //add code here to trigger on 7
              digitalWrite(8, LOW);
              break;
            case 'o':
            //add code here to trigger on 8
              digitalWrite(9, HIGH);
              break;
            case 'p':
            //add code here to trigger on 9
              digitalWrite(9, LOW);
              break;
          }

        }

        if (c == '\n' && currentLineIsBlank)  break;

        if (c == '\n') {
          currentLineIsBlank = true;
        }else if (c != '\r') {
          currentLineIsBlank = false;
        }

      }
    }

    delay(1); // pause für den Browser
    client.stop(); // Verbindung trennen

  }

}

void triggerPin(int pin, EthernetClient client){

  client.print("Turning on pin ");
  client.println(pin);
  client.print("<br>");

  digitalWrite(pin, HIGH);
  delay(25);
  digitalWrite(pin, LOW);
  delay(25);
}

uwefed

Das Händy hängt auch am Router über WiFi?

HotSystems

Beide Geräte müssen im selben Netz (IP-Netzwerk) sein.
Uwe hat es ja schon geschrieben, wenn das Handy per WLan angeschlossen ist kann es funktionieren, muss aber nicht.
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

combie

#3
Aug 10, 2017, 03:13 pm Last Edit: Aug 10, 2017, 03:14 pm by combie
Quote
Wenn ich aber dann mit meinem Handy die IP aufrufen möchte
Welche IP gibst du ein?

Meine Glaskugel sagt:
Quote
//Ethernet.begin(mac, ip, gateway, subnet); //for manual setup
Warum kommentierst du das aus, wenn du doch die IP selber festlegen willst...?
"Freiheit, Gleichheit, Brüderlichkeit!"
Aber wie gelangen wir zu den Tätigkeitswörtern?
Quelle: Stanislaw Jerzy Lec

Matthi02

Das Händy hängt auch am Router über WiFi?
ja

Beide Geräte müssen im selben Netz (IP-Netzwerk) sein.
Uwe hat es ja schon geschrieben, wenn das Handy per WLan angeschlossen ist kann es funktionieren, muss aber nicht.

hab ich




Welche IP gibst du ein?

Meine Glaskugel sagt:Warum kommentierst du das aus, wenn du doch die IP selber festlegen willst...?
1. 192, 168, 0, 21
2. den sketch hab ich von jmd. als example bekommen.






Sorry für die späte antwort


combie

Quote
1. 192, 168, 0, 21
Aber die verwendest du doch gar nicht!
Das ist das, was ich dir vorher schon erklären wollte.

Also jetzt nochmal:
Wenn du möchtest, dass der Arduino die  192, 168, 0, 21 bekommt, dann musst du ihm das schon sagen.
Dann tut er das auch.
Aber hellsehen kann dein kleiner Arduino nicht.


Alternativ:
Sage dem DHCP deins  Routers, dass er dem Gerät mit der MAC { 0x90, 0xA2, 0xDA, 0x0D, 0xB4, 0x6F } die IP 192, 168, 0, 21 zuteilt.



Diese beiden Möglichkeiten hast du!
"Freiheit, Gleichheit, Brüderlichkeit!"
Aber wie gelangen wir zu den Tätigkeitswörtern?
Quelle: Stanislaw Jerzy Lec

Whandall

Diese beiden Möglichkeiten hast du!
Die dritte (normale) Methode wäre:

Der Arduino erhält seine Adresse via DHCP (das macht dein Sketch schon)
und du benutzt diese Adresse von deinem Client aus.
Nachsehen könntest du die Adresse im Router,
du könntest sie im Arduino ausgeben,
oder mittels eines Netwerk-Scanners ermitteln.
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

Matthi02

... oder mittels eines Netwerk-Scanners ermitteln.
Das heißt ich eoll den arduino beim Router anstecken und dann eine Netzwerkscann machen

Oder?

ElEspanol

Einen IP Scan, falls dein Router dir die DHCP Clientes nicht anzeigt

combie

#9
Aug 12, 2017, 09:46 am Last Edit: Aug 12, 2017, 09:52 am by combie
Quote
Das heißt ich eoll den arduino beim Router anstecken und dann eine Netzwerkscann machen

Oder?
Warum gibst du die IP nicht mit Serial.print() aus?
Dann steht sie vor dir!
Musst sie nur noch notieren.

----------------------------------
Ich bleibe dabei!

Wenn du eine feste IP verwenden willst, dann verwende eine feste IP!
Die beiden Möglichkeiten habe ich dir genannt. Eine wird dir im Code gezeigt. Es ist mir ein Rätsel, warum du diese Methode nicht verwenden willst.
Der einzige Grund, den ich sehe, warum du das nicht tust, ist dass du keine/wenig Ahnung hast.


Wenn du eine dynamische IP verwenden willst, dann tue das!
Aber dann lebe auch mit den Problemen.
z.B. dass sie ab und zu mal wechselt.

------------

Es ist nicht schlimm, keine Ahnung zu haben.
Denn das kannst du ändern.
Da mussten wir alle durch.

Und das können wir dir nicht abnehmen!

Also, mein Tipp: LERNE

Lerne wie das Ethernet funktioniert. Denn erst dann kannst du auch erkennen ob die 192.168.0.21 überhaupt funktionieren kann

Lerne die Sprache, welche in der Arduino IDE verwendet wird.
Also lerne C++.
Lese die Doku zu der Arduino Ethernet Klasse.
"Freiheit, Gleichheit, Brüderlichkeit!"
Aber wie gelangen wir zu den Tätigkeitswörtern?
Quelle: Stanislaw Jerzy Lec

HotSystems

Sorry für die späte antwort
Lieber spät als nie.
Aber liest du auch was wir dir schreiben ?
Combie hat es dir doch schon deutlich geschrieben.
Aktiviere doch einfach mal die "manuelle" Initialisierung.
Code: [Select]
Ethernet.begin(mac, ip, gateway, subnet)
I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

combie

Quote
Aber liest du auch was wir dir schreiben ?
Combie hat es dir doch schon deutlich geschrieben.
Ich befürchte, dass unsere Ansagen schon gelesen werden, aber nicht verstanden werden.

Ursache:
Für eine erfolgreiche Kommunikation braucht man ein gemeinsames Vokabular und übereinstimmende Begriffsdefinitionen.

Dort ist die Arbeit!


Die Kristallkugel sagt mir:
Da ich die Router Konfiguration nicht kenne, vermute ich, dass die 192.168.0.21 sowieso nicht funktioniert.
"Freiheit, Gleichheit, Brüderlichkeit!"
Aber wie gelangen wir zu den Tätigkeitswörtern?
Quelle: Stanislaw Jerzy Lec

HotSystems

Ich befürchte, dass unsere Ansagen schon gelesen werden, aber nicht verstanden werden.

Ursache:
Für eine erfolgreiche Kommunikation braucht man ein gemeinsames Vokabular und übereinstimmende Begriffsdefinitionen.

Dort ist die Arbeit!


Die Kristallkugel sagt mir:
Da ich die Router Konfiguration nicht kenne, vermute ich, dass die 192.168.0.21 sowieso nicht funktioniert.
Ja klar, nur wird auch das selten richtig verstanden.

Arbeit will ja keiner mehr haben. Ist ja alles so einfach, wenn es im Internet steht.

Dann gebe ich dem TO noch einen Tipp:
Einfach nachsehen welche IP sein Rechner hat und diese posten.

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Matthi02

Warum gibst du die IP nicht mit Serial.print() aus?
Dann steht sie vor dir!
Musst sie nur noch notieren.

   



Also, mein Tipp: LERNE


Werd ich beides  machen

Go Up