Headerdatei für Micro-SD-Kartenmodul

kann mir jemand sagen, welche Headerdatei ich für ein Micro-SD-Kartenmodul in den Code einbinden muß?
Ich habe das Teil bei ebay gekauft und die Verkäufer liefern nur das Teil und von allem Anderen haben sie keine Ahnung und legen auch kein Datenblatt dazu.

#include <SPI.h>
#include <SD.h>

Anstelle der SD-Lib kannst Du auch die SdFat-Lib benutzen.

Bei solchen Standardbauteilen kannst Du Glück haben, ansonsten solltest Du Dir angewöhnen, erst zu kaufen, wenn Du das Datenblatt und evtl. eine Lib dazu hast.

Gruß Tommy

Danke.

#include <SPI.h>
#include <SD.h>

Diese Header hatte ich schon inkludiert, aber das Modul initialisiert nicht. Ich habe die Verbindung mehrfach kontrolliert. Ist das Zeug (von deutschen Händlern und nicht als “aus China” markiert) Müll?

nckwdt:
Ich habe die Verbindung mehrfach kontrolliert.

mach ein hochauflösendes Foto in dem wir wirklich jede Verbindung eindeutig erkennen und stelle es in das Forum. Dazu eine angabe mit welchem Sketch du genau deine Versuche gemacht hast.

nckwdt:
Ist das Zeug (von deutschen Händlern und nicht als "aus China" markiert) Müll?

hart und ehrlich?
Meistens nicht.
Oft kommen die Teile von deutschen Händlern dennoch aus China
Meistens macht der Anwender was falsch.

noiasca:
mach ein hochauflösendes Foto in dem wir wirklich jede Verbindung eindeutig erkennen und stelle es in das Forum. Dazu eine angabe mit welchem Sketch du genau deine Versuche gemacht hast.

hart und ehrlich?
Meistens nicht.
Oft kommen die Teile von deutschen Händlern dennoch aus China
Meistens macht der Anwender was falsch.

Das ist der Code (Ausschnitt):

#include <Wire.h>  //  das I²C Protokoll 
#include <SPI.h>
#include <SPIFlash.h>
#include <SD.h>                 //Sd-Kartenslot
#include <LiquidCrystal_I2C.h> // LCD-Display
//#include <DS1307.h>             //für DS1307 Uhr
#include <RFM69.h>               //Funk
#include <math.h>

#define NETWORKID     0   
#define MYNODEID      2  
#define TONODEID      1   
#define FREQUENCY     RF69_433MHZ  
#define ENCRYPT       false
#define ENCRYPTKEY    "TOPSECRETPASSWRD" 
#define USEACK        false 

#define LED           9 // LED positive pin
#define GND           8 // LED ground pin

LiquidCrystal_I2C lcd(0x27,20,4);   //LiquidCrystal_I2C lcd(0x3F,20,4); 
RFM69 radio;   // Funk
Sd2Card card;                       //SD Karte
SdFile root;                       //SD Karte
const int chipSelect = 10;           /SD Karte
File dataFile;                       //SD Karte

//#define debug

void setup()
{
 Serial.begin(9600);
 
///////////////////////////////////////// Funk ////////////////////////////////////////

 Serial.print(F("Node "));
 Serial.print(MYNODEID,DEC);
 Serial.println(F(" Sp_Dis_Uhr_Empfang_15"));
 
 pinMode(LED,OUTPUT);        // Set up the indicator LED (optional):
 digitalWrite(LED,LOW);
 pinMode(GND,OUTPUT);
 digitalWrite(GND,LOW);
  
   if (!radio.initialize(FREQUENCY, MYNODEID, NETWORKID))
     {        Serial.println(F("radio nicht initialisiert"));    }
   else 
     {        Serial.println(F("radio initialisiert"));       }
   
 radio.setHighPower(true); // Always use this for RFM69HCW     

 if (ENCRYPT)    radio.encrypt(ENCRYPTKEY);

//////////////////////////////////////// Display //////////////////////////////////////

 lcd.init();
 lcd.backlight(); // (0 schaltet die Beleuchtung aus).


//////////////////////////////////////// SD Karte /////////////////////////////////////

 pinMode(10, OUTPUT);
 if (!card.init(SPI_HALF_SPEED, chipSelect))
 {
   Serial.println(F("SD-Karte nicht betriebsbereit"));
 }
 else 
 {
   Serial.println(F("SD-Karte angeschlossen und betriebsbereit"));
 }

}

Setze deinen Sketch bitte in Code-Tags [code]Hier der Code[/code] (ohne die *-Zeichen), das kannst du auch nachträglich über edit machen.

Erhältst du denn eine Fehlermeldung beim compilieren und im Betrieb oder was passiert oder passiert nicht? SD-Karte eingelegt? Wie groß ist die und wie hast du die formatiert?

Welches Board (Microcontroller) nutzt du?

Hast du mal eine der Beispiele zu der SD-Lib getestet?

Edit: Die hast du den SD-Reader ans Board angeschlossen (Pinbezeichnung)? Vielleicht kannst du auch ein Foto liefern, wie noiasca schon meinte.

nein so wird das nichts.

  • lies im Forum How to nach wie man URL und Code postet. Stichwort Code Tags.
  • lass alles was nicht mit SD zu tun weg, mach einen kompilierbaren minimalen Sketch aus den SD-Beispielen und konzentriere dich auf die SD-Karte. Wenn du so einen Sketch hast, poste nicht nur den angewandten Sketch sondern auch die Serial-Monitor Ausgaben.
  • Mach ein klares Foto.

Das ist der Code (Ausschnitt):

Aha, du benutzt mehrere SPI Geräte.
Dafür müsste dein SD-Karten-Modul modifiziert werden.
Wenn es das Modul ist, für das ich es halte

wapjoe:
Setze deinen Sketch bitte in Code-Tags [code]Hier der Code[/code] (ohne die *-Zeichen), das kannst du auch nachträglich über edit machen.

Erhältst du denn eine Fehlermeldung beim compilieren und im Betrieb oder was passiert oder passiert nicht? SD-Karte eingelegt? Wie groß ist die und wie hast du die formatiert?

Welches Board (Microcontroller) nutzt du?

Hast du mal eine der Beispiele zu der SD-Lib getestet?

Edit: Die hast du den SD-Reader ans Board angeschlossen (Pinbezeichnung)? Vielleicht kannst du auch ein Foto liefern, wie noiasca schon meinte.

Nein, beim Kompilieren erhalte ich keine Fehlermeldungen, der Code ist OK. Damit lief auch schon mal ein Kartenmodul, aber es lief auf einem Steckfeld und irgendwann wurde das alles zu unübersichtlich und das Modul hat irgendwie auf einem falschen Pin Strom bekommen und hat sich verabschiedet. Jetzt wird alles immer sofort fest verlötet, damit so etwas nicht wieder passiert.

Die Anlage ist auf mehrere Lochrasterplatinen verteilt, die von beiden Seiten mit Litze und mit Silberdraht verlötet sind. Auf einem Foto ist das kaum darstellbar. Es funktioniert ja auch alles: das Display, der Funk, ich erhalte die Daten vom Sender, aber es funktioniert eben der Kartenleser nicht (Mikro-SD-karte). Ich werde die Verdrahtung ein weiteres mal überprüfen und evtl. das SD-Karten-Modul gegen ein anderes Kartenmodul austauschen.

wapjoe:
Erhältst du denn eine Fehlermeldung beim compilieren und im Betrieb oder was passiert oder passiert nicht? SD-Karte eingelegt? Wie groß ist die und wie hast du die formatiert?

Welches Board (Microcontroller) nutzt du?

Ich nutze ein Arduino Uno Board.

Auf der Mikro-Karte findet sich eine fehlerfreie primäre FAT32-Partition mit 7.43 GB. Die Fehlermeldung erhalte ich beim Starten des Serial Monitor beim Setup. Die Fehlermeldung entspricht dem Programmcode:

14:03:28.265 -> SD-Karte nicht betriebsbereit

Wie ist das eigentlich: darf ich bei montierter Hardware (den Modulen, dem Arduino-Board) die Leitungen messen (insbes. die Widerstände der Leitungen)? Denn bei der Messung der Widerstände wird ja Spannung angelegt....

Beim UNO kann es mit Deinen ganzen Sachen ringsherum schon eng mit dem Speicher werden. Die SD braucht allein 512 Byte für den Puffer.

Baue mal (wie Dir bereits vorgeschlagen) nur ein Beispielsketch der von Dir verwendeten SD-Lib auf.
Probiere im Zweifelsfall beide SD-Libs mit jeweils deren eigenen Beispielprogrammen.

Wenn es damit schon nicht funktioniert, wird es erst recht mit Deinem Sketch nicht funktionieren.

Eine weitere mögliche Ursache könnte die Formatierung der SD sein. Diverse Betrübssysteme halten sich nur sehr weiträumig an den SD-Standard. Dann solltest Du mal den Formatter der SD-Assoziation probieren.

Gruß Tommy

Tommy56:
Beim UNO kann es mit Deinen ganzen Sachen ringsherum schon eng mit dem Speicher werden. Die SD braucht allein 512 Byte für den Puffer.

Baue mal (wie Dir bereits vorgeschlagen) nur ein Beispielsketch der von Dir verwendeten SD-Lib auf.
Probiere im Zweifelsfall beide SD-Libs mit jeweils deren eigenen Beispielprogrammen.

Wenn es damit schon nicht funktioniert, wird es erst recht mit Deinem Sketch nicht funktionieren.

Eine weitere mögliche Ursache könnte die Formatierung der SD sein. Diverse Betrübssysteme halten sich nur sehr weiträumig an den SD-Standard. Dann solltest Du mal den Formatter der SD-Assoziation probieren.

Gruß Tommy

Ich benutze den Tuxera Formatter 5.0.1 und Speicherprobleme habe ich nicht: 52% nutzt der Programm-Speicher und 64 % nutzen die globalen Variablen. Das sollte doch keine Probleme verursachen.

Den Speicher, der erst zur Laufzeit belegt wird, sieht der Compiler nicht. Aber egal, wenn Du meinst ohne unsere Ratschläge besser zu fahren, nur zu.

Viel Spaß noch.

Gruß Tommy

Nur weil irgendwo "for Arduino" steht, heißt das nicht, dass das Modul 5V Signale abkann. Die SD-Karte selbst arbeitet mit 3.3V
Schau mal, ob da für die Signale Levelshifter drauf sind.

Schau mal, ob da für die Signale Levelshifter drauf sind

Sind.

Aber evtl. falsch verbunden
Das müsste man prüfen....
(ist ja keine Raketentechnik)

Ein Umbau dieses Moduls


Und ein Umbau für eine andere Sorte dieser Boards.
Scheint davon min 3 verschiedene Versionen, sehr ähnliche, zu geben.


Quelle

Ich habe ein baugleiches Teil aus China (geliefert) da, laut der Produktbeschreibung wird VCC mit 5V verbunden und die Datenleitungen würden auf 3V3 geregelt. Ich hab das Teil aber selber noch nicht getestet und ob da was falsch verbunden ist, kann ich auch nicht sagen, aber der Händler gibt mehr Infos als der angeblich deutsche Händler...

Aber da der TO scheinbar kein Interesse an einer Fehlersuche hat, teste ich den Reader jetzt auch nicht.

michael_x:
Nur weil irgendwo “for Arduino” steht, heißt das nicht, dass das Modul 5V Signale abkann. Die SD-Karte selbst arbeitet mit 3.3V
Schau mal, ob da für die Signale Levelshifter drauf sind.

das erste Kartenmodul (normale SD_Kartengröße), das ich hatte, lief alternativ mit 5 oder mit 3.3 Volt.

combie:
Aha, du benutzt mehrere SPI Geräte.
Dafür müsste dein SD-Karten-Modul modifiziert werden.
Wenn es das Modul ist, für das ich es halte

ich benütze außer dem Kartenleser nur ein LiquidCrystal I2c Display und einen Sender RFM69HCW. Muß dazu das Kartenmodul modifiziert werden? Das würde natürlich alles erklären!