MicroSD kártya modul csatlakoztatása ESP32-vel Arduino IDE használatával

Microsd Kartya Modul Csatlakoztatasa Esp32 Vel Arduino Ide Hasznalataval



Az ESP32 egy fejlett mikrovezérlő kártya, amely különféle perifériákat tud csatlakoztatni hozzá. Más érzékelőkhöz hasonlóan a MicroSD kártya modult is csatlakoztathatja az ESP32-höz. Használhatja a MicroSD kártya érzékelőjét adatnaplózási alkalmazásokhoz, vagy növelheti a mikrokontroller kártya tárolókapacitását.

Ez a cikk elmagyarázza a MicroSD-kártya és az ESP32 kártya Arduino IDE használatával történő összekapcsolásának lépéseit.

Tartalomjegyzék:







1. MicroSD kártya modul



2. Az ESP32 csatlakoztatása a MicroSD kártyamodulhoz



3. Hardver





4. Kód

5. Kimenet



6. Különböző funkciók végrehajtása a MicroSD kártyán az ESP32 használatával

Következtetés

1. MicroSD kártya modul

A MicroSD kártya modul egy ESP32 érzékelő, amely csatlakoztathatja az SD kártyát a mikrokontroller kártyájához. SPI kommunikációs protokollon keresztül működik. Lehetővé teszi, hogy az ESP32 vagy bármely más mikrovezérlő kártya, például az Arduino hozzáférjen az SD-kártyán tárolt adatokhoz az SPI protokollon keresztül.

Az SD kártya modul üzemi feszültsége 3,3 V, így nem lehet közvetlenül csatlakoztatni az ESP32-höz vagy bármely más mikrovezérlő kártyához. Ehhez az SD kártya modult vagy érzékelőt kell használnunk, amely 5 V felett működik.

1.1. Kitűz

A MicroSD kártya összesen hat érintkezőt tartalmaz. Közülük kettő tápcsatlakozó: VCC és GND. Míg az olvasás négy érintkezőt használnak az SPI kommunikációs protokollhoz. Az alábbiakban mind a hat tűre vonatkozó részletek találhatók:

Tápcsapok:

  • VCC: Csatlakoztatható az ESP32 5V-os érintkezőhöz.
  • GND: Az ESP32 földelő (GND) érintkezőhöz csatlakozik.

SPI pinek:

  • MISO: (Master In Slave Out) Az ESP32 MOSI (Master Out Slave In) érintkezőhöz csatlakozik.
  • FÜST: Az ESP32 MISO (Master In Slave Out) érintkezőhöz csatlakozik.
  • SCK: Az ESP32 SCK (Serial Clock) érintkezőhöz csatlakozik.
  • SS: (Slave Select) Az Arduino kódban SS (Slave Select) érintkezőként megadott érintkezőhöz csatlakozik.

2. Az ESP32 csatlakoztatása a MicroSD kártyamodulhoz

Az ESP32 és a MicroSD kártyamodul összekapcsolásához be kell állítania az SD-kártya érzékelőjének tápcsatlakozóit. Ezután állítsa be az SPI érintkezőket. Itt két lehetőség közül választhat: beállíthatja az alapértelmezett SPI-tűket, vagy meghatározhatja saját egyéni SPI-csapjait.

Az alapértelmezett SPI tűk használatakor hozzáadjuk a SD h és SD_MMC.h könyvtárak. Alapértelmezés szerint ezek a könyvtárak a VSPI SPI érintkezőit (23, 19, 18, 5) veszik az SPI kommunikációhoz. Az SPI-kommunikációhoz azonban más érintkezőket is beállíthat.

Az ESP32 két SPI-interfészt tartalmaz, HSPI-t és VSPI-t, a tűk részleteivel az alábbiak szerint:

SPI FÜST MISO CLK CS
VSPI D23 D19 D18 D5
HSPI D13 D12 D14 D15

Összefüggő: ESP32 Pinout Reference – A teljes útmutató

2.2. Készítse elő az SD-kártyát

Ezután, mielőtt folytathatná az adatok olvasását és írását a MicroSD-kártyára, először be kell állítania a kártyát az összes korábbi adat formázásával.

Nyissa ki az SD-kártyát bármelyik kártyaolvasóval és formátum azt.

Válassza ki a FAT32-t a kártya fájlrendszeréhez, és kattintson a gombra Rajt .

A kártya formázása után válassza a lehetőséget rendben .

Az SD-kártya most készen áll az ESP32-vel való interfészre az SD-kártyamodul segítségével.

2.3. Sematikus ábrája

A MicroSD kártya érzékelőjének ESP32-vel való csatlakoztatásához kövesse az alábbi konfigurációt:

Az alábbi táblázat a csatlakozó vezeték tűs konfigurációját mutatja:

MicroSD kártya ESP32
GND GND
VCC JÖN
CS D5
FÜST D23
SCK D18
MISO D19

3. Hardver

Hardverhez csak néhány áthidaló vezetékre van szüksége egy kenyérsütő táblára, valamint az ESP32-re és az SD-kártya modulra.

4. Kód

Most írunk egy kódot, amely egy szöveges fájlt hoz létre a MicroSD kártyán belül, és ezt követően ír egy szöveges karakterláncot. Ha kész, elolvassuk a szöveges fájl tartalmát az Arduino IDE soros monitoron.

Indítsa el az Arduino IDE-t, és fordítsa le a megadott kódot. Ezután írja be az ESP32 kártyára:

#include

#include

Fájl a myFile ;
const int CS = 5 ;

// Írja a megadott üzenetet egy fájlba a megadott elérési úton
üres WriteFile ( const char * pálya , const char * üzenet ) {
// Nyissa meg a fájlt. Egyszerre egy fájl megnyitását támogatja
// új fájl megnyitása előtt zárja be a másik fájlt
myFile = SD. nyisd ki ( pálya , FILE_WRITE ) ;

ha ( myFile ) {
Sorozatszám. printf ( 'Írás ide: %s' , pálya ) ;
myFile. println ( üzenet ) ;
myFile. Bezárás ( ) ; // Zárja be a fájlt
Sorozatszám. println ( „befejezve”. ) ;
} más {
Sorozatszám. println ( 'hiba a fájl megnyitásakor' ) ;
Sorozatszám. println ( pálya ) ;
}
}

// Fájltartalom nyomtatása a megadott elérési úton
üres Fájl olvasása ( const char * pálya ) {
// Fájl megnyitása
myFile = SD. nyisd ki ( pálya ) ;
ha ( myFile ) {
Sorozatszám. printf ( 'Fájl olvasása innen: %s \n ' , pálya ) ;
// Olvassa el a teljes fájlt az utolsóig
míg ( myFile. elérhető ( ) ) {
Sorozatszám. ír ( myFile. olvas ( ) ) ;
}
myFile. Bezárás ( ) ; // Zárja be a fájlt
} más {
// Ha nem sikerült megnyitni a fájlt, nyomtasson ki egy hibát:
Sorozatszám. println ( 'hiba a teszt.txt megnyitásakor' ) ;
}
}

üres beállít ( ) {
Sorozatszám. kezdődik ( 9600 ) ;
késleltetés ( 500 ) ;
míg ( ! Sorozatszám ) { ; }

Sorozatszám. println ( 'SD-kártya inicializálása...' ) ;
ha ( ! SD. kezdődik ( CS ) ) {
Sorozatszám. println ( 'Az inicializálás nem sikerült!' ) ;
Visszatérés ;
}
Sorozatszám. println ( 'Inicializálás megtörtént.' ) ;

WriteFile ( '/teszt.txt' , 'Linuxhint.com' ) ;
Fájl olvasása ( '/teszt.txt' ) ;
}

üres hurok ( ) {

}

4.1. Kód magyarázata

A jobb megértés érdekében ezt a kódot alrészekre bontjuk.

Inicializálás és beállítás: Először is, a kód azzal kezdődött, hogy tartalmazott néhány fontos könyvtárat az SD-kártya modullal kapcsolatban. Az SPI.h könyvtár hozzáadódik az SD-kártyával való kommunikációhoz, az SD.h pedig az SD-kártya műveleteinek kezeléséhez. Ezután egy globális változót határoz meg myFile típusú fájl a fájlműveletek kezelésére. A CS-állandó az 5-ös lábra van állítva, amely az SD-kártya Chip Select (CS) érintkezőjeként lesz használva.

Setup() függvény: A setup funkción belül elindul a soros kommunikáció. Ezt követően az SD.begin(CS) funkció segítségével inicializáltuk az SD kártya modult. Ezenkívül két különböző funkciót is meghatároztunk a szöveg szövegfájlba történő olvasásához és írásához.

Írás az SD kártyára: A WriteFile() függvény megnyitja a test.txt fájlt az SD.open(path, FILE_WRITE) használatával történő íráshoz. Ezt követően a Linuxhint.com karakterláncot a myFile.println(message) segítségével írja a fájlba.

Olvasás az SD kártyáról: A fájl tartalmának olvasásához a ReadFile() függvényt használtuk. Sikeres olvasás esetén az adatok az Arduino soros portjára kerülnek, és megjelennek az Arduino IDE soros monitoron.

5. Kimenet

A kimenetben ugyanaz a karakterlánc látható, amelyet az Arduino IDE kódban definiáltunk, amely megjelenik az Arduino IDE soros monitorán.

6. Különböző funkciók végrehajtása a MicroSD kártyán az ESP32 használatával

Különféle műveleteket hajthatunk végre, például könyvtárakat hozhatunk létre, eltávolíthatunk vagy hozzáadhatunk a MicroSD-kártyákhoz közvetlenül az Arduino IDE kódon keresztül.

6.1. Könyvtárak létrehozása MicroSD kártyán

Az alábbi kód egy új könyvtárat hoz létre a MicroSD kártyán belül. nevű függvényt határoz meg CreateDir amely egy fájlrendszer objektumot (fs::FS) és egy elérési utat vesz be bemenetként. Ez a funkció megpróbál létrehozni egy könyvtárat a megadott elérési úttal, és üzeneteket nyomtat, amelyek jelzik a sikert vagy a sikertelenséget.

#include 'FS.h'

#include 'SD.h'

#include 'SPI.h'

üres CreateDir ( fs :: FS & fs , const char * pálya ) {

Sorozatszám. printf ( 'Létrehozása: %s \n ' , pálya ) ;

ha ( fs. mkdir ( pálya ) ) {

Sorozatszám. println ( 'A rendező létrehozta' ) ;

} más {

Sorozatszám. println ( 'mkdir nem sikerült' ) ;

}

}

üres beállít ( ) {



Sorozatszám. kezdődik ( 115200 ) ;

// SD-kártya inicializálása

ha ( ! SD. kezdődik ( ) ) {

Sorozatszám. println ( 'A kártya rögzítése nem sikerült' ) ;

Visszatérés ;

}

// Hozzon létre egy 'mydir' nevű könyvtárat

CreateDir ( SD , '/mydir' ) ;

}

üres hurok ( ) {



}

A kimenetben láthatja, hogy egy új könyvtár jön létre /mydir név.

6.2. Könyvtárak listázása a MicroSD kártyán

Az alábbi kódban felsoroljuk a MicroSD-kártyán belül található összes könyvtárat. A listDir A funkció rekurzív módon listázza az SD-kártyán lévő könyvtár tartalmát. Információkat nyomtat mind a könyvtárakról (előtag „DIR”), mind a fájlokról (előtag „FILE”), beleértve a nevüket és méretüket.

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

üres listDir ( fs :: FS & fs , const char * dirname , uint8_t szinteket ) {
Sorozatszám. printf ( 'Lista könyvtár: %s \n ' , dirname ) ;
Fájlgyökér = fs. nyisd ki ( dirname ) ;
ha ( ! gyökér ) {
Sorozatszám. println ( 'Nem sikerült megnyitni a könyvtárat' ) ;
Visszatérés ;
}
ha ( ! gyökér. isDirectory ( ) ) {
Sorozatszám. println ( 'Nem könyvtár' ) ;
Visszatérés ;
}
Fájl fájl = gyökér. openNextFile ( ) ;
míg ( fájlt ) {
ha ( fájlt. isDirectory ( ) ) {
Sorozatszám. nyomtatás ( ' TE : ' ) ;
Sorozatszám. println ( fájlt. név ( ) ) ;
ha ( szinteket ) {
listDir ( fs , fájlt. név ( ) , szinteket - 1 ) ;
}
} más {
Sorozatszám. nyomtatás ( ' FÁJL: ' ) ;
Sorozatszám. nyomtatás ( fájlt. név ( ) ) ;
Sorozatszám. nyomtatás ( 'MÉRET:' ) ;
Sorozatszám. println ( fájlt. méret ( ) ) ;
}
fájlt = gyökér. openNextFile ( ) ;
}
}

üres beállít ( ) {
Sorozatszám. kezdődik ( 115200 ) ;
ha ( ! SD. kezdődik ( ) ) {
Sorozatszám. println ( 'A kártya rögzítése nem sikerült' ) ;
Visszatérés ;
}
listDir ( SD , '/' , 0 ) ;
}

üres hurok ( ) {

}

A kimenetben két különböző fájlt láthat. Az egyik egy szöveges fájl, a másik pedig egy könyvtár, amelyet az előző kódban hoztunk létre.

6.3. Könyvtárak eltávolítása

Most eltávolítjuk a korábban létrehozott könyvtárakat és szöveges fájlokat. Ehhez fogjuk használni a RemoveDir függvény, Megkísérli eltávolítani az elérési út által megadott könyvtárat. Ha sikerült, kinyomtatja Dir eltávolítva ; egyébként kinyomtatja rmdir nem sikerült .

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

üres RemoveDir ( fs :: FS & fs , const char * pálya ) {
Sorozatszám. printf ( 'Dir. eltávolítása: %s \n ' , pálya ) ;
ha ( fs. az rm ( pálya ) ) {
Sorozatszám. println ( 'Dir eltávolítva' ) ;
} más {
Sorozatszám. println ( 'rmdir nem sikerült' ) ;
}
}

üres beállít ( ) {
Sorozatszám. kezdődik ( 115200 ) ;

ha ( ! SD. kezdődik ( ) ) {
Sorozatszám. println ( 'A kártya rögzítése nem sikerült' ) ;
Visszatérés ;
}


}

üres hurok ( ) {

}

6.4. Szerezze be a MicroSD kártya típusát

MicroSD kártya ill S ecure D Az igital kártyát eredetileg az SD-kártya-szövetség tervezte, és hordozható eszközökhöz, például okostelefonokhoz és kamerákhoz tervezték. Az SD-kártyák főként négyféle családot tartalmaznak:

  • SDSC (standard kapacitású SD): Ezek a kártyák szerény, 2 GB-os tárkapacitást kínálnak, és FAT-12 és FAT-16 fájlrendszert használnak.
  • SDHC (nagy kapacitású SD): Ezek a kártyák 2 GB-tól 32 GB-ig terjednek, és FAT-32 fájlrendszert használnak.
  • SDXC (kibővített kapacitású SD): Ezek a kártyák az exFAT fájlrendszert használják, és 32 GB-tól egészen 2 TB-ig terjednek.
  • SDIO: Az SDIO kártyák kettős célt szolgálnak az adattárolás és az INPUT/OUTPUT funkciók kombinálásával.

A kártyatípus ellenőrzéséhez futtassa az alábbi kódot:

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

üres beállít ( ) {
Sorozatszám. kezdődik ( 115200 ) ;

ha ( ! SD. kezdődik ( ) ) {
Sorozatszám. println ( 'A kártya rögzítése nem sikerült' ) ;
Visszatérés ;
}

uint8_t kártyatípus = SD. kártyatípus ( ) ;
ha ( kártyatípus == CARD_NONE ) {
Sorozatszám. println ( 'Nincs csatlakoztatva SD-kártya' ) ;
Visszatérés ;
}

Sorozatszám. nyomtatás ( 'SD-kártya típusa:' ) ;
ha ( kártyatípus == CARD_MMC ) {
Sorozatszám. println ( 'MMC' ) ;
} más ha ( kártyatípus == CARD_SD ) {
Sorozatszám. println ( 'SDSC' ) ;
} más ha ( kártyatípus == CARD_SDHC ) {
Sorozatszám. println ( 'SDHC' ) ;
} más {
Sorozatszám. println ( 'ISMERETLEN' ) ;
}

uint64_t kártyaméret = SD. kártyaméret ( ) / ( 1024 * 1024 ) ;
Sorozatszám. printf ( 'SD-kártya mérete: %lluMB \n ' , kártyaméret ) ;
}

üres hurok ( ) {
}

Mivel van egy 32 GB-os kártyám, láthatod, hogy a tartományba esik SDHC kártyákat.

6.5. Szerezze be a MicroSD kártya méretét

Az SD-kártya méretét úgy is megkaphatja, ha feltölti az alábbi kódot az ESP32-es kártyájára.

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

üres beállít ( ) {
Sorozatszám. kezdődik ( 115200 ) ;

ha ( ! SD. kezdődik ( ) ) {
Sorozatszám. println ( 'A kártya rögzítése nem sikerült' ) ;
Visszatérés ;
}

uint8_t kártyatípus = SD. kártyatípus ( ) ;
ha ( kártyatípus == CARD_NONE ) {
Sorozatszám. println ( 'Nincs csatlakoztatva SD-kártya' ) ;
Visszatérés ;
}

uint64_t kártyaméret = SD. kártyaméret ( ) / ( 1024 * 1024 ) ;
Sorozatszám. printf ( 'SD-kártya mérete: %lluMB \n ' , kártyaméret ) ;

// Más függvények (listDir, createDir, removeDir stb.) hívhatók meg itt
}

üres hurok ( ) {

}

A kimenetről láthatod, hogy van egy körülbelül 30 GB-os SD-kártyám.

Következtetés

A MicroSD kártyamodul az SD-kártya adatainak olvasására és írására szolgál az ESP32 kártya használatával. A MicroSD kártya modul SPI interfészen keresztül kommunikál a mikrokontrollerrel. Tehát használhatja az SPI-könyvtárat, vagy meghatározhatja saját SPI-tűit a kódon belül. Csatlakozás után olvashat szöveges fájlt, vagy új könyvtárakat hozhat létre az SD-kártyán.