Совместная работа Ethernet shield и N Fet

Тема в разделе "Arduino & Shields", создана пользователем Archibaldi, 4 дек 2019.

  1. Archibaldi

    Archibaldi Нуб

    Имеется Iskra Neo, Ethernet Shield и сборка силовых ключей N-Fet.
    У шилда все джамперы на месте, а N Fetу назначен пин А0.
    Так вот проблема: по отдельности шилд и N-Fet прекрасно работают, но стоит их подключить одновременно - отваливается сеть.
    Шилд сидит над Iskra, а N-Fet подключен 3мя контактами: SCK в SCK, DI в MOSI, CS в А0.
    Помогите новичку правильно подключить, чтобы оба модуля работали.
     
  2. parovoZZ

    parovoZZ Гуру

    Схему покажи. На словах не воспринимается.
     
  3. NikitOS

    NikitOS Король шутов Администратор

    И код тоже
     
  4. Archibaldi

    Archibaldi Нуб

    Вот чисто для проверки запускаю код с примером:

    Код (C++):
    #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[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

    // if you don't want to use DNS (and reduce your sketch size)
    // use the numeric IP instead of the name for the server:
    //IPAddress server(74,125,232,128);  // numeric IP for Google (no DNS)
    char server[] = "www.google.com";    // name address for Google (using DNS)

    // Set the static IP address to use if the DHCP fails to assign
    IPAddress ip(192, 168, 3, 206);
    IPAddress myDns(192, 168, 3, 180);

    // 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;

    // Variables to measure the speed
    unsigned long beginMicros, endMicros;
    unsigned long byteCount = 0;
    bool printWebData = true;  // set to false for better speed measurement

    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");
        // Check for Ethernet hardware present
        if (Ethernet.hardwareStatus() == EthernetNoHardware) {
          Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
          while (true) {
            delay(1); // do nothing, no point running without Ethernet hardware
          }
        }
        if (Ethernet.linkStatus() == LinkOFF) {
          Serial.println("Ethernet cable is not connected.");
        }
        // try to congifure using IP address instead of DHCP:
        Ethernet.begin(mac, ip, myDns);
      } else {
        Serial.print("  DHCP assigned IP ");
        Serial.println(Ethernet.localIP());
      }
      // give the Ethernet shield a second to initialize:
      delay(1000);
      Serial.print("connecting to ");
      Serial.print(server);
      Serial.println("...");

      // if you get a connection, report back via serial:
      if (client.connect(server, 80)) {
        Serial.print("connected to ");
        Serial.println(client.remoteIP());
        // Make a HTTP request:
        client.println("GET /search?q=arduino HTTP/1.1");
        client.println("Host: www.google.com");
        client.println("Connection: close");
        client.println();
      } else {
        // if you didn't get a connection to the server:
        Serial.println("connection failed");
      }
      beginMicros = micros();
    }

    void loop() {
      // if there are incoming bytes available
      // from the server, read them and print them:
      int len = client.available();
      if (len > 0) {
        byte buffer[80];
        if (len > 80) len = 80;
        client.read(buffer, len);
        if (printWebData) {
          Serial.write(buffer, len); // show in the serial monitor (slows some boards)
        }
        byteCount = byteCount + len;
      }

      // if the server's disconnected, stop the client:
      if (!client.connected()) {
        endMicros = micros();
        Serial.println();
        Serial.println("disconnecting.");
        client.stop();
        Serial.print("Received ");
        Serial.print(byteCount);
        Serial.print(" bytes in ");
        float seconds = (float)(endMicros - beginMicros) / 1000000.0;
        Serial.print(seconds, 4);
        float rate = (float)byteCount / seconds / 1000.0;
        Serial.print(", rate = ");
        Serial.print(rate);
        Serial.print(" kbytes/second");
        Serial.println();

        // do nothing forevermore:
        while (true) {
          delay(1);
        }
      }
    }
     
    Без соединения N-Fet подключение проходит, а с подключенным N Fet выдаёт "Ethernet shield was not found. Sorry, can't run without hardware.
     
  5. NikitOS

    NikitOS Король шутов Администратор

    А схема-то будет?
     
  6. Archibaldi

    Archibaldi Нуб

    По схемке, пробовал и через тройку шилд подключать - итог одинаков.Вот как тут, только сверху еще бутербродом Ethernet шилд подключен:
    [​IMG]
     
  7. Archibaldi

    Archibaldi Нуб

    Они оба подключаются через SPI. CS шилда это пин 10,а CS Nfetа пин A0.