Kā savienot MicroSD kartes moduli ar ESP32, izmantojot Arduino IDE

Ka Savienot Microsd Kartes Moduli Ar Esp32 Izmantojot Arduino Ide



ESP32 ir uzlabota mikrokontrollera plate, kas ar to var savienot dažādu perifērijas ierīču skaitu. Tāpat kā citus sensorus, varat arī saskarties ar MicroSD kartes moduli ar ESP32. Varat izmantot MicroSD kartes sensoru datu reģistrēšanas lietojumprogrammām vai palielināt mikrokontrollera plates atmiņas ietilpību.

Šajā rakstā tiks izskaidrotas darbības, kā savienot MicroSD karti ar ESP32 plati, izmantojot Arduino IDE.

Satura rādītājs:







1. MicroSD kartes modulis



2. Kā savienot ESP32 ar MicroSD kartes moduli



3. Aparatūra





4. Kods

5. Izvade



6. Dažādu funkciju veikšana MicroSD kartē, izmantojot ESP32

Secinājums

1. MicroSD kartes modulis

MicroSD kartes modulis ir ESP32 sensors, kas var savienot SD karti ar jūsu mikrokontrollera plati. Tas darbojas, izmantojot SPI sakaru protokolu. Tas ļauj ESP32 vai jebkurai citai mikrokontrollera platei, piemēram, Arduino, piekļūt datiem, kas saglabāti SD kartē, izmantojot SPI protokolu.

SD kartes moduļa darba spriegums ir 3,3 V, tāpēc to nav iespējams tieši savienot ar ESP32 vai kādu citu mikrokontrollera plati. Šim nolūkam mums ir jāizmanto SD kartes modulis vai sensors, kas darbojas virs 5 V.

1.1. Pinout

MicroSD kartei kopumā ir sešas tapas. Divas no tām ir barošanas tapas: VCC un GND. Nolasīšanas laikā SPI sakaru protokolam tiek izmantoti četri kontakti. Tālāk ir sniegta informācija par visām šīm sešām tapām:

Barošanas tapas:

  • VCC: Savieno ar ESP32 5V kontaktu.
  • GND: Savieno ar ESP32 zemējuma (GND) tapu.

SPI piespraudes:

  • MISO: (Master In Slave Out) Savieno ar ESP32 MOSI (Master Out Slave In) tapu.
  • DŪMU: Savieno ar ESP32 MISO (Master In Slave Out) tapu.
  • SCK: Savieno ar ESP32 SCK (sērijas pulksteņa) tapu.
  • SS: (Slave Select) Savieno ar tapu, kas norādīta Arduino kodā kā SS (Slave Select) tapa.

2. Kā savienot ESP32 ar MicroSD kartes moduli

Lai ESP32 savienotu ar MicroSD kartes moduli, jums būs jāiestata SD kartes sensora barošanas tapas. Pēc tam iestatiet SPI tapas. Šeit jums ir divas izvēles: varat iestatīt noklusējuma SPI tapas vai definēt savus pielāgotos SPI tapas.

Izmantojot noklusējuma SPI tapas, mēs pievienosim SD h un SD_MMC.h bibliotēkas. Pēc noklusējuma šīs bibliotēkas SPI saziņai izmanto VSPI SPI tapas (23, 19, 18, 5). Tomēr SPI saziņai varat iestatīt arī citas tapas.

ESP32 satur divus SPI interfeisus HSPI un VSPI ar šādu tapu detaļu:

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

Saistīts: ESP32 Pinout atsauce — pilnīga rokasgrāmata

2.2. Sagatavojiet SD karti

Pēc tam, pirms varat turpināt datu lasīšanu un ierakstīšanu MicroSD kartē, vispirms tā ir jāiestata, formatējot visus iepriekšējos datus.

Atveriet SD karti, izmantojot jebkuru karšu lasītāju un formātā to.

Kartes failu sistēmai atlasiet FAT32 un noklikšķiniet uz Sākt .

Pēc kartes formatēšanas atlasiet labi .

Tagad jūsu SD karte ir gatava saskarnei ar ESP32, izmantojot SD kartes moduli.

2.3. Shematiska diagramma

Lai savienotu MicroSD kartes sensoru ar ESP32, izpildiet tālāk norādīto konfigurāciju:

Tālāk ir sniegta tabula savienojuma vada tapas konfigurācijai:

MicroSD karte ESP32
GND GND
VCC NĀC
CS D5
DŪMU D23
SCK D18
MISO D19

3. Aparatūra

Aparatūrai jums vienkārši ir nepieciešami daži džemperu vadi maizes panelim, kā arī ESP32 un SD kartes modulis.

4. Kods

Tagad mēs uzrakstīsim kodu, kas MicroSD kartē izveidos teksta failu, un pēc tam tas ierakstīs kādu teksta virkni. Kad tas būs izdarīts, mēs nolasīsim teksta faila saturu Arduino IDE sērijas monitorā.

Palaidiet Arduino IDE un apkopojiet norādīto kodu. Pēc tam ierakstiet to savā ESP32 platē:

#include

#include

Fails myFile ;
konst starpt CS = 5 ;

// Ierakstiet doto ziņojumu failā norādītajā ceļā
nederīgs Rakstīt failu ( konst char * ceļš , konst char * ziņa ) {
// Atveriet failu. Tā atbalsta vienu failu, lai atvērtu vienlaikus
// aizveriet otru failu pirms jauna faila atvēršanas
myFile = SD. atvērts ( ceļš , FILE_WRITE ) ;

ja ( myFile ) {
Seriāls. printf ( 'Writing to %s' , ceļš ) ;
myFile. println ( ziņa ) ;
myFile. aizveriet ( ) ; // Aizveriet failu
Seriāls. println ( 'pabeigts.' ) ;
} cits {
Seriāls. println ( 'kļūda atverot failu' ) ;
Seriāls. println ( ceļš ) ;
}
}

// Drukājiet faila saturu norādītajā ceļā
nederīgs Lasīt failu ( konst char * ceļš ) {
// Atver failu
myFile = SD. atvērts ( ceļš ) ;
ja ( myFile ) {
Seriāls. printf ( 'Notiek faila lasīšana no %s \n ' , ceļš ) ;
// Lasīt visu failu līdz pēdējam
kamēr ( myFile. pieejams ( ) ) {
Seriāls. rakstīt ( myFile. lasīt ( ) ) ;
}
myFile. aizveriet ( ) ; // Aizveriet failu
} cits {
// Ja failu neizdevās atvērt, izdrukājiet kļūdu:
Seriāls. println ( 'kļūda atverot test.txt' ) ;
}
}

nederīgs uzstādīt ( ) {
Seriāls. sākt ( 9600 ) ;
kavēšanās ( 500 ) ;
kamēr ( ! Seriāls ) { ; }

Seriāls. println ( 'Inicializē SD karti...' ) ;
ja ( ! SD. sākt ( CS ) ) {
Seriāls. println ( 'Inicializācija neizdevās!' ) ;
atgriezties ;
}
Seriāls. println ( 'Inicializācija veikta.' ) ;

Rakstīt failu ( '/test.txt' , 'Linuxhint.com' ) ;
Lasīt failu ( '/test.txt' ) ;
}

nederīgs cilpa ( ) {

}

4.1. Koda skaidrojums

Lai labāk izprastu, mēs sadalīsim šo kodu apakšdaļās.

Inicializācija un iestatīšana: Pirmkārt, kods sākās, iekļaujot dažas svarīgas bibliotēkas, kas saistītas ar SD kartes moduli. SPI.h bibliotēka ir pievienota saziņai ar SD karti un SD.h, lai apstrādātu SD kartes darbības. Tālāk tas definē globālo mainīgo myFile tipa fails, lai pārvaldītu failu darbības. CS konstante ir iestatīta uz 5. tapu, kas tiks izmantota kā Chip Select (CS) tapa SD kartei.

Setup() funkcija: Iestatīšanas funkcijā tiek sākta seriālā komunikācija. Pēc tam mēs inicializējām SD kartes moduli, izmantojot funkciju SD.begin(CS). Turklāt mēs esam arī definējuši divas dažādas funkcijas teksta lasīšanai un rakstīšanai teksta failā.

Rakstīšana SD kartē: Funkcija WriteFile() atver failu test.txt rakstīšanai, izmantojot SD.open(path, FILE_WRITE). Pēc tam tas failā ieraksta virkni Linuxhint.com, izmantojot myFile.println(message).

Nolasīšana no SD kartes: Lai lasītu faila saturu, esam izmantojuši funkciju ReadFile(). Ja dati ir veiksmīgi nolasīti, dati tiks nosūtīti uz Arduino seriālo portu un parādīti Arduino IDE seriālajā monitorā.

5. Izvade

Izvadē jūs varat redzēt to pašu virkni, kuru mēs definējām Arduino IDE kodā, kas tiek parādīta jūsu Arduino IDE sērijas monitorā.

6. Dažādu funkciju veikšana MicroSD kartē, izmantojot ESP32

Mēs varam veikt dažādas darbības, piemēram, izveidot, noņemt vai pievienot direktorijus MicroSD kartēs tieši, izmantojot Arduino IDE kodu.

6.1. Direktoriju izveide MicroSD kartē

Tālāk norādītais kods izveidos jaunu direktoriju MicroSD kartē. Tas definē funkciju, ko sauc izveidotDir kas izmanto failu sistēmas objektu (fs::FS) un ceļu kā ievadi. Šī funkcija mēģina izveidot direktoriju ar norādīto ceļu un izdrukā ziņojumus, kas norāda uz panākumiem vai neveiksmēm.

#include 'FS.h'

#include 'SD.h'

#include 'SPI.h'

nederīgs izveidotDir ( fs :: FS & fs , konst char * ceļš ) {

Seriāls. printf ( 'Izveido Dir.: %s \n ' , ceļš ) ;

ja ( fs. mkdir ( ceļš ) ) {

Seriāls. println ( 'Režisors izveidots' ) ;

} cits {

Seriāls. println ( 'mkdir neizdevās' ) ;

}

}

nederīgs uzstādīt ( ) {



Seriāls. sākt ( 115200 ) ;

// Inicializēt SD karti

ja ( ! SD. sākt ( ) ) {

Seriāls. println ( 'Kartes montāža neizdevās' ) ;

atgriezties ;

}

// Izveidojiet direktoriju ar nosaukumu 'mydir'

izveidotDir ( SD , '/mydir' ) ;

}

nederīgs cilpa ( ) {



}

Izvadē jūs varat redzēt, ka tiek izveidots jauns direktorijs /mydir nosaukums.

6.2. Sarakstu direktoriji MicroSD kartē

Zemāk esošajā kodā mēs uzskaitīsim visus direktorijus, kas atrodas MicroSD kartē. The sarakstsDir funkcija rekursīvi uzskaita SD kartes direktorija saturu. Tas drukā informāciju gan par direktorijiem (ar prefiksu “DIR”), gan failiem (priekšdēli “FILE”), tostarp to nosaukumus un izmērus.

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

nederīgs sarakstsDir ( fs :: FS & fs , konst char * dirname , uint8_t līmeņi ) {
Seriāls. printf ( 'Saraksta direktorijs: %s \n ' , dirname ) ;
Faila sakne = fs. atvērts ( dirname ) ;
ja ( ! sakne ) {
Seriāls. println ( 'Neizdevās atvērt direktoriju' ) ;
atgriezties ;
}
ja ( ! sakne. ir Katalogs ( ) ) {
Seriāls. println ( 'Nav direktorija' ) ;
atgriezties ;
}
Faila fails = sakne. openNextFile ( ) ;
kamēr ( failu ) {
ja ( failu. ir Katalogs ( ) ) {
Seriāls. drukāt ( 'TU:' ) ;
Seriāls. println ( failu. nosaukums ( ) ) ;
ja ( līmeņi ) {
sarakstsDir ( fs , failu. nosaukums ( ) , līmeņi - 1 ) ;
}
} cits {
Seriāls. drukāt ( 'FILE:' ) ;
Seriāls. drukāt ( failu. nosaukums ( ) ) ;
Seriāls. drukāt ( ' IZMĒRS: ' ) ;
Seriāls. println ( failu. Izmērs ( ) ) ;
}
failu = sakne. openNextFile ( ) ;
}
}

nederīgs uzstādīt ( ) {
Seriāls. sākt ( 115200 ) ;
ja ( ! SD. sākt ( ) ) {
Seriāls. println ( 'Kartes montāža neizdevās' ) ;
atgriezties ;
}
sarakstsDir ( SD , '/' , 0 ) ;
}

nederīgs cilpa ( ) {

}

Izvadē var redzēt divus dažādus failus. Viens ir teksta fails, bet otrs ir direktorijs, kuru mēs izveidojām iepriekšējā kodā.

6.3. Katalogu noņemšana

Tagad mēs noņemsim iepriekš izveidotos direktorijus un teksta failus. Šim nolūkam mēs izmantosim noņemtDir funkcija, tas mēģinās noņemt direktoriju, kas norādīts ceļā. Ja izdodas, tas tiek izdrukāts Direktors noņemts ; pretējā gadījumā tas drukā rmdir neizdevās .

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

nederīgs noņemtDir ( fs :: FS & fs , konst char * ceļš ) {
Seriāls. printf ( 'Notiek direktorija noņemšana: %s \n ' , ceļš ) ;
ja ( fs. ir rm ( ceļš ) ) {
Seriāls. println ( 'Dir noņemts' ) ;
} cits {
Seriāls. println ( 'rmdir neizdevās' ) ;
}
}

nederīgs uzstādīt ( ) {
Seriāls. sākt ( 115200 ) ;

ja ( ! SD. sākt ( ) ) {
Seriāls. println ( 'Kartes montāža neizdevās' ) ;
atgriezties ;
}


}

nederīgs cilpa ( ) {

}

6.4. Iegūstiet MicroSD kartes veidu

MicroSD karte vai S ecure D igital karti sākotnēji izstrādāja SD karšu asociācija, un tā ir paredzēta lietošanai pārnēsājamās ierīcēs, piemēram, viedtālruņos un kamerās. SD kartēs galvenokārt ir četru veidu saimes:

  • SDSC (standarta ietilpības SD): Šīs kartes piedāvā nelielu atmiņas ietilpību — 2 GB, un tās izmanto failu sistēmas FAT-12 un FAT-16.
  • SDHC (augstas ietilpības SD): Šīs kartes svārstās no 2 GB līdz 32 GB, un tās izmanto FAT-32 failu sistēmu.
  • SDXC (paplašinātas ietilpības SD): Šīs kartes izmanto exFAT failu sistēmu un sākas no 32 GB līdz pat 2 TB.
  • SDIO: SDIO kartēm ir divi mērķi, apvienojot datu glabāšanu ar INPUT/OUTPUT funkcijām.

Lai pārbaudītu kartes veidu, palaidiet tālāk norādīto kodu:

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

nederīgs uzstādīt ( ) {
Seriāls. sākt ( 115200 ) ;

ja ( ! SD. sākt ( ) ) {
Seriāls. println ( 'Kartes montāža neizdevās' ) ;
atgriezties ;
}

uint8_t kartes veids = SD. kartes veids ( ) ;
ja ( kartes veids == CARD_NONE ) {
Seriāls. println ( 'Nav pievienota SD karte' ) ;
atgriezties ;
}

Seriāls. drukāt ( 'SD kartes veids:' ) ;
ja ( kartes veids == CARD_MMC ) {
Seriāls. println ( 'MMC' ) ;
} cits ja ( kartes veids == CARD_SD ) {
Seriāls. println ( 'SDSC' ) ;
} cits ja ( kartes veids == CARD_SDHC ) {
Seriāls. println ( 'SDHC' ) ;
} cits {
Seriāls. println ( 'NEZINĀMS' ) ;
}

uint64_t kartes izmērs = SD. kartes izmērs ( ) / ( 1024 * 1024 ) ;
Seriāls. printf ( 'SD kartes izmērs: %lluMB \n ' , kartes izmērs ) ;
}

nederīgs cilpa ( ) {
}

Tā kā man ir 32 GB karte, jūs varat redzēt, ka tā atrodas diapazonā SDHC kartes.

6.5. Iegūstiet MicroSD kartes izmēru

Varat arī iegūt SD kartes izmēru, augšupielādējot tālāk norādīto kodu savā ESP32 platē.

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

nederīgs uzstādīt ( ) {
Seriāls. sākt ( 115200 ) ;

ja ( ! SD. sākt ( ) ) {
Seriāls. println ( 'Kartes montāža neizdevās' ) ;
atgriezties ;
}

uint8_t kartes veids = SD. kartes veids ( ) ;
ja ( kartes veids == CARD_NONE ) {
Seriāls. println ( 'Nav pievienota SD karte' ) ;
atgriezties ;
}

uint64_t kartes izmērs = SD. kartes izmērs ( ) / ( 1024 * 1024 ) ;
Seriāls. printf ( 'SD kartes izmērs: %lluMB \n ' , kartes izmērs ) ;

// Šeit var izsaukt citas funkcijas (listDir, createDir, removeDir utt.).
}

nederīgs cilpa ( ) {

}

No izejas var redzēt, ka man ir aptuveni 30 GB SD karte.

Secinājums

MicroSD kartes modulis tiek izmantots, lai nolasītu un ierakstītu datus no SD kartes, izmantojot ESP32 plati. MicroSD kartes modulis sazinās ar mikrokontrolleri, izmantojot SPI interfeisu. Tātad jūs varat izmantot SPI bibliotēku vai kodā definēt savus SPI tapas. Kad savienojums ir izveidots, varat lasīt un rakstīt teksta failu vai izveidot jaunus direktorijus savā SD kartē.