Arduino Ethernet Shield不接受连接

时间:2014-11-27 17:30:39

标签: tcp arduino ethernet

我一直在玩一个arduino以太网盾,试图让基本的例子工作,但无济于事。这是我的设置:

Arduino Mega 2560通过USB连接到计算机,并且以太网屏蔽层堆叠在其上。我尝试过arduino软件附带的各种示例,但似乎都没有正常工作。经过wirehark的大量调试,我认为:

  • 我无法使用DHCP,因为它只是挂在Ethernet.begin(mac)来电。

  • 当我尝试使用静态IP时,Ethernet.localIP()函数返回0.0.0.0。但是,我可以使用我设置的ip从我的计算机ping我的设备,并且设备似乎正确地接收和发送数据包。现在的问题是由于某种原因它丢弃了tcp连接。这里是我运行的代码最接近工作:

    #include <SPI.h>
    #include <Ethernet.h>
    
    
    byte mac[] = {  
      0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    IPAddress ip(192,168,2,27);
    
    IPAddress server(192,168,2,52); 
    
    EthernetClient client;
    
    void setup() {
      // start the Ethernet connection:
      Ethernet.begin(mac, ip);
     // Open serial communications and wait for port to open:
      Serial.begin(9600);
       while (!Serial) {
        ; // wait for serial port to connect. Needed for Leonardo only
      }
      Serial.println("a");
    
    
    
      delay(1000);
      Serial.println("connecting...");
    
    
      if (client.connect(server, 23)) {
        Serial.println("connected");
      } 
      else {
    
        Serial.println("connection failed");
      }
      Serial.println(Ethernet.localIP());
    }
    
    void loop()
    {
      // if there are incoming bytes available 
      // from the server, read them and print them:
      if (client.available()) {
        char c = client.read();
        Serial.print(c);
      }
    
      // as long as there are bytes in the serial queue,
      // read them and send them out the socket if it's open:
      while (Serial.available() > 0) {
        char inChar = Serial.read();
        if (client.connected()) {
          client.print(inChar); 
        }
      }
    
      // if the server's disconnected, stop the client:
      if (!client.connected()) {
        Serial.println();
        Serial.println("disconnecting.");
        client.stop();
        // do nothing:
        while(true);
      }
    }
    

它基本上是Ethernet / TelnetClient示例。 我在我的电脑上设置了一个telnet服务器。现在这是arduino /计算机交换: screenshot

arduino发送一个RST数据包,但我的服务器继续发送问候语和登录提示。 我尝试使用arduino uno,并尝试断开usb并使用另一个电源。 那么,问题可能是什么呢?

2 个答案:

答案 0 :(得分:0)

奇怪的是,我发现如果插入SD卡且未初始化SD卡,以太网将无法初始化。因此,请取出SD卡或初始化SD卡:

Sd2Card card;
card.init(speed, pinSelect);

我有一些中文(SunFounder)版本的Ethernet Shield,所以它可能与其他制造商的卡无关。

答案 1 :(得分:-1)

问题在于与屏蔽的连接,如果是中文版,有时会出现这种屏障,可能会有短暂的短路。

我尝试断开屏蔽并连接电线,就像arduino website indicate for arduino uno一样(与arduino mega的连接不正确,所以你需要连接像arduino uno)

如果不起作用,请尝试更换arduino盾牌。我有相同盾牌的类似问题,通常问题是与arduino的连接。 如果arduino正确连接,该示例应该有效