🎄 Krásné Vánoce, hodně pohody a spoustu času na bastlení! E-shop je otevřený nonstop, jen my máme sváteční pauzu. Faktury za rok 2025 vám rádi pošleme – stačí napsat nebo zavolat. Balíčky zase vyrazí do světa od 5. 1. 2026.

Návod na použití modulu SD karty

Návod na použití modulu SD karty

Občas si říkáte, že by se hodilo ukládat nějaké informace z Arduina (např. údaje ze senzorů a čidel) a následně je zpracovávat. Ale jak to udělat?

Nebo chcete vytvořit meteostatnici a využít v ní funkci Datalogger? Já vám nyní ukáži, jak si tu hlavní část Dataloggeru zbastlit pomocí modulu čtečky SD karet pro ukládání dat. Celý dnešní projekt se dá také jednoduše použít v ostatních Arduino projektech pro ukládání dat. Čtečku pro SD karty Najdeme často také na různých shieldech nebo displejích.

Zapojení modulu SD karty

Na začátek si osvěžíme trochu teorii. K celkové funkčnosti není třeba ji dokonale ovládat, ale je dobré rozumět tomu, na čem je to postavené a jak to funguje.

Modul čtečky SD karet je k řídící desce Arduino připojen pomocí sběrnice SPI. Ta vyžaduje celkem 4 signálové vodiče a napájení. Zapojíme tedy modul SD karty. Piny MISO, MOSI, SCK představují komunikační rozhraní SPI mezi Arduinem a modulem čtečky, CS je signál pro výběr obvodu. Napájení +5 V využijeme přímo z Arduino desky. Pokud použijete například jiné Arduino a nevíte, kde se na desce nachází SPI piny, podívejte se do dokumentace (datasheetu) Arduino desky.

Pro vlastní Datalogger potřebujeme tyto Arduino věcičky

Schéma zapojení modulu SD čtečky karet 

Poznámka: Schéma zapojení pro modul čtečky SD karet vychází ze stejného zapojení. Pozor, pro komunikaci v 5V logice musíte zajistit vhodnou konverzi napěťových úrovní na 3,3 V.

Příprava SD karty

Než se pustíme do psaní programu, musíme si SD kartu připravit. V našem případě to zahrnuje formátování. Vložte SD kartu do čtečky počítače a pot zobrazí, klikněte na ni pravým tlačítkem myši a pak dejte "Formátovat“. Klíčové při formátování je nastavit kolonku "Systém souborů“, kde musí být nastavené FAT nebo FAT32. Díky tomuto nastavení budeme moci použít knihovnu z Arduina IDE. Zaškrtněte položku rychlé formátování a do prázdné kolonky, která je na obrázku pojmenovaná jako "Jmenovka svazku“ si můžete nastavit název vaší karty.

Pozor! Formátováním zmizí všechny soubory a data, která na kartě byla uložena předtím.

Nastavení (formátování) SD karty k jejímu využití s Arduinem

Program pro SD kartu

Karta je nyní připravená, ale ještě jsou tu další věci, které musíme projít nebo brát v potaz.

1) V programu najdeme 2 knihovny ale obě jsou defaultně v Arduino IDE, tudíž je nemusíme hledat a stahovat.
2) Pin SS (Slave Select) musí být nastavený jako OUTPUT i když se nepoužívá.
3) Název souboru na SD kartě (v našem případě test.txt) nesmí obsahovat speciální znaky (vyvarujte se české diakritice a mezerám (použijte podtržítko)).

A když jsme u pojmenovávání souboru, je dobré vědět, že Arduino IDE knihovna používá 8.3 formát. To znamená, že název souboru může mít maximálně 8 znaků a přípona souboru maximálně 3 znaky.

Před samotným psaním programu si stanovíme, co bude program dělat.
Následující Arduino program má za úkol:

      1. Otestovat, zda je SD karta správně připojena a výsledek poslat po sériové lince do serial monitoru.
      2. Otevřít nebo případně vytvořit soubor „test.txt“.
      3. Pokud se soubor otevře, zapíše se do něj „dneska sviti slunce“ a soubor se zavře. Pokud se soubor neotevře, nebo zápis selže, dozvíme se to v serial monitoru.
      4. Poté se celý proces opakuje bez bodu 1 s tím, že se do souboru nic nezapisuje, ale ze souboru se čte.

Proč se soubor musí zavřít, když z něj chci hned znova číst? Není to zbytečné zdržování? Není. Je to z důvodu, že při každém zavření, se soubor také uloží.

Arduino program pak vypadá takto:

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

File myFile;
int const pinSS = 10;
int const pinCS = 4;

void setup()
{
  // i když se pin nepoužívá, musí být definován jako výstup!
  pinMode(pinSS, OUTPUT);
  // začátek sériové komunikace
  Serial.begin(9600);

  Serial.print("inicializace SD karty...");

  // pokud není karta dostupná, tak:
  if (!SD.begin(pinCS))
  {
    Serial.println(" inicializace selhala!");
    while (1);
  }
  Serial.println(" inicializace uspesna!");

  // soubor, který chceme otevřít a psát do něj (FILE_WRITE)
  // se jmenuje test.txt (popřípadě vložte celou cestu k souboru)
  myFile = SD.open("test.txt", FILE_WRITE);

  // pokud se soubor načte a otevře, tak:
  if (myFile)
  {
    Serial.println("Zapisuji do test.txt");
    // zapiš do souboru
    myFile.println("dneska sviti slunce");
    // zavři soubor
    myFile.close();
    Serial.println("uspesne zapsano");
  } 
  // pokud se nepodaří soubor načíst a otevřít, tak:
  else
  {
    Serial.println("soubor se nepodarilo otevrit");
  }

  // přečtění souboru:
  Serial.println("\ncteni ze souboru\n");
  // otevři soubor test.txt pro čtení, mód je defaultně nastavený na FILE_READ
  myFile = SD.open("test.txt");
  // pokud se soubor načte a otevře, tak:
  if (myFile)
  {
    Serial.println("soubor obsahuje: ");

    // čti ze souboru, dokud je co
    while (myFile.available())
    {
      Serial.write(myFile.read());
    }
    // zavři soubor
    myFile.close();
  }
  // pokud se nepodaří soubor načíst a otevřít, tak:
  else
  {
    Serial.println("soubor se nepodarilo otevrit");
  }
}

void loop()
{
  // jelikož chceme, aby kód proběhl jenom jednou, tak zde nic nebude
}

 

Po spuštění Arduino programu se nám dostane na serial monitoru následující výpis. Teď už stačí jen místo věty "dneska sviti slunce" použít data z analogových nebo digitálních vstupů. Princip zápisu bude stejný. V Dataloggeru se také často používá modul reálného času pro vytvoření časových značek.

Modul čtečky SD karet - výpis programu na serial monitor

Další možnosti programování

Tento program vám ukázal naprosté základy práce s SD kartou. Možná je také práce s adresáři, nebo mazání souborů. Pokud by vás zajímalo více, podívejte se do dokumentace knihovny k SD kartě. Nebo si rovnou zdarma stáhněte Arduino e-book na stránce www.arduino.cz, kde najdete o SD kartě samostatnou kapitolu.

Pokud narazíte na něco, co vám není v návodu jasné, zeptejte v sekci komentářů nebo se podívejte na další Arduino návody na stránce www.hwkitchen.cz/arduino-navody/.

Bastlení ZDAR!

odkazy pro práci s modulem SD karty