Не работает Arduino mega 2560 + EthernetShield + Ethernet.h

Тема в разделе "Arduino & Shields", создана пользователем nkYellOw, 30 сен 2018.

  1. nkYellOw

    nkYellOw Нерд

    Всем привет!
    В общем, пытаюсь в локалку завести ардуино мегу 2560 + ethernet shield используя библиотеку Ethernet.h
    фото http://joxi.ru/nAyBap6sgjKJbr http://joxi.ru/4AkvVLESoXZ312 Пробовал менять шилды и мегу. У меня их несколько комплектов...
    Питание давал на мегу как с юсб компа так и с розетки 12в 1А

    пишет MAC и выводит мак из переменной а дальше висит долго долго и ничего не происходит =(

    Код (C++):
    #include <EtherCard.h>
    #include <IPAddress.h>

    static byte mymac[] = { 0x78, 0x32, 0x1B, 0x48, 0x3B, 0x4F };

    byte Ethernet::buffer[700];

    void setup () {
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }
      Serial.println("[testDHCP]");

      Serial.print("MAC: ");
      for (byte i = 0; i < 6; ++i) {
        Serial.print(mymac[i], HEX);
        if (i < 5)
          Serial.print(':');
      }
      Serial.println();

      if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
        Serial.println("Failed to access Ethernet controller");

      Serial.println("Setting up DHCP");
      if (!ether.dhcpSetup())
        Serial.println("DHCP failed");

      Serial.print(IPAddress(ether.gwip));
      // ether.printIp("Netmask: ", ether.netmask);
      //ether.printIp("GW IP: ", ether.gwip);
      //ether.printIp("DNS IP: ", ether.dnsip);
    }

    void loop () {
      ether.packetLoop(ether.packetReceive());
    }
     
  2. SergeiL

    SergeiL Оракул Модератор

    А чип какой стоит на шилде, W5100 или W5500? По фото не видно.
     
    nkYellOw нравится это.
  3. ProКир

    ProКир Нерд

    W5100. Если приглядеться, то можно и увидеть.
     
    nkYellOw нравится это.
  4. nkYellOw

    nkYellOw Нерд

    5100
     
  5. ZAZ-965

    ZAZ-965 Гуру

    @nkYellOw, вы пишете, что используете библиотеку Ethernet, а судя по заголовочному файлу EtherCard.h и коду - библиотеку EtherCard - Hardware: This library only supports the ENC28J60 chip.
     
    nkYellOw нравится это.
  6. nkYellOw

    nkYellOw Нерд

    С самого начала я пробовал использовать библиотеку ethernet.h и дефолтный скетч проверки ип адреса из списка ардуино ИДЕ.
    вот код, тоже не работает. Весь код отрабатывал дома, начал грешить на роутеры, на работе все так же не работает. Значит проблема в оборудовании, либо в коде... =( хотя в дефолтном коде маловероятно что будет косяк =(((

    Код (C++):
    /*
      DHCP-based IP printer

      This sketch uses the DHCP extensions to the Ethernet library
      to get an IP address via DHCP and print the address obtained.
      using an Arduino Wiznet Ethernet shield.

      Circuit:
       Ethernet shield attached to pins 10, 11, 12, 13

      created 12 April 2011
      modified 9 Apr 2012
      by Tom Igoe
      modified 02 Sept 2015
      by Arturo Guadalupi

    */


    #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[] = {
      0x78, 0x32, 0x1B, 0x48, 0x3B, 0x4F
    };

    //static byte mymac[] = { 0x78, 0x32, 0x1B, 0x48, 0x3B, 0x4F };


    void setup() {
      // You can use Ethernet.init(pin) to configure the CS pin

    // ПРОБОВАЛ С ИНИЦИАЛИЗАЦИЕЙ И БЕЗ...

      //Ethernet.init(10);  // Most Arduino shields
      //Ethernet.init(5);   // MKR ETH shield
      //Ethernet.init(0);   // Teensy 2.0
      //Ethernet.init(20);  // Teensy++ 2.0
      //Ethernet.init(15);  // ESP8266 with Adafruit Featherwing Ethernet
      //Ethernet.init(33);  // ESP32 with Adafruit Featherwing Ethernet

      // Open serial communications and wait for port to open:
      Serial.begin(9600);
      while (!Serial) {
        ; // wait for serial port to connect. Needed for native USB port only
      }

      // start the Ethernet connection:
      Serial.println("Initialize Ethernet with DHCP:");
      if (Ethernet.begin(mac) == 0) {
        Serial.println("Failed to configure Ethernet using DHCP");
        if (Ethernet.hardwareStatus() == EthernetNoHardware) {
          Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
        } else if (Ethernet.linkStatus() == LinkOFF) {
          Serial.println("Ethernet cable is not connected.");
        }
        // no point in carrying on, so do nothing forevermore:
        while (true) {
          delay(1);
        }
      }
      // print your local IP address:
      Serial.print("My IP address: ");
      Serial.println(Ethernet.localIP());
    }

    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:
          Serial.print("My IP address: ");
          Serial.println(Ethernet.localIP());
          break;

        case 3:
          //rebind fail
          Serial.println("Error: rebind fail");
          break;

        case 4:
          //rebind success
          Serial.println("Rebind success");
          //print your local IP address:
          Serial.print("My IP address: ");
          Serial.println(Ethernet.localIP());
          break;

        default:
          //nothing happened
          break;
      }
    }
     
     
    Последнее редактирование: 2 окт 2018
  7. nkYellOw

    nkYellOw Нерд

    Разобрался в чем проблема... Припаянный резистор на 511 ом вместо резистора на 51 ом. Как решу проблему, отпишу что сделал. Мало ли кто столкнется с кривыми руками китайцев...
     
    ProКир и SergeiL нравится это.
  8. SergeiL

    SergeiL Оракул Модератор

    Да, слышал про это, поэтому покупал Ethernet Shield от Амперки, работает нормально.
    Покупаю 3-4 платы в год, поэтому готов чуть переплатить, но быть уверенным в железе.
     
    ProКир, nkYellOw и Mitrandir нравится это.
  9. nkYellOw

    nkYellOw Нерд

    Ну у меня был проект под 10 плат, потом проект слился а аппараты остались(китайские), сейчас решил поковыряться, что бы не покупать, пока перепаяю что есть, но дополнительно амперка завтра привезет хорошую плату, что бы не устраивать себе геморой. Спасибо!
     
    ProКир нравится это.
  10. nkYellOw

    nkYellOw Нерд

    Решил проблему. Переворачиваем шилд так что бы эзернет вход был снизу и смотрел от вас. Там есть 8 пятачков около эзернет шилда. Слева направо :
    резистор 100 Ом между первым и вторым пятачком. резистор 100 Ом между третьим и шестым пятачком. И все у вас заработает)))
     
    Svyatslav нравится это.
  11. ProКир

    ProКир Нерд

    Хорошо, что все заработало! Спасибо!(ну я просто ещё такую плату имею, но никогда не проверял, потому что, друг сказал, что все работает. Да и подключать его не к чему...)
     
    nkYellOw нравится это.