MicroSD-kaardi mooduli liidestamine ESP32-ga Arduino IDE abil

Microsd Kaardi Mooduli Liidestamine Esp32 Ga Arduino Ide Abil



ESP32 on täiustatud mikrokontrolleri plaat, mis suudab sellega liidestada mitmesuguseid välisseadmeid. Sarnaselt teistele anduritele saate ka MicroSD-kaardi moodulit ESP32-ga liidestada. Saate kasutada MicroSD-kaardi andurit andmete logimise rakenduste jaoks või suurendada oma mikrokontrolleri plaadi mälumahtu.

See artikkel selgitab samme MicroSD-kaardi liidestamiseks ESP32-plaadiga, kasutades Arduino IDE-d.

Sisukord:







1. MicroSD-kaardi moodul



2. ESP32 ühendamine MicroSD-kaardi mooduliga



3. Riistvara





4. Kood

5. Väljund



6. Erinevate funktsioonide täitmine MicroSD-kaardil ESP32 abil

Järeldus

1. MicroSD-kaardi moodul

MicroSD-kaardi moodul on ESP32 andur, mis suudab ühendada SD-kaardi teie mikrokontrolleri plaadiga. See töötab SPI sideprotokolli kaudu. See võimaldab ESP32-l või mõnel muul mikrokontrolleriplaadil, näiteks Arduino-l, pääseda SPI-protokolli kaudu juurde SD-kaardile salvestatud andmetele.

SD-kaardi mooduli tööpinge on 3,3 V, seega pole seda võimalik otse ühendada ESP32 või mõne muu mikrokontrolleri plaadiga. Selleks peame kasutama SD-kaardi moodulit või andurit, mis töötab üle 5 V.

1.1. Pinout

MicroSD-kaardil on kokku kuus kontakti. Kaks neist on toiteviigud: VCC ja GND. Lugemise ajal kasutatakse SPI-sideprotokolli jaoks nelja kontakti. Järgnevalt on toodud kõigi nende kuue tihvti üksikasjad.

Toitetihvtid:

  • VCC: Ühendab ESP32 5V viiguga.
  • GND: Ühendab ESP32 maanduse (GND) kontaktiga.

SPI tihvtid:

  • MISO: (Master In Slave Out) Ühendab ESP32 MOSI (Master Out Slave In) viiguga.
  • SUITS: Ühendab ESP32 MISO (Master In Slave Out) viiguga.
  • SCK: Ühendab ESP32 SCK (serial Clock) viiguga.
  • SS: (Slave Select) Ühendab Arduino koodis SS (Slave Select) viiguna määratud viiguga.

2. ESP32 ühendamine MicroSD-kaardi mooduliga

ESP32 ühendamiseks MicroSD-kaardi mooduliga peate seadistama oma SD-kaardi anduri toitepistikud. Järgmisena seadistage SPI-tihvtid. Siin on teil kaks valikut: saate määrata SPI vaikeviigud või määrata oma kohandatud SPI tihvtid.

Kui kasutate vaike-SPI-tihvte, lisame SD h ja SD_MMC.h raamatukogud. Vaikimisi võtavad need teegid SPI side jaoks VSPI SPI kontaktid (23, 19, 18, 5). Siiski saate SPI-suhtluseks määrata ka muid kontakte.

ESP32 sisaldab kahte SPI-liidest HSPI ja VSPI koos nende kontaktide üksikasjadega järgmiselt:

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

Seotud: ESP32 pinouti viide – täielik juhend

2.2. Valmistage SD-kaart valmis

Järgmiseks, enne kui saate jätkata andmete lugemist ja kirjutamist MicroSD-kaardile, peate esmalt selle seadistama, vormindades kõik sellel olevad varasemad andmed.

Avage oma SD-kaart mis tahes kaardilugeja abil ja vormingus seda.

Valige oma kaardi failisüsteemi jaoks FAT32 ja klõpsake nuppu Alusta .

Pärast kaardi vormindamist valige Okei .

Nüüd on teie SD-kaart SD-kaardi mooduli abil ESP32-ga liidestamiseks valmis.

2.3. Skemaatiline diagramm

MicroSD-kaardi anduri ühendamiseks ESP32-ga järgige allolevat konfiguratsiooni:

Ühendusjuhtme kontakti konfiguratsiooni tabel on järgmine:

MicroSD-kaart ESP32
GND GND
VCC TULE
CS D5
SUITSU D23
SCK D18
MISO D19

3. Riistvara

Riistvara jaoks vajate lihtsalt mõnda hüppaja juhtmeid leivalauale koos ESP32 ja SD-kaardi mooduliga.

4. Kood

Nüüd kirjutame koodi, mis loob MicroSD-kaardile tekstifaili ja pärast seda kirjutab see sellele tekstistringi. Kui see on tehtud, loeme tekstifaili sisu Arduino IDE jadamonitoril.

Käivitage Arduino IDE ja kompileerige antud kood. Pärast seda kirjutage see oma ESP32 plaadile:

#include

#include

Faileerige myFile ;
konst int CS = 5 ;

// Kirjutage antud sõnum määratud teel asuvasse faili
tühine Kirjuta faili ( konst char * tee , konst char * sõnum ) {
// Avage fail. See toetab ühe faili korraga avamist
// sulgege teine ​​fail enne uue faili avamist
myFile = SD. avatud ( tee , FILE_WRITE ) ;

kui ( myFile ) {
Sari. printf ( 'Kirjutamine %s' , tee ) ;
myFile. println ( sõnum ) ;
myFile. Sulge ( ) ; // Sule fail
Sari. println ( 'lõpetatud.' ) ;
} muidu {
Sari. println ( 'viga faili avamisel' ) ;
Sari. println ( tee ) ;
}
}

// Faili sisu printimine määratud teel
tühine Loe faili ( konst char * tee ) {
// Avatud fail
myFile = SD. avatud ( tee ) ;
kui ( myFile ) {
Sari. printf ( 'Faili lugemine asukohast %s \n ' , tee ) ;
// Loe kogu faili kuni viimaseni
samas ( myFile. saadaval ( ) ) {
Sari. kirjutada ( myFile. lugeda ( ) ) ;
}
myFile. Sulge ( ) ; // Sule fail
} muidu {
// Kui faili avamine ebaõnnestus, printige tõrketeade:
Sari. println ( 'viga test.txt avamisel' ) ;
}
}

tühine seadistamine ( ) {
Sari. alustada ( 9600 ) ;
viivitus ( 500 ) ;
samal ajal ( ! Sari ) { ; }

Sari. println ( 'SD-kaardi lähtestamine...' ) ;
kui ( ! SD. alustada ( CS ) ) {
Sari. println ( 'Initsialiseerimine ebaõnnestus!' ) ;
tagasi ;
}
Sari. println ( 'Initsialiseerimine tehtud.' ) ;

Kirjuta faili ( '/test.txt' , 'Linuxhint.com' ) ;
Loe faili ( '/test.txt' ) ;
}

tühine silmus ( ) {

}

4.1. Koodi selgitus

Parema mõistmise huvides jagame selle koodi alamosadeks.

Initsialiseerimine ja seadistamine: Esiteks sai kood alguse mõne olulise SD-kaardi mooduliga seotud teegi kaasamisest. SPI.h teek on lisatud SD-kaardiga suhtlemiseks ja SD.h SD-kaardi toimingute käsitlemiseks. Järgmisena määratleb see globaalse muutuja myFile tüüpi fail failitoimingute haldamiseks. CS-konstandiks on seatud viik 5, mida kasutatakse SD-kaardi kiibi valimise (CS) viivana.

Setup() funktsioon: Seadistusfunktsiooni sees käivitatakse jadaühendus. Pärast seda initsialiseerisime SD-kaardi mooduli funktsiooni SD.begin(CS) abil. Lisaks oleme määratlenud kaks erinevat funktsiooni teksti lugemiseks ja tekstifaili kirjutamiseks.

SD-kaardile kirjutamine: Funktsioon WriteFile() avab faili test.txt kirjutamiseks SD.open(path, FILE_WRITE) abil. Pärast seda kirjutab see faili myFile.println(message) abil stringi Linuxhint.com.

SD-kaardilt lugemine: Faili sisu lugemiseks oleme kasutanud funktsiooni ReadFile(). Kui lugemine õnnestub, saadetakse andmed Arduino jadaporti ja kuvatakse Arduino IDE jadamonitoril.

5. Väljund

Väljundis näete sama stringi, mille määratlesime Arduino IDE koodi sees, kuvatakse teie Arduino IDE jadamonitoril.

6. Erinevate funktsioonide täitmine MicroSD-kaardil ESP32 abil

Saame teha mitmesuguseid toiminguid, nagu näiteks MicroSD-kaartide kataloogide loomine, eemaldamine või lisamine otse Arduino IDE-koodi kaudu.

6.1. Kataloogide loomine MicroSD-kaardil

Allpool olev kood loob MicroSD-kaardile uue kataloogi. See määratleb funktsiooni nimega luuaDir mis võtab sisendiks failisüsteemi objekti (fs::FS) ja tee. See funktsioon üritab luua määratud teega kataloogi ja prindib teateid, mis näitavad õnnestumist või ebaõnnestumist.

#include 'FS.h'

#include 'SD.h'

#include 'SPI.h'

tühine luuaDir ( fs :: FS & fs , konst char * tee ) {

Sari. printf ( 'Režii loomine: %s \n ' , tee ) ;

kui ( fs. mkdir ( tee ) ) {

Sari. println ( 'Režissöör loodud' ) ;

} muidu {

Sari. println ( 'mkdir ebaõnnestus' ) ;

}

}

tühine seadistamine ( ) {



Sari. alustada ( 115 200 ) ;

// SD-kaardi lähtestamine

kui ( ! SD. alustada ( ) ) {

Sari. println ( 'Kaardi paigaldamine ebaõnnestus' ) ;

tagasi ;

}

// Looge kataloog nimega 'mydir'

luuaDir ( SD , '/mydir' ) ;

}

tühine silmus ( ) {



}

Väljundis näete, kuidas luuakse uus kataloog /mydir nimi.

6.2. Kataloogide loend MicroSD-kaardil

Allolevas koodis loetleme kõik MicroSD-kaardil olevad kataloogid. The listDir funktsioon loetleb rekursiivselt SD-kaardil oleva kataloogi sisu. See prindib teavet nii kataloogide (eesliide “DIR”) kui ka failide (eesliite “FILE”) kohta, sealhulgas nende nimed ja suurused.

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

tühine nimekiriDir ( fs :: FS & fs , konst char * dirname , uint8_t tasemed ) {
Sari. printf ( 'Loendikataloog: %s \n ' , dirname ) ;
Faili juur = fs. avatud ( dirname ) ;
kui ( ! juur ) {
Sari. println ( 'Kataloogi avamine nurjus' ) ;
tagasi ;
}
kui ( ! juur. isKataloog ( ) ) {
Sari. println ( 'Pole kataloog' ) ;
tagasi ;
}
Faili fail = juur. openNextFile ( ) ;
samal ajal ( faili ) {
kui ( faili. isKataloog ( ) ) {
Sari. printida ( 'SINA:' ) ;
Sari. println ( faili. nimi ( ) ) ;
kui ( tasemed ) {
nimekiriDir ( fs , faili. nimi ( ) , tasemed - 1 ) ;
}
} muidu {
Sari. printida ( 'FAIL:' ) ;
Sari. printida ( faili. nimi ( ) ) ;
Sari. printida ( ' SUURUS: ' ) ;
Sari. println ( faili. suurus ( ) ) ;
}
faili = juur. openNextFile ( ) ;
}
}

tühine seadistamine ( ) {
Sari. alustada ( 115 200 ) ;
kui ( ! SD. alustada ( ) ) {
Sari. println ( 'Kaardi paigaldamine ebaõnnestus' ) ;
tagasi ;
}
nimekiriDir ( SD , '/' , 0 ) ;
}

tühine silmus ( ) {

}

Väljundis näete kahte erinevat faili. Üks on tekstifail ja teine ​​on kataloog, mille lõime eelmises koodis.

6.3. Kataloogide eemaldamine

Nüüd eemaldame varem loodud kataloogid ja tekstifailid. Selleks hakkame kasutama eemaldaDir funktsioon, proovib see eemaldada tee määratud kataloogi. Kui see õnnestub, prinditakse Dir eemaldati ; muidu prindib rmdir ebaõnnestus .

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

tühine eemaldaDir ( fs :: FS & fs , konst char * tee ) {
Sari. printf ( 'Removing Dir: %s \n ' , tee ) ;
kui ( fs. on rm ( tee ) ) {
Sari. println ( 'Dir eemaldatud' ) ;
} muidu {
Sari. println ( 'rmdir ebaõnnestus' ) ;
}
}

tühine seadistamine ( ) {
Sari. alustada ( 115 200 ) ;

kui ( ! SD. alustada ( ) ) {
Sari. println ( 'Kaardi paigaldamine ebaõnnestus' ) ;
tagasi ;
}


}

tühine silmus ( ) {

}

6.4. Hankige MicroSD-kaardi tüüp

MicroSD-kaart või S kindlustama D igital kaardi kujundas algselt SD-kaartide ühendus ja see on mõeldud kasutamiseks kaasaskantavates seadmetes, nagu nutitelefonid ja kaamerad. SD-kaardid sisaldavad peamiselt nelja tüüpi perekondi:

  • SDSC (standardse mahutavusega SD): Need kaardid pakuvad tagasihoidlikku 2 GB salvestusmahtu ja kasutavad failisüsteeme FAT-12 ja FAT-16.
  • SDHC (suure võimsusega SD): Need kaardid on vahemikus 2 GB kuni 32 GB ja kasutavad FAT-32 failisüsteemi.
  • SDXC (laiendatud mahutavusega SD): Need kaardid kasutavad exFAT-failisüsteemi ja algavad 32 GB-st kuni 2 TB-ni.
  • SDIO: SDIO-kaartidel on kaks eesmärki, ühendades andmesalvestuse funktsiooniga INPUT/OUTPUT.

Kaardi tüübi kontrollimiseks käivitage allolev kood:

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

tühine seadistamine ( ) {
Sari. alustada ( 115 200 ) ;

kui ( ! SD. alustada ( ) ) {
Sari. println ( 'Kaardi paigaldamine ebaõnnestus' ) ;
tagasi ;
}

uint8_t kaardi tüüp = SD. kaardi tüüp ( ) ;
kui ( kaardi tüüp == CARD_NONE ) {
Sari. println ( 'SD-kaarti pole lisatud' ) ;
tagasi ;
}

Sari. printida ( 'SD-kaardi tüüp:' ) ;
kui ( kaardi tüüp == CARD_MMC ) {
Sari. println ( 'MMC' ) ;
} muidu kui ( kaardi tüüp == CARD_SD ) {
Sari. println ( 'SDSC' ) ;
} muidu kui ( kaardi tüüp == CARD_SDHC ) {
Sari. println ( 'SDHC' ) ;
} muidu {
Sari. println ( 'TEADMATU' ) ;
}

uint64_t kaardi suurus = SD. kaardi suurus ( ) / ( 1024 * 1024 ) ;
Sari. printf ( 'SD-kaardi suurus: %lluMB \n ' , kaardi suurus ) ;
}

tühine silmus ( ) {
}

Kuna mul on 32 GB kaart, siis näete, et see jääb vahemikku SDHC kaardid.

6.5. Hankige MicroSD-kaardi suurus

SD-kaardi suuruse saate teada ka siis, kui laadite alloleva koodi oma ESP32 plaadile.

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

tühine seadistamine ( ) {
Sari. alustada ( 115 200 ) ;

kui ( ! SD. alustada ( ) ) {
Sari. println ( 'Kaardi paigaldamine ebaõnnestus' ) ;
tagasi ;
}

uint8_t kaardi tüüp = SD. kaardi tüüp ( ) ;
kui ( kaardi tüüp == CARD_NONE ) {
Sari. println ( 'SD-kaarti pole lisatud' ) ;
tagasi ;
}

uint64_t kaardi suurus = SD. kaardi suurus ( ) / ( 1024 * 1024 ) ;
Sari. printf ( 'SD-kaardi suurus: %lluMB \n ' , kaardi suurus ) ;

// Siin saab kutsuda muid funktsioone (listDir, createDir, removeDir jne).
}

tühine silmus ( ) {

}

Väljundist näete, et mul on umbes 30 GB SD-kaart.

Järeldus

MicroSD-kaardi moodulit kasutatakse ESP32 plaadi abil SD-kaardilt andmete lugemiseks ja kirjutamiseks. MicroSD-kaardi moodul suhtleb mikrokontrolleriga SPI-liidese abil. Nii saate kasutada SPI teeki või määrata koodi sees oma SPI-nööpnõelad. Pärast ühenduse loomist saate lugeda tekstifaili ja luua SD-kaardil uusi katalooge.