RFID-RC522 + Ethernet shield W5100

Salve ragazzi. Ho un arduino uno rev. 3 ed ho anche un grosso problema sperando di risolverlo. Se collego la NFC shield direttamente all'arduino va tutto liscio. Ma se collego la NFC shield all'ethernet shield che è collegata a sua volta sull'arduino, iniziano i problemi. Non mi legge il tag nfc.

In pratica io dovrei leggere un tag nfc, scriverlo su un file all'interno dell'sd e poi prenderlo tramite internet.. Riuscite ad aiutarmi? ditemi voi se devo postare il codice Buona giornata

Il codice o i collegamenti, dato che l'RFID e' collegato in SPI come la ethernet card

l’rfid l’ho collegata come standard ovvero sda 10, sck 13, mosi 11, miso 12 e reset 9
questo è il codice

#include <SD.h>
#include <SPI.h>
#include <RFID.h>
/* Vengono definiti PIN del RFID reader*/
#define SDA_DIO 10
#define RESET_DIO 9
#define delayRead 1000 // Time of delay 

/* Viene creata una istanza della RFID libreria */
RFID RC522(SDA_DIO, RESET_DIO); 
Sd2Card card;
SdVolume volume;
SdFile root;
const int chipSelect = 4;

void setup()
{ 
  Serial.begin(9600);
  /* Abilita SPI*/
  SPI.begin(); 
  /* Viene inizilizzato RFID reader */
  RC522.init();
  Serial.println("Setup");
  Serial.print("\nInitializing SD card...");
  pinMode(53, OUTPUT); 
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
                                                Serial.println("initialization failed");
                                                return;
                                                }
        else {
              Serial.println("Found a mirco SD card");
              }
	myFile = SD.open("file.php", FILE_WRITE);
  if (myFile) {  
                Serial.print("Sto scrivendo nel file...");
                myFile.println(codiceLetto);
                // close the file:
                myFile.close();
                Serial.println("done.");
                }
                  else {
                        // if the file didn't open, print an error:
                        Serial.println("error opening test.txt");
                        }
  
}

void loop()
{
  /* Temporary loop counter */
  byte i;
  
  //Se viene letta una tessera
  if (RC522.isCard())
                      {
                        // Viene letto il suo codice 
                        RC522.readCardSerial();
                        String codiceLetto ="";
                        Serial.println("Codice delle tessera letto:");
                        
                        // Viene caricato il codice della tessera, all'interno di una Stringa
                        for(i = 0; i <= 4; i++)
                        {
                          codiceLetto+= String (RC522.serNum[i],HEX);
                          codiceLetto.toUpperCase();
                        }
                        Serial.println(codiceLetto);
                        delay(delayRead);
                        Serial.println();
                        Serial.println();
                      }
    
  
}

Sposta SDA_DIO su un'altro pin, il 10 e' riservato al CS della ethernet l' 8 ad esempio, visto che e' libero

Ciao, grazie per l’aiuto…
Ho risolto il problema dell’RFID, sia i pin che i collegamenti, sono molto instabili quindi dovrò provvedere a saldarli…

Ora ho un altro problema… Arduino non riesce a scrviere nel file che è dentro la sd…
questo è il codice aggiornato

#include <SD.h>
#include <SPI.h>
#include <RFID.h>
/* Vengono definiti PIN del RFID reader*/
#define SDA_DIO 3
#define RESET_DIO 5
#define delayRead 1000 // Time of delay 

/* Viene creata una istanza della RFID libreria */
RFID RC522(SDA_DIO, RESET_DIO); 
Sd2Card card;
SdVolume volume;
SdFile root;
const int chipSelect = 4;
File myFile;


void setup()
{ 
  Serial.begin(9600);
  /* Abilita SPI*/
  SPI.begin(); 
  /* Viene inizilizzato RFID reader */
  RC522.init();
  Serial.println("Setup");
  Serial.print("\nInitializing SD card...");
  pinMode(53, OUTPUT); 
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
                                                Serial.println("initialization failed");
                                                return;
                                                }
        else {
              Serial.println("Found a mirco SD card");
              }
  
  
  /* Temporary loop counter */
  byte i;
  
  // Se viene letta una tessera
  if (RC522.isCard())
  {
    // Viene letto il suo codice 
    RC522.readCardSerial();
    String codiceLetto ="";
    Serial.println("Codice delle tessera letto:");
    
    // Viene caricato il codice della tessera, all'interno di una Stringa
    for(i = 0; i <= 4; i++)
    {
      codiceLetto+= String (RC522.serNum[i],HEX);
      codiceLetto.toUpperCase();
    }
    Serial.println(codiceLetto);
    delay(delayRead);
    myFile = SD.open("file.php", FILE_WRITE);
if (myFile) {  
                Serial.print("Sto scrivendo nel file...");
                myFile.println(codiceLetto);
                // close the file:
                myFile.close();
                Serial.println("done.");
                }
                  else {
                        // if the file didn't open, print an error:
                        Serial.println("error opening test.txt");
                        }
  

    Serial.println();
    Serial.println();
  }
}



void loop()
{
}

Come fa' a scriverti su SD, visto che prima deve leggere un RFID... e il tutto e' inserito nel Setup ( che esegue solamente una volta al reset ) metti lettura e scrittura nel Loop

Ho risolto tutto… Ora devo passare allo step successivo.
Ovvero io con il seguente codice mi creo ogni volta un file php nella sd.
Il mio intendo è quello di collegare arduino ad un router e io tramite pc collegato alla stessa rete prendere questo file nella sd e farci quello che mi pare.

devo usare webserver o webclient? è possibile?
questo è il codice aggiornato, grazie mille :smiley:

#include <SD.h>
#include <SPI.h>
#include <RFID.h>
#include <Ethernet.h>
/* Vengono definiti PIN del RFID reader*/
#define SDA_DIO 3
#define RESET_DIO 5
#define delayRead 1000 // Time of delay 
/* Viene creata una istanza della RFID libreria */
RFID RC522(SDA_DIO, RESET_DIO); 
const int chipSelect = 4;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(192,168,0,5);
IPAddress ip(192, 168, 0, 177);
EthernetClient client;

void setup()
{ 
  Serial.begin(9600);
  /* Abilita SPI*/
  SPI.begin(); 
  /* Viene inizilizzato RFID reader */
  RC522.init();
  Serial.println("Setup");
  Serial.print("\nInitializing SD card...");
  pinMode(53, OUTPUT); 
  if (!SD.begin(chipSelect)) {
                                                Serial.println("initialization failed");
                                                return;
                                                }
        else {
              Serial.println("Found a mirco SD card");
              }
}



void loop()
{
  /* Temporary loop counter */
  byte i;
  
  // Se viene letta una tessera
  if (RC522.isCard())
  {
    // Viene letto il suo codice 
    RC522.readCardSerial();
    String codiceLetto ="";
    Serial.println("Codice delle tessera letto:");
    
    // Viene caricato il codice della tessera, all'interno di una Stringa
    for(i = 0; i <= 4; i++)
    {
      codiceLetto+= String (RC522.serNum[i],HEX);
      codiceLetto.toUpperCase();
    }
    Serial.println(codiceLetto);
    delay(delayRead);
    if (SD.exists("file.php"))
    {
      SD.remove("file.php");
      Serial.println("Sto eliminando il vecchio file");
     }
     
    File myFile = SD.open("file.php", FILE_WRITE);
if (myFile) {  
                Serial.print("Sto scrivendo nel file...");
                myFile.println("<?php");
                myFile.println("<HTML>");
                myFile.println("<BODY>");
                myFile.print("<a href=”prodotto.php?cod=");
                myFile.print(codiceLetto);
                myFile.print('"');
                myFile.println(">");
                myFile.println("</BODY>");
                myFile.println("</HTML>");
                myFile.println("?>");
                
                // close the file:
                myFile.close();
                Serial.println(codiceLetto);
                }
                  else {
                        // if the file didn't open, print an error:
                        Serial.println("error opening test.txt");
                        }
  

    Serial.println();
    Serial.println();
  }
}