Buona sera a tutti, vi spiego brevemente il problema, voglio usare una scheda SD per salvarci dei dati, immagini e altre cose.
Dato che sto utilizzando la scheda Ethernet e un'Arduino uno ho pensato di utilizzare lo slot già predisposto, ho formattato la scheda con FAT e ho lanciato il programma base e mi esce questo messaggio di errore:
Initializing SD card...initialization failed. Things to check:
* is a card is inserted?
* Is your wiring correct?
* did you change the chipSelect pin to match your shield or module?
Ho pensato che fosse un problema della scheda Ethernet e ho provato col modulo apposta (SD card Module) ma mi esce lo stesso messaggio di errore, allora ho provato a cambiare anche la scheda di memoria passando da 8 GB a 1GB ma ho sempre lo stesso errore.
Qualcuno ha avuto lo stesso problema?
Come posso risolverlo?
salve e grazie per la risposta, ho usato questo esempio della libreria SD:
/*
SD card test
This example shows how use the utility libraries on which the'
SD library is based in order to get info about your SD card.
Very useful for testing a card when you're not sure whether its working or not.
The circuit:
SD card attached to SPI bus as follows:
** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
** CS - depends on your SD card shield or module.
Pin 4 used here for consistency with other Arduino examples
created 28 Mar 2011
by Limor Fried
modified 9 Apr 2012
by Tom Igoe
*/
// include the SD library:
#include <SPI.h>
#include <SD.h>
// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;
// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
// MKRZero SD: SDCARD_SS_PIN
const int chipSelect = 4;
void setup() {
// 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
}
Serial.print("\nInitializing SD card...");
// we'll use the initialization code from the utility libraries
// since we're just testing if the card is working!
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("initialization failed. Things to check:");
Serial.println("* is a card inserted?");
Serial.println("* is your wiring correct?");
Serial.println("* did you change the chipSelect pin to match your shield or module?");
while (1);
} else {
Serial.println("Wiring is correct and a card is present.");
}
// print the type of card
Serial.println();
Serial.print("Card type: ");
switch (card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("Unknown");
}
// Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
if (!volume.init(card)) {
Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
while (1);
}
Serial.print("Clusters: ");
Serial.println(volume.clusterCount());
Serial.print("Blocks x Cluster: ");
Serial.println(volume.blocksPerCluster());
Serial.print("Total Blocks: ");
Serial.println(volume.blocksPerCluster() * volume.clusterCount());
Serial.println();
// print the type and size of the first FAT-type volume
uint32_t volumesize;
Serial.print("Volume type is: FAT");
Serial.println(volume.fatType(), DEC);
volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
volumesize *= volume.clusterCount(); // we'll have a lot of clusters
volumesize /= 2; // SD card blocks are always 512 bytes (2 blocks are 1KB)
Serial.print("Volume size (Kb): ");
Serial.println(volumesize);
Serial.print("Volume size (Mb): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (Gb): ");
Serial.println((float)volumesize / 1024.0);
Serial.println("\nFiles found on the card (name, date and size in bytes): ");
root.openRoot(volume);
// list all files in the card with date and size
root.ls(LS_R | LS_DATE | LS_SIZE);
}
void loop(void) {
}
Non c'e altro collegato alla scheda Ethernet, non ci sono delle limitazioni di memoria per le schede?
Non riesco a spiegarmi perché con due moduli diversi e con due schede diverse mi danno lo stesso errore... Se questo sistema non funziona come posso fare per aumentare la memoria?
Devo caricarci qualcosa sulla scheda SD per fare in modo che Arduino la legga?
Forse sbaglio io qualcuno può elencarmi la procedura cosi sono sicuro di fare le cose giuste...
Grazie mille in anticipo
Salve, ho provato con la parte di codice che mi ha consigliato ma niente non ne vuole sapere.
Il modulo me lo ha dato un mio amico non so da dove viene...
Guarda, ho appena provato con una UNO ed un vecchio modulo Ethernet originale Arduino e NON ho avuto alcun problema (microSD da 8GB), quindi ... ne deduco che il problema deve stare nel tuo hardware ... :
Tornando ad utilizzare il modulo Ethernet vedo che mi da ancora lo stesso problema >:( ,
La domanda e la seguente, io uso il modulo Ethernet per creare la mia pagina Web e fin li tutto bene, quando cerco di andare a leggere le informazioni della scheda SD si blocca la pagina web(provo con l'esempio fornito da Arduino esempi)...
Ho controllato su internet e i pin per la scheda Ethernet e per la SD sono gli stessi, non e li il problema? magari non posso farli funzionare entrambi? non so come fare perché anche utilizzando la scheda Ethernet e il modulo SD separato mi da lo stesso problema.
Qualcuno sa se per caso posso usarli solo separatamente(o l'Ethernet o lo slot SD)?
La Ethernet e la SD usano il bus SPI ... sai come funziona?
Hanno alcuni pin in comune (MISO, MOSI; SCK) ed alcuni che servono a selezionare con cosa si parla (pin 4 SD, pin 10 Ethernet) ... quindi, se usi le librerie di Arduino, NON c'è problema, gestiscono loro la cosa. Ovviamnete si usano alternativamente, prima una, poi l'altra e così via, visto che i due pin di selezione NON possono essere attivati assieme.
Più o meno so cosa sono ma non capisco allora perché usati separatamente funzionano e invece se collego la scheda Ethernet e il modulo SD non riesco più a caricare la pagina web. Io collego il Modulo SD ai pin 10,11,12 e 4 cosa posso provare a fare per cercare di risolvere questo problema?
>mozzini97: in conformità al REGOLAMENTO, punto 13, il cross-posting è proibito (anche tra lingue diverse) per cui, il tuo post duplicato nella sezione Inglese del forum è stato segnalato e cancellato dal moderatore di detta sezione.
Ti prego, per il futuro, di evitare di aprire più post sullo stesso argomento in sezioni differenti del forum. Grazie.
mozzini97:
Più o meno so cosa sono ma non capisco allora perché usati separatamente funzionano e invece se collego la scheda Ethernet e il modulo SD ...
Cosa significa "se collego ..." ... sono un'unica scheda e sono SEMPRE collegati ... non capisco ... :
Allora praticamente ho collegato il modulo SD ad Arduino Uno (senza la scheda ethernet) ai pin 13,12,11 e 4 e ho caricato il codice base che trovo negli esempi di Arduino per leggere le informazioni della scheda SD e funziona. Allora poi ho provato a mettere l'arduino Uno, la scheda Ethernet e il modulo SD collegato sempre ai pin 13,12,11 e 4 e ho caricato il codice base per leggere le informazioni della scheda SD ma non funziona. Ho fatto un'altra prova, ho collegato l'arduino Uno è la scheda Ethernet e ho caricato il codice che ho fatto per la pagina Web e funziona poi ho collegato anche la scheda SD e non mi caricava più la pagina Web.
Non capisco come mai funzionano separatamente ma quando vado a unire i moduli per cercare di farlo funzionare tutti assieme non vanno...
Sto usando la scheda ethernet R3, Arduino uno è un modulo SD base
A qualcuno è già capitato un'errore simile?
Che test posso fare per cercare di sistemare questo problema? Al momento sono bloccato con il mio progetto perché non riesco a memorizzare dei dati e visualizzarli nella mia pagina web... Spero che qualcuno mi possa aiutare...
Se usi la SCHEDA Arduino non capisco perché vuoi usare un modulo SD esterno, dato che un modulo SD è integrato nella scheda ethernet e NON puoi usarne un'altro con lo stesso pin di SS !
Buona sera, so che e' una cosa stupida usare un'altro modulo SD dato che ho quello già integrato nella Ethernet ma caricando l'esempio che trovo tra quelli proposti da arduino non funziona quindi non so come fare... devo cambiare la scheda Ethernet? Non vedo altre soluzioni...
mozzini97:
Buona sera, so che e' una cosa stupida usare un'altro modulo SD dato che ho quello già integrato nella Ethernet ...
Non si tratta di cosa stupida, è che NON puoi ovviamente usare gli stessi pin di SS poiché così i moduli vanno in conflitto. Se vuoi usare una SD esterna, DEVI forzare il pin 4 HIGH (disabilita la SD presente sulla scheda Ethernet) ed usare un altro pin come pin di SS per il modulo esterno!
Tutorial sul bus SPI ... PRIMO e SECONDO ... studiateli ...
okay allora faccio cosi, cerco se trovo un'altro modulo Ethernet per vedere se il problema e' quello.
Se non lo trovo disattivo il pin 4 e uso il modulo SD...
Penso siano le uniche possibilità che ho. Grazie mille per l'aiuto