Ako prepojiť modul karty MicroSD s ESP32 pomocou Arduino IDE

Ako Prepojit Modul Karty Microsd S Esp32 Pomocou Arduino Ide



ESP32 je pokročilá doska mikrokontroléra, ktorá dokáže prepojiť rôzne množstvo periférií. Rovnako ako ostatné senzory, aj modul MicroSD karty môžete prepojiť s ESP32. Snímač karty MicroSD môžete použiť na aplikácie na zaznamenávanie údajov alebo na zvýšenie úložnej kapacity pre dosku mikrokontroléra.

Tento článok vysvetlí kroky na prepojenie karty MicroSD s doskou ESP32 pomocou Arduino IDE.

Obsah:







1. Modul karty MicroSD



2. Ako prepojiť ESP32 s modulom karty MicroSD



3. Hardvér





4. Kód

5. Výstup



6. Vykonávanie rôznych funkcií na MicroSD karte pomocou ESP32

Záver

1. Modul karty MicroSD

Modul karty MicroSD je snímač ESP32, ktorý môže pripojiť kartu SD k doske mikrokontroléra. Funguje cez komunikačný protokol SPI. Umožňuje ESP32 alebo akejkoľvek inej doske mikrokontroléra, ako je Arduino, prístup k údajom uloženým na SD karte cez protokol SPI.

Pracovné napätie pre modul SD karty je 3,3 V, takže nie je možné ho priamo pripojiť k ESP32 alebo inej doske mikrokontroléra. Na to musíme použiť modul SD karty alebo senzor, ktorý pracuje nad 5V.

1.1. Pinout

MicroSD karta má celkovo šesť pinov. Dva z nich sú napájacie kolíky: VCC a GND. Pri čítaní sa štyri piny používajú pre komunikačný protokol SPI. Nasledujú podrobnosti o všetkých týchto šiestich kolíkoch:

Napájacie kolíky:

  • VCC: Pripája sa na 5V kolík ESP32.
  • GND: Pripája sa k uzemňovaciemu (GND) kolíku ESP32.

Piny SPI:

  • MISO: (Master In Slave Out) Pripája sa ku kolíku ESP32 MOSI (Master Out Slave In).
  • SMOKE: Pripája sa ku kolíku ESP32 MISO (Master In Slave Out).
  • SCK: Pripája sa ku kolíku ESP32 SCK (Serial Clock).
  • SS: (Slave Select) Pripája sa ku kolíku špecifikovanému v kóde Arduino ako kolík SS (Slave Select).

2. Ako prepojiť ESP32 s modulom karty MicroSD

Na prepojenie ESP32 s modulom karty MicroSD budete musieť nastaviť napájacie kolíky pre váš snímač karty SD. Ďalej nastavte kolíky SPI. Tu máte dve možnosti, môžete buď nastaviť predvolené piny SPI alebo definovať svoje vlastné piny SPI.

Pri použití predvolených kolíkov SPI pridáme SD h a SD_MMC.h knižnice. V predvolenom nastavení tieto knižnice používajú piny VSPI SPI (23, 19, 18, 5) na komunikáciu SPI. Pre SPI komunikáciu si však môžete nastaviť aj iné piny.

ESP32 obsahuje dve SPI rozhrania HSPI a VSPI s detailmi ich pinov nasledovne:

SPI SMOKE MISO CLK CS
VSPI D23 D19 D18 D5
HSPI D13 D12 D14 D15

Súvisiace: ESP32 Pinout Reference – Kompletný sprievodca

2.2. Pripravte si SD kartu

Ďalej, skôr ako budete môcť pokračovať v čítaní a zapisovaní údajov na kartu MicroSD, musíte ju najskôr nastaviť naformátovaním všetkých predchádzajúcich údajov na nej.

Otvorte SD kartu pomocou ľubovoľnej čítačky kariet a formát to.

Vyberte FAT32 pre súborový systém vašej karty a kliknite Štart .

Po naformátovaní karty vyberte OK .

Teraz je vaša SD karta pripravená na prepojenie s ESP32 pomocou modulu SD karty.

2.3. Schematický diagram

Ak chcete pripojiť snímač MicroSD karty k ESP32, postupujte podľa nižšie uvedenej konfigurácie:

Nasleduje tabuľka konfigurácie kolíkov pripojovacieho vodiča:

MicroSD karta ESP32
GND GND
VCC PRÍĎ
CS D5
SMOKE D23
SCK D18
MISO D19

3. Hardvér

Pre hardvér potrebujete iba prepojovacie káble a dosku na spojenie s ESP32 a modulom karty SD.

4. Kód

Teraz napíšeme kód, ktorý vytvorí textový súbor vo vnútri MicroSD karty a potom doň zapíše nejaký textový reťazec. Po dokončení si prečítame obsah textového súboru na sériovom monitore Arduino IDE.

Spustite Arduino IDE a skompilujte daný kód. Potom ho napáľte na dosku ESP32:

#include

#include

Súbor myFile ;
konšt int CS = 5 ;

// Zapíše danú správu do súboru na zadanej ceste
neplatné WriteFile ( konšt char * cesta , konšt char * správu ) {
// Otvorte súbor. Podporuje otváranie jedného súboru naraz
// zatvorte druhý súbor pred otvorením nového súboru
myFile = SD. OTVORENÉ ( cesta , FILE_WRITE ) ;

ak ( myFile ) {
Serial. printf ( 'Píše sa do %s' , cesta ) ;
myFile. println ( správu ) ;
myFile. Zavrieť ( ) ; // Zatvorte súbor
Serial. println ( 'dokončené.' ) ;
} inak {
Serial. println ( 'chyba pri otváraní súboru' ) ;
Serial. println ( cesta ) ;
}
}

// Tlač obsahu súboru na zadanej ceste
neplatné ReadFile ( konšt char * cesta ) {
// Otvorený súbor
myFile = SD. OTVORENÉ ( cesta ) ;
ak ( myFile ) {
Serial. printf ( 'Čítam súbor z %s \n ' , cesta ) ;
// Prečítajte si celý súbor, kým nedosiahnete posledný
zatiaľ čo ( myFile. k dispozícii ( ) ) {
Serial. písať ( myFile. čítať ( ) ) ;
}
myFile. Zavrieť ( ) ; // Zatvorte súbor
} inak {
// Ak sa súbor nepodarilo otvoriť, vypíšte chybu:
Serial. println ( 'chyba pri otváraní súboru test.txt' ) ;
}
}

neplatné nastaviť ( ) {
Serial. začať ( 9600 ) ;
meškanie ( 500 ) ;
zatiaľ čo ( ! Serial ) { ; }

Serial. println ( 'Inicializuje sa SD karta...' ) ;
ak ( ! SD. začať ( CS ) ) {
Serial. println ( 'Inicializácia zlyhala!' ) ;
vrátiť ;
}
Serial. println ( 'Inicializácia dokončená.' ) ;

WriteFile ( '/test.txt' , 'Linuxhint.com' ) ;
ReadFile ( '/test.txt' ) ;
}

neplatné slučka ( ) {

}

4.1. Vysvetlenie kódu

Pre lepšie pochopenie rozdelíme tento kód na podčasti.

Inicializácia a nastavenie: Najprv kód začal zahrnutím niektorých dôležitých knižníc súvisiacich s modulom SD karty. Knižnica SPI.h je pridaná pre komunikáciu s SD kartou a SD.h pre obsluhu operácií SD karty. Ďalej definuje globálnu premennú myFile typu súboru na správu operácií so súbormi. Konštanta CS je nastavená na kolík 5, ktorý sa použije ako kolík výberu čipu (CS) pre kartu SD.

Funkcia Setup(): V rámci funkcie nastavenia sa spustí sériová komunikácia. Potom sme inicializovali modul SD karty pomocou funkcie SD.begin(CS). Ďalej sme tiež definovali dve rôzne funkcie na čítanie a zápis textu do textového súboru.

Zápis na SD kartu: Funkcia WriteFile() otvorí súbor test.txt na zápis pomocou SD.open(cesta, FILE_WRITE). Potom zapíše reťazec Linuxhint.com do súboru pomocou myFile.println(správa).

Čítanie z SD karty: Na prečítanie obsahu súboru sme použili funkciu ReadFile(). Po úspešnom prečítaní sa údaje odošlú na sériový port Arduino a zobrazia sa na sériovom monitore Arduino IDE.

5. Výstup

Vo výstupe môžete vidieť, že rovnaký reťazec, ktorý sme definovali v kóde Arduino IDE, sa zobrazuje na vašom sériovom monitore Arduino IDE.

6. Vykonávanie rôznych funkcií na MicroSD karte pomocou ESP32

Môžeme vykonávať rôzne operácie, ako je vytváranie, odstraňovanie alebo pridávanie adresárov na karty MicroSD priamo prostredníctvom kódu Arduino IDE.

6.1. Vytváranie adresárov na MicroSD karte

Nižšie uvedený kód vytvorí nový adresár na karte MicroSD. Definuje funkciu tzv createDir ktorý berie ako vstup objekt systému súborov (fs::FS) a cestu. Táto funkcia sa pokúsi vytvoriť adresár so zadanou cestou a vytlačí správy označujúce úspech alebo zlyhanie.

#include 'FS.h'

#include 'SD.h'

#include 'SPI.h'

neplatné createDir ( fs :: FS & fs , konšt char * cesta ) {

Serial. printf ( 'Vytvára sa adresár: %s \n ' , cesta ) ;

ak ( fs. mkdir ( cesta ) ) {

Serial. println ( 'Dir vytvorený' ) ;

} inak {

Serial. println ( 'mkdir zlyhal' ) ;

}

}

neplatné nastaviť ( ) {



Serial. začať ( 115200 ) ;

// Inicializácia SD karty

ak ( ! SD. začať ( ) ) {

Serial. println ( 'Pripojenie karty zlyhalo' ) ;

vrátiť ;

}

// Vytvorte adresár s názvom 'mydir'

createDir ( SD , '/mydir' ) ;

}

neplatné slučka ( ) {



}

Vo výstupe môžete vidieť, že sa vytvorí nový adresár s /mydir názov.

6.2. Výpis adresárov na MicroSD kartu

V nižšie uvedenom kóde uvedieme zoznam všetkých adresárov na karte MicroSD. The zoznamDir funkcia rekurzívne vypíše obsah adresára na SD karte. Vytlačí informácie o adresároch (s predponou „DIR“) a súboroch (s predponou „FILE“) vrátane ich názvov a veľkostí.

#include 'FS.h'
#include 'SD.h'
#include 'SPI.h'

neplatné zoznamDir ( fs :: FS & fs , konšt char * dirname , uint8_t úrovne ) {
Serial. printf ( 'Adresár zoznamu: %s \n ' , dirname ) ;
Koreň súboru = fs. OTVORENÉ ( dirname ) ;
ak ( ! koreň ) {
Serial. println ( 'Nepodarilo sa otvoriť adresár' ) ;
vrátiť ;
}
ak ( ! koreň. isDirectory ( ) ) {
Serial. println ( 'Nie je to adresár' ) ;
vrátiť ;
}
Súbor súboru = koreň. openNextFile ( ) ;
zatiaľ čo ( súbor ) {
ak ( súbor. isDirectory ( ) ) {
Serial. vytlačiť ( 'TY:' ) ;
Serial. println ( súbor. názov ( ) ) ;
ak ( úrovne ) {
zoznamDir ( fs , súbor. názov ( ) , úrovne - 1 ) ;
}
} inak {
Serial. vytlačiť ( 'SÚBOR:' ) ;
Serial. vytlačiť ( súbor. názov ( ) ) ;
Serial. vytlačiť ( 'VEĽKOSŤ:' ) ;
Serial. println ( súbor. veľkosť ( ) ) ;
}
súbor = koreň. openNextFile ( ) ;
}
}

neplatné nastaviť ( ) {
Serial. začať ( 115200 ) ;
ak ( ! SD. začať ( ) ) {
Serial. println ( 'Pripojenie karty zlyhalo' ) ;
vrátiť ;
}
zoznamDir ( SD , '/' , 0 ) ;
}

neplatné slučka ( ) {

}

Vo výstupe môžete vidieť dva rôzne súbory. Jeden je textový súbor a druhý je adresár, ktorý sme vytvorili v predchádzajúcom kóde.

6.3. Odstraňovanie adresárov

Teraz odstránime predtým vytvorené adresáre a textové súbory. Na to použijeme removeDir funkcia, pokúsi sa odstrániť adresár určený cestou. V prípade úspechu sa vytlačí Dir odstránený ; v opačnom prípade sa vytlačí rmdir zlyhal .

#include 'FS.h'
#include 'SD.h'
#include 'SPI.h'

neplatné removeDir ( fs :: FS & fs , konšt char * cesta ) {
Serial. printf ( 'Odstraňuje sa adresár: %s \n ' , cesta ) ;
ak ( fs. je rm ( cesta ) ) {
Serial. println ( 'Dir odstránený' ) ;
} inak {
Serial. println ( 'rmdir zlyhal' ) ;
}
}

neplatné nastaviť ( ) {
Serial. začať ( 115200 ) ;

ak ( ! SD. začať ( ) ) {
Serial. println ( 'Pripojenie karty zlyhalo' ) ;
vrátiť ;
}


}

neplatné slučka ( ) {

}

6.4. Získajte typ karty MicroSD

MicroSD karta resp S bezpečný D Digitálna karta bola pôvodne navrhnutá asociáciou SD kariet a navrhnutá na použitie v prenosných zariadeniach, ako sú smartfóny a fotoaparáty. Karty SD obsahujú hlavne štyri typy rodín:

  • SDSC (štandardná kapacita SD): Tieto karty ponúkajú skromný rozsah úložnej kapacity 2 GB a používajú súborové systémy FAT-12 a FAT-16.
  • SDHC (vysokokapacitná SD): Tieto karty majú veľkosť od 2 GB do 32 GB a používajú súborový systém FAT-32.
  • SDXC (SD s rozšírenou kapacitou): Tieto karty používajú súborový systém exFAT a začínajú od 32 GB až po 2 TB.
  • SDIO: SDIO karty slúžia na dvojaký účel tým, že kombinujú ukladanie dát s funkciami INPUT/OUTPUT.

Ak chcete skontrolovať typ karty, spustite nasledujúci kód:

#include 'FS.h'
#include 'SD.h'
#include 'SPI.h'

neplatné nastaviť ( ) {
Serial. začať ( 115200 ) ;

ak ( ! SD. začať ( ) ) {
Serial. println ( 'Pripojenie karty zlyhalo' ) ;
vrátiť ;
}

uint8_t typ karty = SD. typ karty ( ) ;
ak ( typ karty == CARD_NONE ) {
Serial. println ( 'Nie je pripojená karta SD' ) ;
vrátiť ;
}

Serial. vytlačiť ( 'Typ karty SD: ' ) ;
ak ( typ karty == CARD_MMC ) {
Serial. println ( 'MMC' ) ;
} inak ak ( typ karty == CARD_SD ) {
Serial. println ( 'SDSC' ) ;
} inak ak ( typ karty == CARD_SDHC ) {
Serial. println ( 'SDHC' ) ;
} inak {
Serial. println ( 'NEZNÁMY' ) ;
}

uint64_t veľkosť karty = SD. veľkosť karty ( ) / ( 1024 * 1024 ) ;
Serial. printf ( Veľkosť SD karty: %lluMB \n ' , veľkosť karty ) ;
}

neplatné slučka ( ) {
}

Nakoľko mám 32GB kartu, vidíte, že leží v rozmedzí SDHC karty.

6.5. Získajte veľkosť karty microSD

Veľkosť SD karty môžete získať aj nahraním nižšie uvedeného kódu na dosku ESP32.

#include 'FS.h'
#include 'SD.h'
#include 'SPI.h'

neplatné nastaviť ( ) {
Serial. začať ( 115200 ) ;

ak ( ! SD. začať ( ) ) {
Serial. println ( 'Pripojenie karty zlyhalo' ) ;
vrátiť ;
}

uint8_t typ karty = SD. typ karty ( ) ;
ak ( typ karty == CARD_NONE ) {
Serial. println ( 'Nie je pripojená karta SD' ) ;
vrátiť ;
}

uint64_t veľkosť karty = SD. veľkosť karty ( ) / ( 1024 * 1024 ) ;
Serial. printf ( Veľkosť SD karty: %lluMB \n ' , veľkosť karty ) ;

// Tu je možné volať ďalšie funkcie (listDir, createDir, removeDir atď.).
}

neplatné slučka ( ) {

}

Z výstupu môžete vidieť, že mám SD kartu približne 30 GB.

Záver

Na čítanie a zápis údajov z SD karty pomocou dosky ESP32 sa používa modul MicroSD karty. Modul MicroSD karty komunikuje s mikrokontrolérom pomocou rozhrania SPI. Môžete teda použiť knižnicu SPI alebo definovať svoje vlastné piny SPI v kóde. Po pripojení môžete čítať, zapisovať textový súbor alebo vytvárať nové adresáre na SD karte.