2017-10-10 19 views
-1

안녕하십니까,Arduino 로컬 네트워크 DHCP 실패

우리의 문제에 대한 해결책은 많이 찾았지만 아무 것도 시도하지 않았습니다. 이것은 준비가되어있는 긴 게시물이 될 것입니다.

우리의 시스템 :

우리는 및 이더넷 실드 위즈 네트 W5100, 이 아두 이노는 윈도우 웹 서비스에 HTTP POST 요청을를 만드는 아두 이노 우노 R3 클론이있다. 응답에 따르면 arduino는 질문하는 것이 즐겁지 않은 무언가를 만들 것입니다.

우리의 테스트 환경에서, 우리는 윈도우 머신에 윈도우 웹 서비스를 설치하고이 머신을 우리의 로컬 네트워크에 연결합니다. 그런 다음 arduino를 로컬 네트워크에도 연결하십시오. 우리의 서버 ip보다 arduino가 dhcp 요청을 만들어서 우리 모뎀 라우터에서 ip를 얻었고 우리 서버에서 webservices를 호출 할 수 있습니다.

지금부터 모든 것이 잘 동작합니다. 여기

는 우리의 아두 이노에서 몇 가지 예제 코드입니다 (I는 아두 이노이 추가 라이브러리를 사용합니다... "RestClient.h"

#include <Ethernet.h> 
#include <SPI.h> 
#include "RestClient.h" 
RestClient client = RestClient("192.168.100.17",51200); 
String response; 
String PostData; 
void setup() 
{ 
    Serial.begin(9600); 
    byte mac[] = { 0x04, 0xD6, 0x2E, 0x81, 0x01, 0xB0 }; 

    if (Ethernet.begin(mac) == 0) { 
    Serial.println("Failed to configure Ethernet using DHCP"); 
    } 
    delay(1000); 
    Serial.println(Ethernet.localIP()); 
} 

void postDataToServer(long rfidnumber,int rfidsource){ 
    String postedRFIDNumber=String(rfidnumber); 
    postedRFIDNumber="000"+postedRFIDNumber; 
    response = ""; 
    PostData="RFID="+postedRFIDNumber+"&SOURCE="+rfidsource; 
    const char * myPost = PostData.c_str(); 
    int statusCode = 
client.post("/sqlpublish/TTSWebService.asmx/INSERT_INDEXRFID",myPost,&response); 
} 
우리는 회사에 우리의 시스템을 설치해야

이 회사는 자체 로컬 네트워크를 가지고 그들은 아주 제한된 로컬 네트워크가 있습니다. 네트워크에 연결할 수는 있지만 권한없이 "www"로 갈 수는 없지만 문제가되지 않습니다 .Windows 서버를 사용하기 때문에 로컬 연결 만 사용합니다. 로컬 네트워크 내부

다음은 네트워크 시스템 스키마의 그림입니다. Normal Network Configuration 이 그림에서는 스위치가 빠져 있지만 간단히 말해서 많은 물건을 사용한다고 추측 할 수 있습니다. 회사가 매우 넓고 많은 장치가 있기 때문에.

로컬 네트워크에 어떤 장치를 연결하면이 장치는 dhcp protocals를 먼저 호출하여 Windows DHCP 서버에서 IP를 가져온 다음 로컬 네트워크에서 다른 장치와 통신 할 수 있습니다. 그러나 라우터에 방화벽이 있기 때문에 인터넷 모뎀을 통과 할 수 없습니다.

그런 다음 우리는이 같은 설정 우리의 시스템을 것이다 :이 설정 스위치 모델에서 our needed setup arduino

은 "AVAYA".

VSP7000의 XLS ERS4826 GTS-PWR + ERS3549 GTS-PWR +

방화벽은 다음과 같습니다 우리가 설정 이상한 시스템 뭔가 일이 벌어지고 WatchGuard의 파이어 M300

. 우선 PC (내 장치)를 로컬 네트워크에 연결할 때 Windows 서버에서 웹 서비스를 호출 할 수 있습니다. 그러나 Arduino는 DHCP 서버로부터 IP를 얻을 수 없으며, 자연계는 웹 서비스에 연결할 수 없습니다. 그래서 우리는 "ok 우리는 정적 IP를 줄 수있다"고 생각합니다. 우리는 Arduino에 IP를 수동으로 제공 할 것입니다. 그 후에 이상한 일들이 시작되기 시작했다. Arduino가 Windows 웹 서비스를 제공하려고 시도 할 때만 응답을받을 수 있습니다. 대략 20 명 중 1 명은 서버로부터 응답을 얻었습니다.또한 응답 시간도 너무 길어졌습니다.

정적 arduino IP를 다른 장치 (예 : Device_1)에서 ping하면 가끔씩 응답을받습니다. (같은 금액)

그렇다면 우리는 문제의 범위를 좁히려 고 노력합니다.

우선 처음으로 로컬 네트워크에 문제가 있는지 확인하기 위해 한 번만 설정을 변경합니다.

changed version

그리고 Normaly 모든 시스템

완벽하게 작동합니다. 그래서 우리의 모뎀의 DHCP 서버는 완벽하게 작동합니다. (또한이 설정에서 정적 IP를 주면 너무 효과적입니다.)

이렇게 연결 오류에 대한 가능성이 있습니다.

1 방화벽 2 스위치 문제 3-Arduino Clon 문제. 우리는 시스템 관리자의 문제에 대해 이야기

1-방화벽

는, 그는 모든 로컬 네트워크 연결 ust이 말했다와 포트는 방화벽에 열려 있습니다. 로컬 네트워크에 연결된 모든 PC가 웹 서비스를 호출 할 수 있기 때문에 그는 아마도 옳습니다.

2 스위치 문제

This Question, 그것이 문제가 해결되지 않은 우리의 경우 고정 IP, BU를 사용라는 솔루션으로 그것에 대해 이야기합니다.

In this Question는 메이크업 감각 대답 jdr5ca하지만 문제 마지막으로 this postIn this Question answer tried but not working.

을 문제를 테스트하거나 해결할 수있는 방법을 모르고 HVE 없지만, 너무 일반적이다. 또한 ı가 윈도우에서 "arping"을 대체 할 수 있도록 사용해야합니다.

3-Arduino Clon Problem.

우리는

나는 모두를 통보, 원래 아두 이노와 함께 다음 주를보십시오.

그럼, 모든 제안, 도구 또는 문제 진단 도구를 사용하여 모든 제안을 열어 놓았습니다.

답변

1

분명히 우리의 문제는 특정 스위치 모델입니다! https://www.zyxel.com/tr/tr/products_services/es_108a.shtml?t=p (ZYXEL ES-108E) 우리가 직접 네트워크에있는 다른 장치에서 ZYXEL 스위치 아두 이노와 핑 아두 이노를 연결하면

는 핑의 일부가 성공적으로 (대략 15 % 성공). 여기

모델입니다 .

그러나 다른 스위치 모델을 사용하거나 zyxel 스위치에 직접 연결하지 않으면 정상적으로 작동합니다.

저는 zyxel과 작동하지 않는 이유를 모르지만 문제는 스위치입니다!