[Gelöst] Ardiuno - merkwürdiges Problem beim Start mit W5100-Shield

Begonnen von pula, 15 Juli 2015, 14:47:42

Vorheriges Thema - Nächstes Thema

pula

Hallo,

das könnte jetzt ein wenig OT sein, ich probier es trotzdem, vielleicht kennt ja jemand das Problem...

Habe einen Arduino R3 mit einem Configurable Firmata Sketch für die Schaltung einer Zirkulationspumpe programmiert, was so weit auch funktioniert.
Nun habe ich ein externes Netzteil 9V an die Strombuchse des Arduino gehängt. Wenn ich jetzt die Stromversorgung anschalte, blinkt auf den R3 die grüne LED bei TX und seltener auch die neben AREF. Sketch wird offenbar nicht geladen/ausgeführt. Erst wenn ich den Reset-Taster des Arduino drücke funktioniert alles. Ist ein wenig nervig, da der Arduino in den Keller kommen soll und ich nicht jedes mal nach einem Stromausfall (wohne auf dem Land) in den Keller laufen möchte.
Kennt jemand dieses Verhalten? Wenn der Arduino an der USB-Buchse eines Rechners oder 5V von einem PC-Netzteil an VIN hängt, tritt das nicht auf und alles funktioniert direkt nach dem Einschalten.

Da ich nicht denke, daß das mit dem Sketch zusammenhängt, lade ich den vorerst mal nicht hier rein, falls nötig kann ich das gerne nacholen....

?ratlos?

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

JoWiemann

Hallo,

welches Netzteil und Kenndaten würden schon mal weiter helfen.

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

pula

#2
Hi,

stimmt, sorry. Es ist ein Steckernetzteil von ali**** - 9V 1000mA - sollte von daher also locker ausreichen für den UNO mit Ethernet-Shield...

fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

AxelSchweiss

Wahrscheinlich braucht das Netzteil zu lange um die Spannung/Dtrom zu stabilisieren.
D.h. Der Arduino bootet mit zu geringer Leistung nicht sauber.
Wenn du dannauf den Reset drückst ist die Spannung aber bereits stabil.

Hatte schon so ähnliche Phänomene bei Unterversorgung.
Z.B. Das ein NIC zwar bootet aber keine IP via DHCP annimmt ... Usw.
Die Probleme hingen alle mit der Stromversorgung ( und hier meine ich Strom) zusammen.

Häng mal ein Oszi dran und schau dir das Einschwingverhalten an.

Oder ... Du hast den Arduino gekillt ... Soll auch vorkommen ;-)


pula

Hi,

danke für Deine Antwort. Leider hab ich kein Oszi...
Die Erklärung leuchtet ein, aber das Verhalten ist auch so, wenn das Netzteil bereits läuft und ich nur VIN stecke...
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

AxelSchweiss

Vielleicht ist auch die Restwelligkeit zu groß.
Nimm doch mal so einen DC-DC Wandler auf 5 Volt dazwischen.
Diese Netzteile halten oft nicht das was in der Spec steht.


frank

ZitatEs ist ein Steckernetzteil von ali**** - 9V 1000mA - sollte von daher also locker ausreichen für den UNO mit Ethernet-Shield...
das problem ist eventuell der spg-regulator auf dem uno. siehe zb hier http://electronics.stackexchange.com/questions/127624/arduino-and-ethernet-shield-power-supply

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

pula

Hi,

danke sehr! Hab mir mal bei ali ein paar Wandler bestellt...
Werde berichten, sobald ich sie habe...

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

pula

#8
Hallo,

hat leider auch nix gebracht. Habe einen DC-DC-Wandler dazwischengehängt.
Wenn ich den Arduino damit verbinde (EGAL, ob ich das Steckernetzteil vom Strom trenne oder nur die Vebindung zum Arduino), blinkt nur die TX-Led auf dem Arduino unregelmäßig. Erst, wenn ich händisch den Reset-Button vom Arduino drücke, scheint der Sketch zu booten?!
Direkt am PC-USB-Port tritt das nicht auf. Habe aber auch ein USB-Netzteil versucht, gleiches Verhalten?!
Kennt das jemand? Hilfe wäe echt toll....

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

pula

Hallo,

habe jetzt auch probiert, mit dem DC-DC Wandler mit 5V auf die USB-Buchse zu gehen und mit 8V auf die Strombuchse - das gleiche Verhalten. Könnte das in irgend einer Form am Sketch oder am Bootloader liegen?

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

AxelSchweiss

Hast du schon mal den Arduino getauscht?
Eventuell ist ja doch der Bootloader schuld ... oder der Arduino hat einen Defekt.
Die Dinger mit CH340 kosten ja so gut wie nix mehr.

pula

Hallo,

danke. Aber ich habe es mit einem anderen Arduino UNO R3 und einem anderen W5100-shield probiert, gleiches Ergebnis.
Bin schön langsam ein wenig am Verzweifeln...
Aber aufgeben tut man einen Brief, also werd ich mich wohl oder übel mal damit beschäftigen müssen, wie man einen neuen Bootloader brennt mithilfe eines zweiten UNO....
Nur hab ich davon noch null Ahnung....  :o

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

PeMue

Hallo Pula,

was macht denn der Sketch? Wenn der Arduino eine Zirkulationspumpe steuern soll, hängt da vermutlich ein Relais dran, oder? Wie wird das angesteuert? Kann das ggf. zuviel Strom ziehen?

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

pula

Hallo,

also der bootloader wars auch nicht, hab ihn neu gebrannt - gleiches Ergebnis.

Der Sketch ist ein Configurable Firmata mit einem Relais dran, allerding tritt das Verhalten auch auf, wenn gar nichts mit dem Arduino verbunden ist (außer Strom, Netzwerk und das ether-shield). Die Vermutung mit dem Strom hatte ich auch schon.

Benutze folgenden Sketch:

/*
* Firmata is a generic protocol for communicating with microcontrollers
* from software on a host computer. It is intended to work with
* any host computer software package.
*
* To download a host software package, please click on the following link
* to open the download page in your default browser.
*
* http://firmata.org/wiki/Download
*/

/*
  Copyright (C) 2006-2008 Hans-Christoph Steiner.  All rights reserved.
  Copyright (C) 2010-2011 Paul Stoffregen.  All rights reserved.
  Copyright (C) 2009 Shigeru Kobayashi.  All rights reserved.
  Copyright (C) 2009-2013 Jeff Hoefs.  All rights reserved.
  Copyright (C) 2013 Norbert Truchsess. All rights reserved.
  Copyright (C) 2014 Nicolas Panel. All rights reserved.

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License as published by the Free Software Foundation; either
  version 2.1 of the License, or (at your option) any later version.

  See file LICENSE.txt for further informations on licensing terms.

  formatted using the GNU C formatting and indenting
*/


#include <Firmata.h>

/*
* by default Firmata uses the Serial-port (over USB) of Arduino.
* ConfigurableFirmata may also comunicate over ethernet using tcp/ip.
* To configure this 'Network Firmata' to use the original WIZ5100-based
* ethernet-shield or Arduino Ethernet uncomment the includes of 'SPI.h' and 'Ethernet.h':
*/

#include <SPI.h>
#include <Ethernet.h>

/*
* To configure 'Network Firmata' to use an ENC28J60 based board include
* 'UIPEthernet.h' (no SPI.h required). The UIPEthernet-library can be downloaded
* from: https://github.com/ntruchsess/arduino_uip
*/

//#include <UIPEthernet.h>

/*
* To execute Network Firmata on Yun uncomment Bridge.h and YunClient.h.
* Do not include Ethernet.h or SPI.h in this case.
* On Yun there's no need to configure local_ip and mac in the sketch
* as this is configured on the linux-side of Yun.
*/

//#include <Bridge.h>
//#include <YunClient.h>

#if defined ethernet_h || defined UIPETHERNET_H || defined _YUN_CLIENT_H_
/*==============================================================================
* Network configuration for Network Firmata
*============================================================================*/
#define NETWORK_FIRMATA
//replace with ip of server you want to connect to, comment out if using 'remote_host'
#define remote_ip IPAddress(192,168,1,11)
//replace with hostname of server you want to connect to, comment out if using 'remote_ip'
//#define remote_host "server.local"
//replace with the port that your server is listening on
#define remote_port 3031
//replace with arduinos ip-address. Comment out if Ethernet-startup should use dhcp. Is ignored on Yun
#define local_ip IPAddress(192,168,1,81)  //zirkulation: .67
//replace with ethernet shield mac. It's mandatory every device is assigned a unique mac. Is ignored on Yun
const byte mac[] = {0x93, 0xA1, 0xDB, 0x0D, 0x07, 0x02};
#endif

// To configure, save this file to your working directory so you can edit it
// then comment out the include and declaration for any features that you do
// not need below.

// Also note that the current compile size for an Arduino Uno with all of the
// following features enabled is about 22.4k. If you are using an older Arduino
// or other microcontroller with less memory you will not be able to include
// all of the following feature classes.

#include <utility/DigitalInputFirmata.h>
DigitalInputFirmata digitalInput;

#include <utility/DigitalOutputFirmata.h>
DigitalOutputFirmata digitalOutput;

#include <utility/AnalogInputFirmata.h>
AnalogInputFirmata analogInput;

#include <utility/AnalogOutputFirmata.h>
AnalogOutputFirmata analogOutput;

//#include <Servo.h> //wouldn't load from ServoFirmata.h in Arduino1.0.3
//#include <utility/ServoFirmata.h>
//ServoFirmata servo;

//#include <Wire.h> //wouldn't load from I2CFirmata.h in Arduino1.0.3
//#include <utility/I2CFirmata.h>
//I2CFirmata i2c;

//#include <utility/OneWireFirmata.h>
//OneWireFirmata oneWire;

//#include <utility/StepperFirmata.h>
//StepperFirmata stepper;

#include <utility/FirmataExt.h>
FirmataExt firmataExt;

#include <utility/FirmataScheduler.h>
FirmataScheduler scheduler;

#include <utility/EncoderFirmata.h>
EncoderFirmata encoder;


// dependencies. Do not comment out the following lines
#if defined AnalogOutputFirmata_h || defined ServoFirmata_h
#include <utility/AnalogWrite.h>
#endif

#if defined AnalogInputFirmata_h || defined I2CFirmata_h || defined EncoderFirmata_h
#include <utility/FirmataReporting.h>
FirmataReporting reporting;
#endif

// dependencies for Network Firmata. Do not comment out.
#ifdef NETWORK_FIRMATA
#if defined remote_ip && defined remote_host
#error "cannot define both remote_ip and remote_host at the same time!"
#endif
#include <utility/EthernetClientStream.h>
#ifdef _YUN_CLIENT_H_
YunClient client;
#else
EthernetClient client;
#endif
#if defined remote_ip && !defined remote_host
#ifdef local_ip
EthernetClientStream stream(client, local_ip, remote_ip, NULL, remote_port);
#else
EthernetClientStream stream(client, IPAddress(0, 0, 0, 0), remote_ip, NULL, remote_port);
#endif
#endif
#if !defined remote_ip && defined remote_host
#ifdef local_ip
EthernetClientStream stream(client, local_ip, IPAddress(0, 0, 0, 0), remote_host, remote_port);
#else
EthernetClientStream stream(client, IPAddress(0, 0, 0, 0), IPAddress(0, 0, 0, 0), remote_host, remote_port);
#endif
#endif
#endif

/*==============================================================================
* FUNCTIONS
*============================================================================*/

void systemResetCallback()
{
  // initialize a defalt state

  // pins with analog capability default to analog input
  // otherwise, pins default to digital output
  for (byte i = 0; i < TOTAL_PINS; i++) {
    if (IS_PIN_ANALOG(i)) {
#ifdef AnalogInputFirmata_h
      // turns off pullup, configures everything
      Firmata.setPinMode(i, ANALOG);
#endif
    } else if (IS_PIN_DIGITAL(i)) {
#ifdef DigitalOutputFirmata_h
      // sets the output to 0, configures portConfigInputs
      Firmata.setPinMode(i, OUTPUT);
#endif
    }
  }

#ifdef FirmataExt_h
  firmataExt.reset();
#endif
}

/*==============================================================================
* SETUP()
*============================================================================*/

void setup()
{
  delay(1000);
#ifdef NETWORK_FIRMATA
#ifdef _YUN_CLIENT_H_
  Bridge.begin();
#else
#ifdef local_ip
  Ethernet.begin((uint8_t *)mac, local_ip); //start ethernet
#else
  Ethernet.begin((uint8_t *)mac); //start ethernet using dhcp
#endif
#endif
  delay(1000);
#endif
  Firmata.setFirmwareVersion(FIRMATA_MAJOR_VERSION, FIRMATA_MINOR_VERSION);

#if defined AnalogOutputFirmata_h || defined ServoFirmata_h
  /* analogWriteCallback is declared in AnalogWrite.h */
  Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
#endif

#ifdef FirmataExt_h
#ifdef DigitalInputFirmata_h
  firmataExt.addFeature(digitalInput);
#endif
#ifdef DigitalOutputFirmata_h
  firmataExt.addFeature(digitalOutput);
#endif
#ifdef AnalogInputFirmata_h
  firmataExt.addFeature(analogInput);
#endif
#ifdef AnalogOutputFirmata_h
  firmataExt.addFeature(analogOutput);
#endif
#ifdef ServoFirmata_h
  firmataExt.addFeature(servo);
#endif
#ifdef I2CFirmata_h
  firmataExt.addFeature(i2c);
#endif
#ifdef OneWireFirmata_h
  firmataExt.addFeature(oneWire);
#endif
#ifdef StepperFirmata_h
  firmataExt.addFeature(stepper);
#endif
#ifdef FirmataReporting_h
  firmataExt.addFeature(reporting);
#endif
#ifdef FirmataScheduler_h
  firmataExt.addFeature(scheduler);
#endif
#ifdef EncoderFirmata_h
  firmataExt.addFeature(encoder);
#endif
#endif
  /* systemResetCallback is declared here (in ConfigurableFirmata.ino) */
  Firmata.attach(SYSTEM_RESET, systemResetCallback);

  // Network Firmata communicates with Ethernet-shields over SPI. Therefor all
  // SPI-pins must be set to IGNORE. Otherwise Firmata would break SPI-communication.
  // add Pin 10 and configure pin 53 as output if using a MEGA with Ethernetshield.
  // No need to ignore pin 10 on MEGA with ENC28J60, as here pin 53 should be connected to SS:
#ifdef NETWORK_FIRMATA
  // ignore SPI and pin 4 that is SS for SD-Card on Ethernet-shield
  for (byte i = 0; i < TOTAL_PINS; i++) {
    if (IS_PIN_SPI(i)
        || 4 == i
        // || 10==i //explicitly ignore pin 10 on MEGA as 53 is hardware-SS but Ethernet-shield uses pin 10 for SS
       ) {
      Firmata.setPinMode(i, IGNORE);
    }
  }
  //  pinMode(PIN_TO_DIGITAL(53), OUTPUT); configure hardware-SS as output on MEGA
  pinMode(PIN_TO_DIGITAL(4), OUTPUT); // switch off SD-card bypassing Firmata
  digitalWrite(PIN_TO_DIGITAL(4), HIGH); // SS is active low;

  // start up Network Firmata:
  Firmata.begin(stream);
#else
  // start up the default Firmata using Serial interface:
  Firmata.begin(57600);
#endif
  systemResetCallback();  // reset to default config
}

/*==============================================================================
* LOOP()
*============================================================================*/
void loop()
{
#ifdef DigitalInputFirmata_h
  /* DIGITALREAD - as fast as possible, check for changes and output them to the
   * stream buffer using Firmata.write()  */
  digitalInput.report();
#endif

  /* STREAMREAD - processing incoming messagse as soon as possible, while still
   * checking digital inputs.  */
  while (Firmata.available()) {
    Firmata.processInput();
#ifdef FirmataScheduler_h
    if (!Firmata.isParsingMessage()) {
      goto runtasks;
    }
  }
  if (!Firmata.isParsingMessage()) {
runtasks: scheduler.runTasks();
#endif
  }

  /* SEND STREAM WRITE BUFFER - TO DO: make sure that the stream buffer doesn't go over
   * 60 bytes. use a timer to sending an event character every 4 ms to
   * trigger the buffer to dump. */

#ifdef FirmataReporting_h
  if (reporting.elapsed()) {
#ifdef AnalogInputFirmata_h
    /* ANALOGREAD - do all analogReads() at the configured sampling interval */
    analogInput.report();
#endif
#ifdef I2CFirmata_h
    // report i2c data for all device with read continuous mode enabled
    i2c.report();
#endif
#ifdef EncoderFirmata_h
    // report encoders positions if reporting enabled.
    encoder.report();
#endif
  }
#endif
#ifdef StepperFirmata_h
  stepper.update();
#endif
#if defined NETWORK_FIRMATA && !defined local_ip &&!defined _YUN_CLIENT_H_
  if (Ethernet.maintain())
  {
    stream.maintain(Ethernet.localIP());
  }
#endif
}
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

AxelSchweiss

#14
Vielleicht hilft es wenn ich dir meine ähnliche Konstellation zeige.
Am Anfang , bei Spannungsversorgung über die USB-Buchse des Arduino, hats auch nicht funktioniert.
Total komisches Verhalten beim Netzwerk (DHCP)
Nachdem ich die Spannung (bei gleichem Netzteil) dann direkt (schwarzes und weisses Kabel) angelegt hatte funktionierts ... seit fast 2 Monaten ohne Probleme.
Ein Stromfresser ist übrigens der Luftsensor da er beheizt wird. (Der W5100 ist auch nicht gerade sparsam)
Der ganze Aufbau brauch etwas über 300mA.
Ich häng hier mal ein paar Bilder von meinem Aufbau dran.

pula

Hallo,

habe ich gerade hoffnungsfroh ausprobiert. Leider das gleiche Ergebnis... :-(
Ich werde mal irgend einen 08/15-Sketch probieren und schauen, ob das Ergebnis das gleiche ist...
Was wirklich schräg ist: Beim ersten mal Strom verbinden bootet der Arduino scheinbar nicht ordentlich, wenn ich dann den Reset drücke, gehts eigentlich immer....

fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

pula

Update:

Scheint ein spezifisches Problem des wiznet-shields zu sein:

http://forum.arduino.cc/index.php?topic=15257.0

Werde mir das genauer ansehen, hab aber grad keine 100nF Kondensatoren da. Werde hier posten, falls ich eine Lösung finde (um anderen zu helfen, die vielleicht auch mal das Problem haben...)

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

pula

Hmm....

ich hatte anscheinend ZWEI defekte shields UND ein defektes Netzwerk-Kabel... Da hat Murphy wirklich gnadenlos zugeschlagen :-(

Danke an alle, die sich an der Fehlersuche beteiligt haben!!!
Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

pula

#18
Ich hol das Thema jetzt noch mal vor, weil ich (endlich) eine wirkliche Lösung gefunden habe.
Das Problem liegt scheinbar darin, daß die günstigen China W5100-Clones bzw Arduino-Clones nicht ganz so funktionieren wie die Originale. Das Shield braucht ein wenig länger zum starten als der Arduino.

Was bei mir jetzt bei mehreren Arduinos und W5100-Shields funktioniert hat (sh hier: http://tigawd.blogspot.co.at/2015/05/arduino-uno-clone-and-w5100-ethernet.html) ist ein kleines RC-Netzwerk zwischen GND und RESET des Shields:
1 Kondensator mit 220uF und ein Widerstand mit 200 Ohm.
GND --> minus vom Kondensator --> Widerstand --> RESET.
Damit bleibt der Arduino im Reset-Status, bis sich der Kondensator geladen hat (44ms laut der Seite) und erst dann wird ein Reset durchgeführt, der beide Komponenten richtig startet.

Habe das jetzt etliche Male mit einer Arduino/Shield-Kombination getestet, die bisher immer ein Reset nach Stromunterbrechung gebraucht hat. Hat bis jetzt jedes mal funktioniert und das Netzwerk hat sich verbunden mit dem richtigen Sketch.

Vielleicht kann das außer mir noch jemand brauchen.

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram