Search Code

ESP32 টিউটোরিয়াল ৪০/৫৫ - মাইক্রো SD কার্ডে পড়া এবং লেখা | SunFounder-এর ESP32 IoT লার্নিং কিট

ESP32 টিউটোরিয়াল ৪০/৫৫ - মাইক্রো 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

ESP32-এর সাথে মাইক্রো SD কার্ড সংযোগ করতে, এই ধাপগুলি অনুসরণ করুন:

প্রথমে, পাওয়ার এবং গ্রাউন্ড পিন সংযোগ করুন। মাইক্রো 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 পিসিতে লেখা ফাইল দেখা

ছবি

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
ভাষা: 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

আপনাকে যা প্রয়োজন হতে পারে

সম্পদ ও রেফারেন্সসমূহ

ফাইলসমূহ📁

কোনো ফাইল উপলব্ধ নেই।