Search Code

ESP32 ટ્યુટોરિયલ 40/55 - માઇક્રો SD કાર્ડ પર વાંચન અને લેખન | SunFounder ની ESP32 IoT લર્નિંગ કિટ

ESP32 ટ્યુટોરિયલ 40/55 - માઇક્રો SD કાર્ડ પર વાંચન અને લેખન | SunFounder ની ESP32 IoT લર્નિંગ કિટ

આ ટ્યુટોરિયલમાં, આપણે ESP32 અને SunFounder ESP32 એક્સટેન્શન બોર્ડનો ઉપયોગ કરીને માઇક્રો SD કાર્ડમાંથી કેવી રીતે વાંચવું અને લખવું તે શીખીશું. આ આપણને ડેટા સંગ્રહિત કરવા અને પછીથી તેને પુનઃપ્રાપ્ત કરવાની મંજૂરી આપશે, જે ઘણી IoT એપ્લિકેશનો માટે આવશ્યક છે. આ ટ્યુટોરિયલના અંત સુધીમાં, તમારી પાસે એક કાર્યક્ષમ સેટઅપ હશે જે માઇક્રો SD કાર્ડમાંથી ફાઇલો બનાવી, લખી અને વાંચી શકે છે.

શરૂ કરવા માટે, ખાતરી કરો કે તમારું માઇક્રો SD કાર્ડ FAT32 માં યોગ્ય રીતે ફોર્મેટ થયેલ છે, કારણ કે ESP32 કાર્ડ સાથે ક્રિયાપ્રતિક્રિયા કરવા માટે આ જરૂરી ફાઇલ સિસ્ટમ છે. અમે SD_MMC લાઇબ્રેરીનો ઉપયોગ કરીશું, જે માઇક્રો SD કાર્ડ પર ફાઇલો ઍક્સેસ કરવાની પ્રક્રિયાને સરળ બનાવે છે. એ નોંધવું અગત્યનું છે કે માઇક્રો SD કાર્ડની મહત્તમ ક્ષમતા 32 GB થી વધુ ન હોવી જોઈએ.

હાર્ડવેર સમજાવ્યું

આ પ્રોજેક્ટમાં પ્રાથમિક ઘટકોમાં ESP32 માઇક્રોકંટ્રોલર અને માઇક્રો SD કાર્ડ મોડ્યુલનો સમાવેશ થાય છે. ESP32 એક બહુમુખી માઇક્રોકંટ્રોલર છે જેમાં બિલ્ટ-ઇન Wi-Fi અને બ્લૂટૂથ ક્ષમતાઓ છે, જે તેને IoT એપ્લિકેશનો માટે આદર્શ બનાવે છે. માઇક્રો SD કાર્ડ મોડ્યુલ ESP32 ને કાર્ડમાંથી વાંચવા અને લખવાની મંજૂરી આપે છે, જે વિવિધ એપ્લિકેશનો માટે ડેટા સંગ્રહ સક્ષમ બનાવે છે.

માઇક્રો SD કાર્ડ ડેટાને સંરચિત રીતે સંગ્રહિત કરવા માટે ફાઇલ સિસ્ટમનો ઉપયોગ કરીને કાર્ય કરે છે. તે SD_MMC ઇન્ટરફેસ દ્વારા ESP32 સાથે વાતચીત કરે છે, જે ફાઇલોના કાર્યક્ષમ વાંચન અને લેખન માટે પરવાનગી આપે છે. આ સેટઅપ ડેટા લોગ કરવા, છબીઓ સાચવવા અથવા કોઈપણ અન્ય એપ્લિકેશન માટે ઉપયોગમાં લઈ શકાય છે જ્યાં ડેટા સ્થિરતા જરૂરી છે.

વાયરિંગ સૂચનાઓ

ESP32-40-micro-sd-card-1

માઇક્રો SD કાર્ડને ESP32 સાથે વાયર કરવા માટે, આ પગલાંઓ અનુસરો:

પ્રથમ, પાવર અને ગ્રાઉન્ડ પિન જોડો. માઇક્રો SD કાર્ડ મોડ્યુલનો VCC પિન ESP32 પરના 3.3V પિન સાથે જોડો, અને GND પિનને ESP32 પરના એક GND પિન સાથે જોડો. આગળ, ડેટા પિન જોડો: માઇક્રો SD કાર્ડ મોડ્યુલનો CS (ચિપ સિલેક્ટ) પિન ESP32 પર પિન 5 સાથે, MOSI (માસ્ટર આઉટ સ્લેવ ઇન) પિન પિન 23 સાથે, MISO (માસ્ટર ઇન સ્લેવ આઉટ) પિન પિન 19 સાથે, અને SCK (સીરિયલ ક્લોક) પિન પિન 18 સાથે જોડો. ખાતરી કરો કે આ જોડાણો સુરક્ષિત છે જેથી કોઈપણ સંચાર સમસ્યાઓ ટાળી શકાય.

જો તમે અલગ એક્સટેન્શન બોર્ડનો ઉપયોગ કરી રહ્યા છો, તો પિન નંબરો બદલાઈ શકે છે, તેથી તમારા બોર્ડ માટે વિશિષ્ટ દસ્તાવેજોનો સંદર્ભ લો. માઇક્રો SD કાર્ડમાં ફાઇલો વાંચવા અને લખવાની સફળ કામગીરી માટે વાયરિંગ નિર્ણાયક છે.

કોડ ઉદાહરણો અને વોકથ્રુ

હવે, ચાલો કોડના મુખ્ય ભાગો જોઈએ જે માઇક્રો SD કાર્ડ સાથે ક્રિયાપ્રતિક્રિયા કરે છે. સેટઅપ સીરિયલ સંચાર શરૂ કરીને અને માઇક્રો SD કાર્ડ સફળતાપૂર્વક માઉન્ટ થયેલ છે કે કેમ તે તપાસીને શરૂ થાય છે.

Serial.begin(115200); // સીરિયલ સંચાર શરૂ કરો
if (!SD_MMC.begin()) { // SD કાર્ડ સફળતાપૂર્વક માઉન્ટ થયેલ છે કે કેમ તે તપાસો
  Serial.println("Failed to mount SD card"); // SD કાર્ડ માઉન્ટ થવામાં નિષ્ફળ ગયું હોય તો ભૂલ સંદેશ છાપો
  return;
}

આ કોડ સ્નિપેટમાં, સીરિયલ સંચાર 115200 ની બૉડ રેટ પર સેટ છે, જે આઉટપુટ મોનિટર કરવા માટે મહત્વપૂર્ણ છે. SD_MMC.begin() ફંક્શન SD કાર્ડ માઉન્ટ કરવાનો પ્રયાસ કરે છે; જો તે નિષ્ફળ જાય, તો સીરિયલ મોનિટર પર ભૂલ સંદેશ છાપવામાં આવે છે.

કોડનો આગલો ભાગ માઇક્રો SD કાર્ડ પર નવી ફાઇલ બનાવે છે અને તેમાં ટેક્સ્ટની એક લાઇન લખે છે.

File file = SD_MMC.open("/test.txt", FILE_WRITE); 
if (!file) {
  Serial.println("Failed to open file for writing"); // લેખન માટે ફાઇલ ખોલવામાં નિષ્ફળ ગઈ હોય તો ભૂલ સંદેશ છાપો
  return;
}
if (file.println("Test file write")) { // ફાઇલમાં ટેક્સ્ટની એક લાઇન લખો
  Serial.println("File write successful"); // લેખન કામગીરી સફળ હોય તો સફળતા સંદેશ છાપો
} else {
  Serial.println("File write failed"); // લેખન કામગીરી નિષ્ફળ ગઈ હોય તો ભૂલ સંદેશ છાપો
}
file.close(); // ફાઇલ બંધ કરો

અહીં, test.txt નામની ફાઇલ લેખન મોડમાં ખોલવામાં આવે છે. જો ફાઇલ સફળતાપૂર્વક ખોલવામાં આવે છે, તો તે ટેક્સ્ટની એક લાઇન લખે છે અને સફળતા સંદેશ છાપે છે. જો લેખન કામગીરી નિષ્ફળ જાય છે, તો તેના બદલે ભૂલ સંદેશ છાપવામાં આવે છે. અંતે, ફાઇલ બંધ કરવામાં આવે છે તેની ખાતરી કરવા માટે કે ફેરફારો સાચવવામાં આવ્યા છે.

કોડ માઇક્રો SD કાર્ડના રૂટ ડિરેક્ટરીમાંથી ફાઇલો પણ વાંચે છે અને તેમના નામ અને કદ છાપે છે.

File root = SD_MMC.open("/"); // SD કાર્ડની રૂટ ડિરેક્ટરી ખોલો
while (File file = root.openNextFile()) { // રૂટ ડિરેક્ટરીમાં બધી ફાઇલોમાંથી લૂપ કરો
  Serial.print(file.name()); // ફાઇલનામ છાપો
  Serial.print("\t");
  Serial.println(file.size()); // ફાઇલનું કદ છાપો
  file.close(); // ફાઇલ બંધ કરો
}

આ સ્નિપેટ રૂટ ડિરેક્ટરી ખોલે છે અને બધી ફાઇલોમાંથી પુનરાવર્તન કરે છે, તેમના નામ અને કદ સીરિયલ મોનિટર પર છાપે છે. ડેટા સફળતાપૂર્વક લખવામાં આવ્યો હતો તે ચકાસવા અને SD કાર્ડની સામગ્રી જોવા માટે આ ઉપયોગી છે.

વધુ વિગતો માટે, લેખની નીચે લોડ કરેલા સંપૂર્ણ કોડનો સંદર્ભ લો.

પ્રદર્શન / શું અપેક્ષા રાખવી

કોડ અપલોડ કર્યા પછી અને ESP32 રીસેટ કર્યા પછી, તમારે સીરિયલ મોનિટરમાં સંદેશાઓ જોવા જોઈએ જે દર્શાવે છે કે SD કાર્ડ સફળતાપૂર્વક માઉન્ટ થયું હતું કે નહીં અને ફાઇલ કામગીરી સફળ હતી કે નહીં. તમે રૂટ ડિરેક્ટરીમાં મળેલી ફાઇલોની સૂચિ પણ જોશો, જે પુષ્ટિ કરે છે કે ડેટા યોગ્ય રીતે લખવામાં આવ્યો હતો (વિડિઓમાં 13:45 પર).

સામાન્ય મુશ્કેલીઓમાં માઇક્રો SD કાર્ડ યોગ્ય રીતે ફોર્મેટ અને કનેક્ટ થયેલ છે તેની ખાતરી કરવી, તેમજ સીરિયલ મોનિટર યોગ્ય બૉડ રેટ પર સેટ છે તે ચકાસવું શામેલ છે. જો કોઈ સમસ્યા ઊભી થાય, તો તમારા વાયરિંગ અને જોડાણો ફરીથી તપાસો.

વિડિઓ સમયસ્ટેમ્પ્સ

  • 00:00 શરૂઆત
  • 1:45 ESP32 પર માઇક્રો SD કાર્ડનો પરિચય
  • 3:46 દસ્તાવેજ પૃષ્ઠ
  • 4:43 આર્ડુઇનો કોડ
  • 8:09 આર્ડુઇનો IDE માં ESP32 બોર્ડ અને COM પોર્ટ પસંદ કરવું
  • 9:51 માઇક્રો SD કાર્ડ લેખનનું પ્રદર્શન
  • 11:12 PC પર લખેલી ફાઇલો જોવી

Images

ESP32-40-micro-sd-card-1
ESP32-40-micro-sd-card-1
ESP32-40-micro-sd-card-2
ESP32-40-micro-sd-card-2
841-ESP32 Tutorial 40/55- Arduino code for micro SD card
Language: C++
#include "SD_MMC.h"

void setup() {
  Serial.begin(115200); // Initialize serial communication
  if (!SD_MMC.begin()) { // Check if SD card is mounted successfully
    Serial.println("Failed to mount SD card"); // Print error message if SD card failed to mount
    return;
  }

  // Create a file in the root directory of SD card and open it in write mode.
  File file = SD_MMC.open("/test.txt", FILE_WRITE); 
  if (!file) {
    Serial.println("Failed to open file for writing"); // Print error message if file failed to open
    return;
  }
  if (file.println("Test file write")) { // Write a line of text to the file
    Serial.println("File write successful"); // Print success message if write operation is successful
  } else {
    Serial.println("File write failed"); // Print error message if write operation failed
  }
  file.close(); // Close the file

  File root = SD_MMC.open("/"); // Open the root directory of SD card
  if (!root) {
    Serial.println("Failed to open directory"); // Print error message if directory failed to open
    return;
  }
  Serial.println("Files found in root directory:"); // Print the list of files found in the root directory
  while (File file = root.openNextFile()) { // Loop through all the files in the root directory
    Serial.print("  ");
    Serial.print(file.name()); // Print the filename
    Serial.print("\t");
    Serial.println(file.size()); // Print the filesize
    file.close(); // Close the file
  }
}
void loop() {} // Empty loop function, does nothing

Things you might need

Files📁

No files available.