MicroSD-korttimoduulin liittäminen ESP32:n kanssa Arduino IDE:n avulla

Microsd Korttimoduulin Liittaminen Esp32 N Kanssa Arduino Ide N Avulla



ESP32 on edistynyt mikro-ohjainkortti, joka voi liittää sen kanssa useita oheislaitteita. Kuten muutkin anturit, voit myös liittää MicroSD-korttimoduulin ESP32:een. Voit käyttää MicroSD-kortin anturia tiedonkeruussovelluksiin tai lisätä mikro-ohjainkortin tallennuskapasiteettia.

Tämä artikkeli selittää vaiheet MicroSD-kortin liittämiseksi ESP32-korttiin Arduino IDE:n avulla.

Sisällysluettelo:







1. MicroSD-korttimoduuli



2. ESP32:n liittäminen MicroSD-korttimoduuliin



3. Laitteisto





4. Koodi

5. Lähtö



6. Eri toimintojen suorittaminen MicroSD-kortilla ESP32:n avulla

Johtopäätös

1. MicroSD-korttimoduuli

MicroSD-korttimoduuli on ESP32-anturi, joka voi yhdistää SD-kortin mikro-ohjainkorttiisi. Se toimii SPI-viestintäprotokollan yli. Sen avulla ESP32 tai mikä tahansa muu mikro-ohjainkortti, kuten Arduino, voi käyttää SD-kortille tallennettuja tietoja SPI-protokollan kautta.

SD-korttimoduulin käyttöjännite on 3,3 V, joten sitä ei voi kytkeä suoraan ESP32:een tai mihinkään muuhun mikro-ohjainkorttiin. Tätä varten meidän on käytettävä SD-korttimoduulia tai -anturia, joka toimii yli 5 V:n jännitteellä.

1.1. Sokka irti

MicroSD-kortissa on yhteensä kuusi nastaa. Kaksi niistä on virtanastaa: VCC ja GND. Lukeessa neljä nastaa käytetään SPI-viestintäprotokollassa. Seuraavassa on tiedot kaikista näistä kuudesta nastasta:

Virtanastat:

  • VCC: Yhdistetään ESP32 5V pintaan.
  • GND: Yhdistetään ESP32 maadoitusnastaan ​​(GND).

SPI-pinnit:

  • MISO: (Master In Slave Out) Yhdistetään ESP32 MOSI (Master Out Slave In) -nastaan.
  • SAVU: Yhdistetään ESP32 MISO (Master In Slave Out) -nastaan.
  • SCK: Yhdistetään ESP32 SCK (Serial Clock) -nastaan.
  • SS: (Slave Select) Yhdistää nastaan, joka on määritetty Arduino-koodissa SS (Slave Select) -nastaksi.

2. ESP32:n liittäminen MicroSD-korttimoduuliin

Jos haluat liittää ESP32:n MicroSD-korttimoduuliin, sinun on asetettava SD-kortin anturin virtanastat. Aseta seuraavaksi SPI-nastat. Tässä sinulla on kaksi vaihtoehtoa, voit joko asettaa oletusarvoiset SPI-nastat tai määrittää omat mukautetut SPI-nastasi.

Kun käytät oletusarvoisia SPI-nastat, aiomme lisätä SD h ja SD_MMC.h kirjastot. Oletusarvoisesti nämä kirjastot käyttävät VSPI SPI -nastat (23, 19, 18, 5) SPI-viestintää varten. Voit kuitenkin asettaa myös muita nastoja SPI-viestintään.

ESP32 sisältää kaksi SPI-liitäntää HSPI ja VSPI ja niiden nastat seuraavasti:

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

Aiheeseen liittyvä: ESP32 Pinout Reference – täydellinen opas

2.2. Ota SD-kortti valmiiksi

Seuraavaksi, ennen kuin voit jatkaa tietojen lukemista ja kirjoittamista MicroSD-kortille, sinun on ensin määritettävä se alustamalla kaikki aiemmat tiedot.

Avaa SD-kortti millä tahansa kortinlukijalla ja muoto se.

Valitse korttitiedostojärjestelmäsi FAT32 ja napsauta alkaa .

Valitse kortin alustamisen jälkeen OK .

Nyt SD-korttisi on valmis liitettäväksi ESP32:n kanssa SD-korttimoduulin avulla.

2.3. Kaaviokuva

Liitä MicroSD-korttitunnistin ESP32:een noudattamalla alla annettuja määrityksiä:

Seuraavassa on taulukko liitäntäjohdon pin-konfiguraatiosta:

MicroSD-kortti ESP32
GND GND
VCC TULE
CS D5
SAVU D23
SCK D18
MISO D19

3. Laitteisto

Laitteistoa varten tarvitset vain hyppyjohtimia koepalautaan sekä ESP32:n ja SD-korttimoduulin.

4. Koodi

Nyt kirjoitamme koodin, joka luo tekstitiedoston MicroSD-kortin sisään ja sen jälkeen se kirjoittaa siihen jonkin tekstijonon. Kun olet valmis, luemme tekstitiedoston sisällön Arduino IDE -sarjanäytössä.

Käynnistä Arduino IDE ja käännä annettu koodi. Polta sen jälkeen se ESP32-kortille:

#include

#include

Tiedosto myFile ;
konst int CS = 5 ;

// Kirjoita annettu viesti määritetyn polun tiedostoon
mitätön Kirjoita tiedosto ( konst hiiltyä * polku , konst hiiltyä * viesti ) {
// Avaa tiedosto. Se tukee yhden tiedoston avaamista kerrallaan
// sulje toinen tiedosto ennen uuden tiedoston avaamista
myFile = SD. avata ( polku , FILE_WRITE ) ;

jos ( myFile ) {
Sarja. printf ( 'Kirjoitetaan kohteeseen %s' , polku ) ;
myFile. println ( viesti ) ;
myFile. kiinni ( ) ; // Sulje tiedosto
Sarja. println ( 'valmistunut.' ) ;
} muu {
Sarja. println ( 'virhe avattaessa tiedostoa' ) ;
Sarja. println ( polku ) ;
}
}

// Tulosta tiedoston sisältö määritetylle polulle
mitätön Lue tiedosto ( konst hiiltyä * polku ) {
// Avaa tiedosto
myFile = SD. avata ( polku ) ;
jos ( myFile ) {
Sarja. printf ( 'Luetaan tiedostoa kohteesta %s \n ' , polku ) ;
// Lue koko tiedosto viimeiseen asti
sillä aikaa ( myFile. saatavilla ( ) ) {
Sarja. kirjoittaa ( myFile. lukea ( ) ) ;
}
myFile. kiinni ( ) ; // Sulje tiedosto
} muu {
// Jos tiedosto ei avautunut, tulosta virheilmoitus:
Sarja. println ( 'error avattaessa testi.txt' ) ;
}
}

mitätön perustaa ( ) {
Sarja. alkaa ( 9600 ) ;
viive ( 500 ) ;
sillä aikaa ( ! Sarja ) { ; }

Sarja. println ( 'Alustetaan SD-korttia...' ) ;
jos ( ! SD. alkaa ( CS ) ) {
Sarja. println ( 'Alustus epäonnistui!' ) ;
palata ;
}
Sarja. println ( 'Alustus tehty.' ) ;

Kirjoita tiedosto ( '/testi.txt' , 'Linuxhint.com' ) ;
Lue tiedosto ( '/testi.txt' ) ;
}

mitätön silmukka ( ) {

}

4.1. Koodin selitys

Paremman ymmärtämisen vuoksi jaamme tämän koodin alaosiin.

Alustus ja asetukset: Ensin koodi alkoi sisällyttämällä joitain tärkeitä SD-korttimoduuliin liittyviä kirjastoja. SPI.h-kirjasto on lisätty kommunikointia varten SD-kortin kanssa ja SD.h SD-kortin toimintojen käsittelyä varten. Seuraavaksi se määrittelee globaalin muuttujan myFile tyyppinen tiedosto tiedostotoimintojen hallintaan. CS-vakio on asetettu nastaksi 5, jota käytetään SD-kortin Chip Select (CS) -nastana.

Setup()-funktio: Sarjaliikenne aloitetaan asetustoiminnon sisällä. Sen jälkeen alustimme SD-korttimoduulin SD.begin(CS)-toiminnolla. Lisäksi olemme määrittäneet kaksi erilaista toimintoa tekstin lukemiseen ja kirjoittamiseen tekstitiedostoon.

SD-kortille kirjoittaminen: WriteFile()-funktio avaa tiedoston testi.txt kirjoittamista varten SD.open(polku, FILE_WRITE) avulla. Sen jälkeen se kirjoittaa tiedostoon merkkijonon Linuxhint.com komennolla myFile.println(message).

Lukeminen SD-kortilta: Olemme käyttäneet ReadFile()-funktiota tiedoston sisällön lukemiseen. Jos luku onnistuu, tiedot lähetetään Arduino-sarjaporttiin ja näytetään Arduino IDE -sarjanäytössä.

5. Lähtö

Tulosteessa näet saman merkkijonon, jonka määritimme Arduino IDE -koodin sisällä, joka näkyy Arduino IDE -sarjanäytössäsi.

6. Eri toimintojen suorittaminen MicroSD-kortilla ESP32:n avulla

Voimme suorittaa erilaisia ​​toimintoja, kuten luoda, poistaa tai lisätä hakemistoja MicroSD-korteille suoraan Arduino IDE -koodin kautta.

6.1. Hakemistojen luominen MicroSD-kortille

Alla oleva koodi luo uuden hakemiston MicroSD-kortin sisään. Se määrittelee funktion nimeltä luodaDir joka ottaa syötteenä tiedostojärjestelmäobjektin (fs::FS) ja polun. Tämä toiminto yrittää luoda hakemiston määritetyllä polulla ja tulostaa onnistumisesta tai epäonnistumisesta kertovat viestit.

#include 'FS.h'

#include 'SD.h'

#include 'SPI.h'

mitätön luodaDir ( fs :: FS & fs , konst hiiltyä * polku ) {

Sarja. printf ( 'Luodaan Dir: %s \n ' , polku ) ;

jos ( fs. mkdir ( polku ) ) {

Sarja. println ( 'Dir loi' ) ;

} muu {

Sarja. println ( 'mkdir epäonnistui' ) ;

}

}

mitätön perustaa ( ) {



Sarja. alkaa ( 115 200 ) ;

// Alusta SD-kortti

jos ( ! SD. alkaa ( ) ) {

Sarja. println ( 'Kortin kiinnitys epäonnistui' ) ;

palata ;

}

// Luo hakemisto nimeltä 'mydir'

luodaDir ( SD , '/mydir' ) ;

}

mitätön silmukka ( ) {



}

Tulosteessa näet, että uusi hakemisto on luotu /mydir nimi.

6.2. Hakemistojen luettelointi MicroSD-kortilla

Alla olevassa koodissa luetellaan kaikki MicroSD-kortin sisällä olevat hakemistot. The listaDir toiminto listaa rekursiivisesti SD-kortilla olevan hakemiston sisällön. Se tulostaa tiedot sekä hakemistoista (etuliite 'DIR') että tiedostoista (etuliite 'FILE'), mukaan lukien niiden nimet ja koot.

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

mitätön listaDir ( fs :: FS & fs , konst hiiltyä * dirname , uint8_t tasot ) {
Sarja. printf ( 'Luettelohakemisto: %s \n ' , dirname ) ;
Tiedoston juuri = fs. avata ( dirname ) ;
jos ( ! juuri ) {
Sarja. println ( 'Hakemiston avaaminen epäonnistui' ) ;
palata ;
}
jos ( ! juuri. isDirectory ( ) ) {
Sarja. println ( 'Ei hakemisto' ) ;
palata ;
}
Tiedostotiedosto = juuri. openNextFile ( ) ;
sillä aikaa ( tiedosto ) {
jos ( tiedosto. isDirectory ( ) ) {
Sarja. Tulosta ( ' SINÄ : ' ) ;
Sarja. println ( tiedosto. nimi ( ) ) ;
jos ( tasot ) {
listaDir ( fs , tiedosto. nimi ( ) , tasot - 1 ) ;
}
} muu {
Sarja. Tulosta ( 'TIEDOSTO:' ) ;
Sarja. Tulosta ( tiedosto. nimi ( ) ) ;
Sarja. Tulosta ( ' KOKO: ' ) ;
Sarja. println ( tiedosto. koko ( ) ) ;
}
tiedosto = juuri. openNextFile ( ) ;
}
}

mitätön perustaa ( ) {
Sarja. alkaa ( 115 200 ) ;
jos ( ! SD. alkaa ( ) ) {
Sarja. println ( 'Kortin kiinnitys epäonnistui' ) ;
palata ;
}
listaDir ( SD , '/' , 0 ) ;
}

mitätön silmukka ( ) {

}

Tulosteessa näet kaksi eri tiedostoa. Toinen on tekstitiedosto ja toinen on hakemisto, jonka loimme sisään edellisessä koodissa.

6.3. Hakemistojen poistaminen

Nyt poistamme aiemmin luodut hakemistot ja tekstitiedostot. Tätä varten aiomme käyttää poistaDir toiminto, se yrittää poistaa polun määrittämän hakemiston. Jos onnistuu, se tulostuu Dir poistettu ; muuten tulostuu rmdir epäonnistui .

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

mitätön poistaDir ( fs :: FS & fs , konst hiiltyä * polku ) {
Sarja. printf ( 'Poistetaan Dir: %s \n ' , polku ) ;
jos ( fs. on rm ( polku ) ) {
Sarja. println ( 'Dir poistettu' ) ;
} muu {
Sarja. println ( 'rmdir epäonnistui' ) ;
}
}

mitätön perustaa ( ) {
Sarja. alkaa ( 115 200 ) ;

jos ( ! SD. alkaa ( ) ) {
Sarja. println ( 'Kortin kiinnitys epäonnistui' ) ;
palata ;
}


}

mitätön silmukka ( ) {

}

6.4 Hanki MicroSD-korttityyppi

MicroSD-kortti tai S turvata D igital-kortti on alunperin SD-korttiyhdistyksen suunnittelema, ja se on suunniteltu käytettäväksi kannettavissa laitteissa, kuten älypuhelimissa ja kameroissa. SD-kortit sisältävät pääasiassa neljän tyyppisiä perheitä:

  • SDSC (Standard Capacity SD): Nämä kortit tarjoavat vaatimattoman 2 Gt:n tallennuskapasiteetin ja käyttävät FAT-12- ja FAT-16-tiedostojärjestelmiä.
  • SDHC (High Capacity SD): Nämä kortit vaihtelevat 2 Gt - 32 Gt ja käyttävät FAT-32-tiedostojärjestelmää.
  • SDXC (Extended Capacity SD): Nämä kortit käyttävät exFAT-tiedostojärjestelmää ja alkavat 32 Gt:sta jopa 2 Tt:iin.
  • SDIO: SDIO-korteilla on kaksi tarkoitusta yhdistämällä tiedontallennus INPUT/OUTPUT-toimintoihin.

Tarkista korttisi tyyppi suorittamalla alla oleva koodi:

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

mitätön perustaa ( ) {
Sarja. alkaa ( 115 200 ) ;

jos ( ! SD. alkaa ( ) ) {
Sarja. println ( 'Kortin kiinnitys epäonnistui' ) ;
palata ;
}

uint8_t korttityyppi = SD. korttityyppi ( ) ;
jos ( korttityyppi == CARD_NONE ) {
Sarja. println ( 'SD-korttia ei ole liitetty' ) ;
palata ;
}

Sarja. Tulosta ( 'SD-kortin tyyppi:' ) ;
jos ( korttityyppi == CARD_MMC ) {
Sarja. println ( 'MMC' ) ;
} muu jos ( korttityyppi == CARD_SD ) {
Sarja. println ( 'SDSC' ) ;
} muu jos ( korttityyppi == CARD_SDHC ) {
Sarja. println ( 'SDHC' ) ;
} muu {
Sarja. println ( 'TUNTEMATON' ) ;
}

uint64_t kortin koko = SD. kortin koko ( ) / ( 1024 * 1024 ) ;
Sarja. printf ( 'SD-kortin koko: %lluMB \n ' , kortin koko ) ;
}

mitätön silmukka ( ) {
}

Koska minulla on 32 Gt kortti, voit nähdä, että se on alueella SDHC kortit.

6.5. Hanki MicroSD-kortin koko

Voit myös saada SD-kortin koon lataamalla alla olevan koodin ESP32-kortille.

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

mitätön perustaa ( ) {
Sarja. alkaa ( 115 200 ) ;

jos ( ! SD. alkaa ( ) ) {
Sarja. println ( 'Kortin kiinnitys epäonnistui' ) ;
palata ;
}

uint8_t korttityyppi = SD. korttityyppi ( ) ;
jos ( korttityyppi == CARD_NONE ) {
Sarja. println ( 'SD-korttia ei ole liitetty' ) ;
palata ;
}

uint64_t kortin koko = SD. kortin koko ( ) / ( 1024 * 1024 ) ;
Sarja. printf ( 'SD-kortin koko: %lluMB \n ' , kortin koko ) ;

// Muut toiminnot (listDir, createDir, removeDir jne.) voidaan kutsua tästä
}

mitätön silmukka ( ) {

}

Ulostulosta näet, että minulla on noin 30 Gt:n SD-kortti.

Johtopäätös

MicroSD-korttimoduulia käytetään tietojen lukemiseen ja kirjoittamiseen SD-kortilta ESP32-kortilla. MicroSD-korttimoduuli kommunikoi mikro-ohjaimen kanssa SPI-liitännän avulla. Joten voit joko käyttää SPI-kirjastoa tai määrittää omat SPI-nastasi koodin sisään. Kun yhteys on muodostettu, voit lukea ja kirjoittaa tekstitiedoston tai luoda uusia hakemistoja SD-kortille.