Kaip prijungti „MicroSD“ kortelės modulį su ESP32 naudojant „Arduino IDE“.

Kaip Prijungti Microsd Korteles Moduli Su Esp32 Naudojant Arduino Ide



ESP32 yra pažangi mikrovaldiklio plokštė, galinti su ja sujungti įvairius periferinius įrenginius. Kaip ir kitus jutiklius, „MicroSD“ kortelės modulį galite susieti su ESP32. Galite naudoti „MicroSD“ kortelės jutiklį duomenų registravimo programoms arba padidinti savo mikrovaldiklio plokštės atminties talpą.

Šiame straipsnyje bus paaiškinti, kaip sujungti „MicroSD“ kortelę su ESP32 plokšte naudojant „Arduino IDE“.

Turinys:







1. MicroSD kortelės modulis



2. Kaip sujungti ESP32 su MicroSD kortelės moduliu



3. Techninė įranga





4. Kodas

5. Išvestis



6. Įvairių funkcijų atlikimas naudojant „MicroSD“ kortelę naudojant ESP32

Išvada

1. MicroSD kortelės modulis

MicroSD kortelės modulis yra ESP32 jutiklis, kuris gali prijungti SD kortelę prie jūsų mikrovaldiklio plokštės. Jis veikia per SPI ryšio protokolą. Tai leidžia ESP32 ar bet kuriai kitai mikrovaldiklio plokštei, tokiai kaip Arduino, pasiekti duomenis, saugomus SD kortelėje per SPI protokolą.

SD kortelės modulio darbinė įtampa yra 3,3 V, todėl jo negalima tiesiogiai prijungti prie ESP32 ar kitos mikrovaldiklio plokštės. Tam turime naudoti SD kortelės modulį arba jutiklį, kuris veikia virš 5 V.

1.1. Pinout

„MicroSD“ kortelėje iš viso yra šeši kaiščiai. Du iš jų yra maitinimo kaiščiai: VCC ir GND. Skaitant keturi kontaktai naudojami SPI ryšio protokolui. Toliau pateikiama visų šių šešių kaiščių informacija:

Maitinimo kaiščiai:

  • VCC: Jungiamas prie ESP32 5V kaiščio.
  • GND: Jungiamas prie ESP32 įžeminimo (GND) kaiščio.

SPI smeigtukai:

  • MISO: (Master In Slave Out) Jungiamas prie ESP32 MOSI (Master Out Slave In) kaiščio.
  • DŪMAI: Jungiamas prie ESP32 MISO (Master In Slave Out) kaiščio.
  • SCK: Jungiamas prie ESP32 SCK (serijinio laikrodžio) kaiščio.
  • SS: (Slave Select) Jungiasi prie kaiščio, nurodyto Arduino kode kaip SS (Slave Select) kaiščio.

2. Kaip sujungti ESP32 su MicroSD kortelės moduliu

Norėdami susieti ESP32 su MicroSD kortelės moduliu, turėsite nustatyti SD kortelės jutiklio maitinimo kaiščius. Tada nustatykite SPI kaiščius. Čia turite du pasirinkimus: galite nustatyti numatytuosius SPI kaiščius arba nustatyti savo pasirinktinius SPI kaiščius.

Naudodami numatytuosius SPI kaiščius, pridėsime SD h ir SD_MMC.h bibliotekos. Pagal numatytuosius nustatymus šios bibliotekos SPI ryšiui naudoja VSPI SPI kaiščius (23, 19, 18, 5). Tačiau SPI ryšiui galite nustatyti ir kitus kaiščius.

ESP32 yra dvi SPI sąsajos HSPI ir VSPI su jų kaiščių detalėmis:

SPI DŪMAI MISO CLK CS
VSPI D23 D19 D18 D5
HSPI D13 D12 D14 D15

Susijęs: ESP32 Pinout nuoroda – išsamus vadovas

2.2. Paruoškite SD kortelę

Tada, prieš pradėdami skaityti ir rašyti duomenis į „MicroSD“ kortelę, pirmiausia turite ją nustatyti formatuodami visus ankstesnius duomenis.

Atidarykite SD kortelę naudodami bet kurį kortelių skaitytuvą ir formatu tai.

Pasirinkite savo kortelės failų sistemos FAT32 ir spustelėkite Pradėti .

Suformatavus kortelę, pasirinkite Gerai .

Dabar jūsų SD kortelė yra paruošta susieti su ESP32 naudojant SD kortelės modulį.

2.3. Schema

Norėdami prijungti „MicroSD“ kortelės jutiklį prie ESP32, vadovaukitės toliau pateikta konfigūracija:

Toliau pateikiame prijungimo laido kaiščio konfigūracijos lentelę:

MicroSD kortelė ESP32
GND GND
VCC ATEITI
CS D5
DŪMAI D23
SCK D18
MISO D19

3. Techninė įranga

Dėl aparatinės įrangos jums tereikia keleto trumpiklio laidų, duonos lentos kartu su ESP32 ir SD kortelės moduliu.

4. Kodas

Dabar mes parašysime kodą, kuris sukurs tekstinį failą „MicroSD“ kortelėje, o po to į jį įrašys tam tikrą teksto eilutę. Kai tai padarysite, mes perskaitysime tekstinio failo turinį Arduino IDE serijiniame monitoriuje.

Paleiskite Arduino IDE ir sukompiliuokite nurodytą kodą. Po to įrašykite jį į ESP32 plokštę:

#include

#įtraukti

Failas myFile ;
konst tarpt CS = 5 ;

// Įrašykite duotą pranešimą į failą nurodytu keliu
tuštuma Rašyti failą ( konst char * kelias , konst char * žinutę ) {
// Atidarykite failą. Jis palaiko vieną failą atidaryti vienu metu
// uždarykite kitą failą prieš atidarydami naują failą
myFile = SD. atviras ( kelias , FILE_WRITE ) ;

jeigu ( myFile ) {
Serijinis. printf ( „Rašoma į %s“ , kelias ) ;
myFile. println ( žinutę ) ;
myFile. Uždaryti ( ) ; // Uždarykite failą
Serijinis. println ( 'baigtas'. ) ;
} Kitas {
Serijinis. println ( 'klaida atidarant failą' ) ;
Serijinis. println ( kelias ) ;
}
}

// Spausdinti failo turinį nurodytu keliu
tuštuma Skaityti failą ( konst char * kelias ) {
// Atidaryti failą
myFile = SD. atviras ( kelias ) ;
jeigu ( myFile ) {
Serijinis. printf ( „Nuskaitomas failas iš %s \n , kelias ) ;
// Skaityti visą failą iki paskutinio
kol ( myFile. prieinama ( ) ) {
Serijinis. rašyti ( myFile. skaityti ( ) ) ;
}
myFile. Uždaryti ( ) ; // Uždarykite failą
} Kitas {
// Jei failo atidaryti nepavyko, išspausdinkite klaidą:
Serijinis. println ( 'klaida atidarant test.txt' ) ;
}
}

tuštuma sąranka ( ) {
Serijinis. pradėti ( 9600 ) ;
delsimas ( 500 ) ;
kol ( ! Serijinis ) { ; }

Serijinis. println ( 'Inicijuoja SD kortelę...' ) ;
jeigu ( ! SD. pradėti ( CS ) ) {
Serijinis. println ( 'Inicijuoti nepavyko!' ) ;
grąžinti ;
}
Serijinis. println ( „Inicializacija atlikta“. ) ;

Rašyti failą ( '/test.txt' , „Linuxhint.com“ ) ;
Skaityti failą ( '/test.txt' ) ;
}

tuštuma kilpa ( ) {

}

4.1. Kodo paaiškinimas

Norėdami geriau suprasti, šį kodą suskirstysime į poskyrius.

Inicijavimas ir sąranka: Pirma, kodas prasidėjo įtraukiant keletą svarbių bibliotekų, susijusių su SD kortelės moduliu. SPI.h biblioteka pridedama ryšiui su SD kortele ir SD.h SD kortelės operacijoms tvarkyti. Tada jis apibrėžia visuotinį kintamąjį myFile tipo failą, skirtą failų operacijoms valdyti. CS konstanta nustatyta kaip 5 kaištis, kuris bus naudojamas kaip SD kortelės lusto pasirinkimo (CS) kaištis.

Setup() funkcija: Sąrankos funkcijoje pradedamas nuoseklusis ryšys. Po to inicijavome SD kortelės modulį naudodami SD.begin(CS) funkciją. Be to, mes taip pat apibrėžėme dvi skirtingas teksto skaitymo ir rašymo į tekstinį failą funkcijas.

Rašymas į SD kortelę: Funkcija WriteFile() atidaro failą test.txt, kad būtų galima rašyti naudojant SD.open(path, FILE_WRITE). Po to ji įrašo eilutę Linuxhint.com į failą naudodama myFile.println(message).

Skaitymas iš SD kortelės: Norėdami perskaityti failo turinį, naudojome funkciją ReadFile(). Sėkmingai nuskaitę duomenys bus siunčiami į Arduino nuoseklųjį prievadą ir rodomi Arduino IDE serijiniame monitoriuje.

5. Išvestis

Išvestyje galite pamatyti tą pačią eilutę, kurią apibrėžėme Arduino IDE kode, rodomą jūsų Arduino IDE serijiniame monitoriuje.

6. Įvairių funkcijų atlikimas naudojant „MicroSD“ kortelę naudojant ESP32

Galime atlikti įvairias operacijas, tokias kaip katalogų kūrimas, pašalinimas ar pridėjimas „MicroSD“ kortelėse tiesiai per Arduino IDE kodą.

6.1. Katalogų kūrimas „MicroSD“ kortelėje

Žemiau pateiktas kodas sukurs naują katalogą „MicroSD“ kortelėje. Jis apibrėžia funkciją, vadinamą sukurtiRež kuris paima failų sistemos objektą (fs::FS) ir kelią kaip įvestį. Ši funkcija bando sukurti katalogą nurodytu keliu ir spausdina pranešimus, nurodančius sėkmę arba nesėkmę.

#include 'FS.h'

#include 'SD.h'

#include 'SPI.h'

tuštuma sukurtiRež ( fs :: FS & fs , konst char * kelias ) {

Serijinis. printf ( 'Kuriamas rež.: %s \n , kelias ) ;

jeigu ( fs. mkdir ( kelias ) ) {

Serijinis. println ( „Sukūrė režisierius“ ) ;

} Kitas {

Serijinis. println ( 'mkdir nepavyko' ) ;

}

}

tuštuma sąranka ( ) {



Serijinis. pradėti ( 115 200 ) ;

// Inicijuoti SD kortelę

jeigu ( ! SD. pradėti ( ) ) {

Serijinis. println ( „Nepavyko pritvirtinti kortelės“ ) ;

grąžinti ;

}

// Sukurkite katalogą pavadinimu „mydir“

sukurtiRež ( SD , '/mydir' ) ;

}

tuštuma kilpa ( ) {



}

Išvestyje galite pamatyti, kaip sukurtas naujas katalogas /mydir vardas.

6.2. Katalogų sąrašas „MicroSD“ kortelėje

Žemiau esančiame kode išvardysime visus katalogus, esančius „MicroSD“ kortelėje. The sąrašasDir funkcija rekursyviai išvardija SD kortelės katalogo turinį. Jis spausdina informaciją apie katalogus (priešdėlis „DIR“) ir failus (priešdėlis „FILE“), įskaitant jų pavadinimus ir dydžius.

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

tuštuma sąrašasDir ( fs :: FS & fs , konst char * dirname , uint8_t lygius ) {
Serijinis. printf ( 'Sąrašo katalogas: %s \n , dirname ) ;
Failo šaknis = fs. atviras ( dirname ) ;
jeigu ( ! šaknis ) {
Serijinis. println ( „Nepavyko atidaryti katalogo“ ) ;
grąžinti ;
}
jeigu ( ! šaknis. isKatalogas ( ) ) {
Serijinis. println ( 'Ne katalogas' ) ;
grąžinti ;
}
Failo failas = šaknis. openNextFile ( ) ;
kol ( failą ) {
jeigu ( failą. isKatalogas ( ) ) {
Serijinis. spausdinti ( ' TU : ' ) ;
Serijinis. println ( failą. vardas ( ) ) ;
jeigu ( lygius ) {
sąrašasDir ( fs , failą. vardas ( ) , lygius - 1 ) ;
}
} Kitas {
Serijinis. spausdinti ( 'FAILAS:' ) ;
Serijinis. spausdinti ( failą. vardas ( ) ) ;
Serijinis. spausdinti ( ' DYDIS: ' ) ;
Serijinis. println ( failą. dydis ( ) ) ;
}
failą = šaknis. openNextFile ( ) ;
}
}

tuštuma sąranka ( ) {
Serijinis. pradėti ( 115 200 ) ;
jeigu ( ! SD. pradėti ( ) ) {
Serijinis. println ( „Nepavyko pritvirtinti kortelės“ ) ;
grąžinti ;
}
sąrašasDir ( SD , '/' , 0 ) ;
}

tuštuma kilpa ( ) {

}

Išvestyje galite matyti du skirtingus failus. Vienas yra tekstinis failas, o kitas yra katalogas, kurį sukūrėme ankstesniame kode.

6.3. Katalogų pašalinimas

Dabar pašalinsime anksčiau sukurtus katalogus ir tekstinius failus. Tam mes naudosime pašalintiDir funkcija, ji bandys pašalinti kelyje nurodytą katalogą. Jei pasiseks, spausdinama Rež. pašalintas ; kitu atveju spausdina rmdir nepavyko .

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

tuštuma pašalintiDir ( fs :: FS & fs , konst char * kelias ) {
Serijinis. printf ( 'Pašalinamas dir.: %s \n , kelias ) ;
jeigu ( fs. yra rm ( kelias ) ) {
Serijinis. println ( „Režisierė pašalinta“ ) ;
} Kitas {
Serijinis. println ( 'rmdir nepavyko' ) ;
}
}

tuštuma sąranka ( ) {
Serijinis. pradėti ( 115 200 ) ;

jeigu ( ! SD. pradėti ( ) ) {
Serijinis. println ( „Nepavyko pritvirtinti kortelės“ ) ;
grąžinti ;
}


}

tuštuma kilpa ( ) {

}

6.4. Gaukite „MicroSD“ kortelės tipą

„MicroSD“ kortelė arba S užtikrinti D „igital“ kortelę iš pradžių sukūrė SD kortelių asociacija ir ji skirta naudoti nešiojamuose įrenginiuose, pavyzdžiui, išmaniuosiuose telefonuose ir fotoaparatuose. SD kortelėse daugiausia yra keturių tipų šeimos:

  • SDSC (standartinės talpos SD): Šios kortelės siūlo nedidelę 2 GB atminties talpą ir naudoja FAT-12 ir FAT-16 failų sistemas.
  • SDHC (didelės talpos SD): Šios kortelės yra nuo 2 GB iki 32 GB ir naudoja FAT-32 failų sistemą.
  • SDXC (padidintos talpos SD): Šios kortelės naudoja exFAT failų sistemą ir prasideda nuo 32 GB iki 2 TB.
  • SDIO: SDIO kortelės atlieka dvejopą paskirtį, derindamos duomenų saugojimą su INPUT/OUTPUT funkcijomis.

Norėdami patikrinti kortelės tipą, paleiskite toliau pateiktą kodą:

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

tuštuma sąranka ( ) {
Serijinis. pradėti ( 115 200 ) ;

jeigu ( ! SD. pradėti ( ) ) {
Serijinis. println ( „Nepavyko pritvirtinti kortelės“ ) ;
grąžinti ;
}

uint8_t kortelės tipas = SD. kortelės tipas ( ) ;
jeigu ( kortelės tipas == CARD_NONE ) {
Serijinis. println ( „Nepridėta SD kortelė“ ) ;
grąžinti ;
}

Serijinis. spausdinti ( „SD kortelės tipas:“ ) ;
jeigu ( kortelės tipas == CARD_MMC ) {
Serijinis. println ( 'MMC' ) ;
} Kitas jeigu ( kortelės tipas == CARD_SD ) {
Serijinis. println ( 'SDSC' ) ;
} Kitas jeigu ( kortelės tipas == CARD_SDHC ) {
Serijinis. println ( 'SDHC' ) ;
} Kitas {
Serijinis. println ( 'NEŽINOMA' ) ;
}

uint64_t kortelės dydis = SD. kortelės dydis ( ) / ( 1024 * 1024 ) ;
Serijinis. printf ( 'SD kortelės dydis: %lluMB \n , kortelės dydis ) ;
}

tuštuma kilpa ( ) {
}

Kadangi turiu 32 GB kortelę, matote, kad ji yra diapazone SDHC kortelės.

6.5. Gaukite „MicroSD“ kortelės dydį

Taip pat galite gauti SD kortelės dydį įkeldami toliau pateiktą kodą į savo ESP32 plokštę.

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

tuštuma sąranka ( ) {
Serijinis. pradėti ( 115 200 ) ;

jeigu ( ! SD. pradėti ( ) ) {
Serijinis. println ( „Nepavyko pritvirtinti kortelės“ ) ;
grąžinti ;
}

uint8_t kortelės tipas = SD. kortelės tipas ( ) ;
jeigu ( kortelės tipas == CARD_NONE ) {
Serijinis. println ( „Nepridėta SD kortelė“ ) ;
grąžinti ;
}

uint64_t kortelės dydis = SD. kortelės dydis ( ) / ( 1024 * 1024 ) ;
Serijinis. printf ( 'SD kortelės dydis: %lluMB \n , kortelės dydis ) ;

// Čia galima iškviesti kitas funkcijas (listDir, createDir, removeDir ir kt.).
}

tuštuma kilpa ( ) {

}

Iš išvesties matote, kad turiu maždaug 30 GB SD kortelę.

Išvada

„MicroSD“ kortelės modulis naudojamas duomenims iš SD kortelės nuskaityti ir įrašyti naudojant ESP32 plokštę. MicroSD kortelės modulis bendrauja su mikrovaldikliu naudodamas SPI sąsają. Taigi galite naudoti SPI biblioteką arba apibrėžti savo SPI kaiščius kode. Prisijungę galite skaityti rašyti tekstinį failą arba kurti naujus katalogus SD kortelėje.