【问题标题】:arduino Ethernet ENC28J60arduino以太网ENC28J60
【发布时间】:2015-11-18 07:46:26
【问题描述】:

嗨,我是使用 ENC28J60 的绝对新手,我想将一些数据上传到我的服务器(在 php 中):

我从 0fees 获取一个 php 托管,现在我可以使用:http://ashutest123.0fees.us/dataupload1.php?data=somedata 将数据发送到我的服务器,并检查表中上传的数据列表为http://ashutest123.0fees.us/showdata.php——你可以自己查看。

我使用 UIPEthernet lib 编写了一个 arduino 代码(使用来自 ebay.in 的 Aruino Uno 和 ENC28J60 模块)

#include <UIPEthernet.h> // Used for Ethernet

// **** ETHERNET SETTING ****
// Arduino Uno pins: 10 = CS, 11 = MOSI, 12 = MISO, 13 = SCK
// Ethernet MAC address - must be unique on your network - MAC Reads T4A001 in hex (unique in your network)
byte mac[] = { 0x54, 0x34, 0x41, 0x30, 0x30, 0x31 };                                      
// For the rest we use DHCP (IP address and such)

EthernetClient client;
char server[] = "ashutest123.0fees.us"; // IP Adres (or name) of server to dump data to
int  interval = 5000; // Wait between dumps

void setup() {

  Serial.begin(9600);
  Ethernet.begin(mac);

  Serial.println("Tweaking4All.com - Temperature Drone - v2.0");
  Serial.println("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
  Serial.print("IP Address        : ");
  Serial.println(Ethernet.localIP());
  Serial.print("Subnet Mask       : ");
  Serial.println(Ethernet.subnetMask());
  Serial.print("Default Gateway IP: ");
  Serial.println(Ethernet.gatewayIP());
  Serial.print("DNS Server IP     : ");
  Serial.println(Ethernet.dnsServerIP());
}

void loop() {
  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("-> Connected");
    // Make a HTTP request:
    client.print( "GET /dataupload1.php?");
    client.print("data=");
    client.print( "somedata" );
    client.println( " HTTP/1.1");
    client.print( "Host: " );
    client.println(server)
    client.println( "Connection: close" );
    client.println();
    client.println();
    client.stop();
  }
  else {
    // you didn't get a connection to the server:
    Serial.println("--> connection failed/n");
  }

  delay(interval);
}

当我在串行监视器中运行它时,它会将所有 ip、dns、网关等地址显示为 0.0.0.0 ---- 似乎没有获得 dhcp 然后显示“已连接”

没有数据进入我的服务器

请帮帮我,我需要它

提前致谢

【问题讨论】:

    标签: arduino ethernet


    【解决方案1】:

    您可能想试试这个示例代码,它可能会帮助您了解您的问题以及问题的来源。

    #include <SPI.h>
    #include <Ethernet.h>
    
    // Enter a MAC address for your controller below.
    // Newer Ethernet shields have a MAC address printed on a sticker on the shield
    byte mac[] = {
      0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02
    };
    
    // Initialize the Ethernet client library
    // with the IP address and port of the server
    // that you want to connect to (port 80 is default for HTTP):
    EthernetClient client;
    
    void setup() {
      // Open serial communications and wait for port to open:
      Serial.begin(9600);
      // this check is only needed on the Leonardo:
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
    
      // start the Ethernet connection:
      if (Ethernet.begin(mac) == 0) {
        Serial.println("Failed to configure Ethernet using DHCP");
        // no point in carrying on, so do nothing forevermore:
        for (;;)
          ;
      }
      // print your local IP address:
      printIPAddress();
    }
    
    void loop() {
    
      switch (Ethernet.maintain())
      {
        case 1:
          //renewed fail
          Serial.println("Error: renewed fail");
          break;
    
        case 2:
          //renewed success
          Serial.println("Renewed success");
    
          //print your local IP address:
          printIPAddress();
          break;
    
        case 3:
          //rebind fail
          Serial.println("Error: rebind fail");
          break;
    
        case 4:
          //rebind success
          Serial.println("Rebind success");
    
          //print your local IP address:
          printIPAddress();
          break;
    
        default:
          //nothing happened
          break;
    
      }
    }
    
    void printIPAddress()
    {
      Serial.print("My IP address: ");
      for (byte thisByte = 0; thisByte < 4; thisByte++) {
        // print the value of each byte of the IP address:
        Serial.print(Ethernet.localIP()[thisByte], DEC);
        Serial.print(".");
      }
    
      Serial.println();
    }
    

    然后,我让您使用自定义函数编辑代码,以获取您可能需要的所有信息。

    请注意,即使您在 DHCP 范围内设置硬编码 IP 地址,它也可以正常工作。

    V.

    【讨论】:

      猜你喜欢
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多