Arduino als Webserver --> Aufruf funktioniert nicht!

OP #3743930
Lesenswert?

Hallo!
Ich betreibe den Arduino UNO mit Ethernet-Shield und verwende das 
Beispiel "WebServer" der Arduino IDE.
Verbunden habe ich den UNO mit dem PC über den WLAN-Router über 
Patch-Kabel. Nur leider kann ich den Webserver nicht ansprechen.
Habe leider von TCP/IP keine Ahnung, wo-was-wann eingestellt werden 
muss, damit ich vom UNO-als Webserver betrieben etwas zurückbekomme.
Ich dachte durch Eingabe am Internetbrowser (192.168.1.177) wird der 
Arduino Aufgerufen und liefert in Form eines HTML-Skript etwas zurück.
Vielleicht kann mir jemand weiterhelfen.
Danke Mad!
1
#include <SPI.h>
2
#include <Ethernet.h>
3

4
// Enter a MAC address and IP address for your controller below.
5
// The IP address will be dependent on your local network:
6
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x1C, 0x36 };
7
IPAddress ip(192,168,1,177);
8

9
// Initialize the Ethernet server library
10
// with the IP address and port you want to use 
11
// (port 80 is default for HTTP):
12
EthernetServer server(80);
13

14
void setup() {
15
 // Open serial communications and wait for port to open:
16
  Serial.begin(9600);
17
   while (!Serial) {
18
    ; // wait for serial port to connect. Needed for Leonardo only
19
  }
20

21

22
  // start the Ethernet connection and the server:
23
  Ethernet.begin(mac, ip);
24
  server.begin();
25
  Serial.print("server is at ");
26
  Serial.println(Ethernet.localIP());
27
}
28

29

30
void loop() {
31
  // listen for incoming clients
32
  EthernetClient client = server.available();
33
  if (client) {
34
    Serial.println("new client");
35
    // an http request ends with a blank line
36
    boolean currentLineIsBlank = true;
37
    while (client.connected()) {
38
      if (client.available()) {
39
        char c = client.read();
40
        Serial.write(c);
41
        // if you've gotten to the end of the line (received a newline
42
        // character) and the line is blank, the http request has ended,
43
        // so you can send a reply
44
        if (c == '\n' && currentLineIsBlank) {
45
          // send a standard http response header
46
          client.println("HTTP/1.1 200 OK");
47
          client.println("Content-Type: text/html");
48
          client.println("Connection: close");  // the connection will be closed after completion of the response
49
    client.println("Refresh: 5");  // refresh the page automatically every 5 sec
50
          client.println();
51
          client.println("<!DOCTYPE HTML>");
52
          client.println("<html>");
53
          // output the value of each analog input pin
54
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
55
            int sensorReading = analogRead(analogChannel);
56
            client.print("analog input ");
57
            client.print(analogChannel);
58
            client.print(" is ");
59
            client.print(sensorReading);
60
            client.println("<br />");       
61
          }
62
          client.println("</html>");
63
          break;
64
        }
65
        if (c == '\n') {
66
          // you're starting a new line
67
          currentLineIsBlank = true;
68
        } 
69
        else if (c != '\r') {
70
          // you've gotten a character on the current line
71
          currentLineIsBlank = false;
72
        }
73
      }
74
    }
75
    // give the web browser time to receive the data
76
    delay(1);
77
    // close the connection:
78
    client.stop();
79
    Serial.println("client disconnected");
80
  }
81
}
#3744248
Lesenswert?

Welche Uno Revision-Nummer hast du?
Welches Ethernet Shield: orginal oder clone?

Mad Madang schrieb:
> Ich dachte durch Eingabe am Internetbrowser (192.168.1.177) wird der
> Arduino Aufgerufen und liefert in Form eines HTML-Skript etwas zurück.

Ja, so ist es. Und was genau geht nicht? Was bekommst du angezeigt?
Was zeigt der Serial Monitor? Welche IP wurde an das Board alloziert?
Normalerweise wird die IP Adresse vom Router (DHCP) zugewiesen.
#3744328
Lesenswert?

Mad Madang schrieb:

> Verbunden habe ich den UNO mit dem PC über den WLAN-Router
> über Patch-Kabel.

Also das Netzwerkkabel ist zwischen UNO und Router gesteckt?
Netzwerkkabel zwischen UNO und PC wäre im Normalfall falsch!

> Vielleicht kann mir jemand weiterhelfen.
> IPAddress ip(192,168,1,177);

Hast Du überprüft, dass die angegebene IP-Adresse auch zur Konfiguration 
Deines Heimnetzwerks passt? Und dass kein anderes Gerät im Netzwerk 
diese Adresse bereits hat?
OP #3744544
Lesenswert?

Hallo,
wenn ich 192.168.1.177 eingebe kommt die folgende Meldung:
--> Der Server unter 192.168.1.177 braucht zu lange, um eine Antwort zu 
senden.

- Hast Du überprüft, dass die angegebene IP-Adresse auch zur 
Konfiguration
- Deines Heimnetzwerks passt?
   * wie kann ich das überprüfen, den Router kann ich über 10.0.0.138
   * ansprechen
- Und dass kein anderes Gerät im Netzwerk diese Adresse bereits hat
   * wo sieht man wer welche Adresse hat.

Danke für deine Hilfe
Mad
OP #3744564
Lesenswert?

Hallo Mark
Welche Uno Revision-Nummer hast du?
 # R3

Welches Ethernet Shield: orginal oder clone?
 # Ethernet Shield Model R3 Made in Italy

Mad Madang schrieb:
> Ich dachte durch Eingabe am Internetbrowser (192.168.1.177) wird der
> Arduino Aufgerufen und liefert in Form eines HTML-Skript etwas zurück.

Ja, so ist es. Und was genau geht nicht? Was bekommst du angezeigt?
Was zeigt der Serial Monitor? Welche IP wurde an das Board alloziert?
 # was meist du mit alloziert? Dem Board habe ich die 192.168.1.177
   raufgespielt
Normalerweise wird die IP Adresse vom Router (DHCP) zugewiesen

 # der serielle Monitor spukt folgendes aus: "server is at 
192.168.1.177"
 # der Router, über den der Arduino angesprochen wird, hat die
   IP-Adresse : 10.0.0.38

IP-mäßig habe ich leider ein schlechtes Verständnis!
Danke für deine Hilfe
Mad
#3744570
Lesenswert?

Mad Madang schrieb:
> wenn ich 192.168.1.177 eingebe kommt die folgende Meldung:
> --> Der Server unter 192.168.1.177 braucht zu lange, um eine Antwort zu
> senden.

Das bedeutet: Entweder der Server ist nicht vorhanden oder diese Adresse 
ist aus Deinem Netzwerk heraus überhaupt nicht erreichbar.

>    * wie kann ich das überprüfen, den Router kann ich über 10.0.0.138
>    * ansprechen

Das sieht mir nicht nach einem kleinen Heim- oder Büronetzwerk aus, 
sondern nach einem Riesennetzwerk. Was ist das? Hängst Du irgendwo auf 
einem Universitäts-Campus am Netz? In einer Riesenfirma?

Das Netz sieht mir aus als wenn es einen Netzwerkadministrator hat.

In dem Netz würde ich als erstes mal probieren, eine IP-Adresse per DHCP 
zu beziehen. Ändere Dein Programm in der Initialisierung und lasse die 
ip weg:
1
//  Ethernet.begin(mac, ip);
2
  Ethernet.begin(mac);

Wird Dir dann vom Programm eine lokale IP-Adresse angegeben?
Welche lokale IP-Adresse bekommst Du dann vom Netzwerk zugeteilt?
OP #3744586
Lesenswert?

Jürgen S. schrieb:
> Mad Madang schrieb:
>> wenn ich 192.168.1.177 eingebe kommt die folgende Meldung:
>> --> Der Server unter 192.168.1.177 braucht zu lange, um eine Antwort zu
>> senden.
>
> Das bedeutet: Entweder der Server ist nicht vorhanden oder diese Adresse
> ist aus Deinem Netzwerk heraus überhaupt nicht erreichbar.
>
>>    * wie kann ich das überprüfen, den Router kann ich über 10.0.0.138
>>    * ansprechen
>
> Das sieht mir nicht nach einem kleinen Heim- oder Büronetzwerk aus,
> sondern nach einem Riesennetzwerk. Was ist das? Hängst Du irgendwo auf
> einem Universitäts-Campus am Netz? In einer Riesenfirma?
 ## nein, es ist bei mir zuhause, ganz ein einfacher w-lan-Router, den
    ich zwischen pc und uno-ethernet-shield via patch-kabel geschaltet
    habe.

> Das Netz sieht mir aus als wenn es einen Netzwerkadministrator hat.
>
> In dem Netz würde ich als erstes mal probieren, eine IP-Adresse per DHCP
> zu beziehen. Ändere Dein Programm in der Initialisierung und lasse die
> ip weg:
> //  Ethernet.begin(mac, ip);
>   Ethernet.begin(mac);
 ## initalisiert habe ich erledigt
>
> Wird Dir dann vom Programm eine lokale IP-Adresse angegeben?
 ## wie finde ich heraus, welche ip-adresse mir zugeteilt wurde?

> Welche lokale IP-Adresse bekommst Du dann vom Netzwerk zugeteilt?
#3744591
Lesenswert?

Mad Madang schrieb:
>
>  # der serielle Monitor spukt folgendes aus: "server is at
> 192.168.1.177"
>  # der Router, über den der Arduino angesprochen wird, hat die
>    IP-Adresse : 10.0.0.38
>
> IP-mäßig habe ich leider ein schlechtes Verständnis!
> Danke für deine Hilfe
> Mad

das kann so nicht klappen - verpasse dem Arduino Webserver mal eine 
Adresse im gleichen  Subnetz ist sonst wird das nie klappen

Was hat dein Rechner für eine IP Adresse vom Router bekommen ???

das muss irgendwas in richtung 10.0.0.xxx sein !

nun must die deinem Arduino auch eine ipadresse im gleichen Sunbnetz 
zuweisen sonst wird das nicht klappen

// 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, 0x0F, 0x1C, 0x36 };
IPAddress ip(192,168,1,177);  <<<<----- genau hier

versuche es mal mit der z.B. 10.0.0.100 dann sollte der Webserver sich 
unter der Ipadresse 10.0.0.100 ansprechen lassen.

viel erfolg

chris
#3744609
Lesenswert?

Mad Madang schrieb:
>  ## nein, es ist bei mir zuhause, ganz ein einfacher w-lan-Router, den
>     ich zwischen pc und uno-ethernet-shield via patch-kabel geschaltet
>     habe.

Aha, also hat Dein Netzwerk jetzt irgendwie zwei Router, oder was?

Einen Router, mit dem Du vom PC aus ins Internet gehst und über den Du 
jetzt an diesem Forum teilnimmst?

Und einen weiteren Router, den Du zwischen PC und Arduino UNO 
gestöpselst hast.

Wenn Du nicht wenigstens Grundkenntnisse in Netzwerkadministration hast, 
hört sich diese Konfiguration nicht so an, als wenn sie funktioniert.

"Einfache W-Lan Router" haben immer eine HTML-Administrationsoberfläche. 
Kannst Du von Deinem PC aus die HTML-Administrationsoberfläche Deines 
Routers erreichen, der zwischen PC und UNO hängt?

Normalerweise muß der UNO an demselben Router angeschlossen sein, an dem 
der PC angeschlossen ist und über den Du ins Internet gehst.
OP #3744612
Lesenswert?

Chris dus schrieb:
> Mad Madang schrieb:
>>
>>  # der serielle Monitor spukt folgendes aus: "server is at
>> 192.168.1.177"
>>  # der Router, über den der Arduino angesprochen wird, hat die
>>    IP-Adresse : 10.0.0.38
>>
>> IP-mäßig habe ich leider ein schlechtes Verständnis!
>> Danke für deine Hilfe
>> Mad
>
> das kann so nicht klappen - verpasse dem Arduino Webserver mal eine
> Adresse im gleichen  Subnetz ist sonst wird das nie klappen
>
> Was hat dein Rechner für eine IP Adresse vom Router bekommen ???
>
> das muss irgendwas in richtung 10.0.0.xxx sein !
>
> nun must die deinem Arduino auch eine ipadresse im gleichen Sunbnetz
> zuweisen sonst wird das nicht klappen
>
> // 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, 0x0F, 0x1C, 0x36 };
> IPAddress ip(192,168,1,177);  <<<<----- genau hier
>
> versuche es mal mit der z.B. 10.0.0.100 dann sollte der Webserver sich
> unter der Ipadresse 10.0.0.100 ansprechen lassen.
>
> viel erfolg
>
> chris

Hallo chris, wenn ich ipconfig über's cmd-tool auf meinem rechner 
eingebe, dann sehe ich folgendes: DNS-Suffix: lan
           ipv4-adresse 10.0.0.1
           subnetzmaske 255.255.255.0
           standardgateway 10.0.0.138
Mein Rechner läuft über w-lan (Wifi)
           ipv4-adresse 10.0.0.2

Habe den Uno die ip-adresse 10.0.0.100 gegeben und versucht, mit dieser 
adresse ihn aufzurufen, leider ohne erfolg!
danke für deine mühe
mad

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren