Incompatibilidad módulos ethernet w5500 mini y lector de micro sd

Hola

Estoy intentando conectar mediante el bus SPI tanto un modulo ethernet w5500 mini (no integra lector de sd) y un modulo de lectura de tarjetas Micro SD.

Los dos mudulos me funcionan por separado, el problema esta cuando conecto los dos a la vez al arduino mega, el lector de tarjetas si que funciona pero no el modulo ethernet.

El esquema de conexión es sencillo Miso, Mosi, SCK conectado directamente con sus respectivos a los dos módulos en paralelo, el SS del modulo ethernet el pin 10 (creo que no puede ir en otro) y el SS del modulo Micro SD al pin 4.

He descubierto que si desconecto MISO del modulo SD el modulo ethernet vuelve a funcionar(claro esta que así el modulo SD no funciona) y viceversa.

Gracias y un saludo
 

Adjuntos

  • Img_54_5.png
    Img_54_5.png
    11.9 KB · Visitas: 12
  • 8f_W5500_module_1.jpg
    8f_W5500_module_1.jpg
    60 KB · Visitas: 8
  • modulo-para-memoria-micro-sd-y-micro-sdhc.jpg
    modulo-para-memoria-micro-sd-y-micro-sdhc.jpg
    10.2 KB · Visitas: 9
Hola capitanp, gracias por contestar.

He probado a poner en nivel alto y con nivel bajo el pin 4 continuamente y nada el modulo ethernet no funciona.

También probé ha conectar directamente el pin SS del modulo SD ha 5 voltios y nada.

He descubierto que el modulo si que coje la ip que le asigno en el skech y responde a un ping correctamente pero aparte de eso no hace nada mas.
 
Por ahora estoy probando con el código de ejemplo WebServer de la libreria ethernet2.h, sin modificar nada.

lo pego aqui

Código:
#include <SPI.h>
#include <Ethernet2.h>
 
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 177);
 
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
 
void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }
 
 
  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}
 
 
void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          // output the value of each analog input pin
          for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
            int sensorReading = analogRead(analogChannel);
            client.print("analog input ");
            client.print(analogChannel);
            client.print(" is ");
            client.print(sensorReading);
            client.println("<br />");
          }
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        }
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}

También he probado con dos librerías la Ethernet2 y la WIZ Ethernet ambas con idénticos resultados (resultados descritos anteriormente).

Sigo con el mismo problema.
 
Última edición por un moderador:
Tras días de romperme el coco encontré que el problema esta en el lector de tarjetas MicroSD.

Y no me refiero a que mi unidad este estropeada, me refiero al modelo en si de lector de tarjetas MicroSD (Tengo 10 unidades del mismo lector, y probé con 4) .

Me compre este lector SD y todo funciona a la primera.



La pena es que no sea MicroSD.

Estoy buscándolo en formato MicroSD para comprarlo y testearlo.

Si alguien se entera porque el lector no es compatible que informe.

Gracias a todos por vuestra ayuda.
 
Así desde la ignorancia porque no he visto ese lector micro usb pero si el grande porque tengo uno...
Porque el adaptador de 3V3 a 5V no es triestado.
El grande se "full-cutrex", solo lleva unas míseras resistencias, y por cierto, en una de las líneas no lleva nada lo que probablemente dañe la SD a la larga, porque esa línea es "hacia la SD" y no al revés. Sin embargo, en la línea MISO que no hace falta nada si que lleva resistencia.
Creo que la línea es la SS, si no recuerdo mal. Yo le cortaba la pista con un cutter y le ponía una reisistencia, al menos eso hice en el mío.
 
Arriba