آموزش رزبری پایآموزش رزبری پای پیکو Pico

ارتباط ماژول کارت حافظه SD با برد رزبری پای پیکو

ماژول SD کارت برای رزبری پای پیکو یک افزونه کاربردی و کم‌هزینه است که با استفاده از کارت microSD، امکان ذخیره چندین گیگابایت داده را فراهم می‌کند. با اتصال آن به Pico، می‌توانید لاگ سنسورها، فایل‌های تنظیمات و داده‌های time-stamped را به‌راحتی ذخیره کنید. در این راهنما یاد می‌گیرید چگونه یک Raspberry Pi Pico SD card reader مبتنی بر SPI راه‌اندازی کنید؛ سیستمی که با اغلب میکروکنترلرها سازگار است و معمولاً به لطف رگولاتور 3.3V داخلی و level shifting پایه، ایمن و پایدار عمل می‌کند. این پروژه یک نقطه شروع عالی برای ورود به دنیای ذخیره‌سازی خارجی قبل از کار با پلتفرم‌هایی مثل Arduino است.

در این پروژه، ارتباط SD کارت با Pico به‌صورت تعاملی پیاده‌سازی شده است؛ به‌طوری‌که کاربر از طریق Serial Monitor می‌تواند فایل ایجاد کند، متن بنویسد، فایل را بخواند یا حذف کند. تمام عملیات به‌صورت real-time اجرا می‌شود و شما مستقیماً می‌بینید که Pico چگونه از طریق SPI کارت را initialise کرده و با فایل سیستم FAT32 کار می‌کند. با درک این فرآیند، نحوه مدیریت حافظه خارجی در سیستم‌های امبدد را کاملاً یاد می‌گیرید و برای پروژه‌های پیشرفته‌تر با SD card logging آماده می‌شوید.

معرفی ماژول کارت حافظه SD

ماژول SD کارت یک راهکار ساده و قابل اعتماد برای افزودن حافظه خارجی به پروژه‌های شماست. زمانی که یک SD card را به Pico متصل می‌کنید، ماژول Raspberry Pi Pico SD card به‌صورت خودکار تنظیم ولتاژ و level shifting را انجام می‌دهد و از میکروکنترلر و کارت microSD محافظت می‌کند. این ماژول از رابط SPI استفاده می‌کند که ارسال و دریافت داده بین میکروکنترلرهایی مانند رزبری پای پیکو و کارت microSD را بسیار ساده می‌کند. بیشتر ماژول‌ها دارای رگولاتور داخلی 3.3V و level shifting پایه هستند تا هنگام خواندن و نوشتن فایل‌ها، کارت SD در وضعیت ایمن باقی بماند. برای مبتدیان، Raspberry Pi Pico SD card reader یکی از ساده‌ترین روش‌ها برای شروع کار با ذخیره‌سازی واقعی داده است؛ از لاگ‌گیری مقادیر گرفته تا ذخیره تنظیمات یا نگهداری فایل‌های متنی ساده، آن هم فقط با چند سیم اتصال. همین موضوع باعث می‌شود رزبری پای پیکو SD card Arduino integration برای data logging، ذخیره configuration و پیاده‌سازی فایل سیستم‌های امبدد کاملاً ساده و مناسب مبتدیان باشد.

پین های ماژول کارت حافظه

تصویر زیر پایه‌های ماژول SD کارت را توضیح می‌دهد.

پین های ماژول کارت حافظه

معمولاً یک ماژول SD کارت شامل پایه‌های زیر است:

پین عملکرد توضیح سیگنال
 VCC  Power به پایه 3.3 ولت متصل میشود
 GND  Ground زمین مشترک
 MISO/DO  Master In Slave Out SD → Pico.
 MOSI/DI  Master Out Slave In Pico → SD
 SCK  SPI Clock سیگنال کلال
 CS  Chip Select انتخاب ماژول کارت حافظه

برخی از ماژول‌های SD کارت پایه‌های داده را با DI (Data In) و DO (Data Out) برچسب‌گذاری می‌کنند. DI در واقع همان MOSI و DO همان MISO است.

بررسی تخصصی ماژول SD کارت

درک اجزای داخلی ماژول SD کارت به شما کمک می‌کند هنگام interfacing ماژول SD کارت با رزبری پای پیکو، عیب‌یابی دقیق‌تری انجام دهید و از عملکرد صحیح سیستم مطمئن شوید. اجزای اصلی سخت‌افزاری ماژول SD کارت در ادامه توضیح داده شده‌اند:

بررسی تخصصی ماژول SD کارت

عناصر کلیدی سخت‌افزاری روی ماژول SD کارت شامل موارد زیر است:

  • AMS1117-3.3 Regulator: ولتاژ 5V را به 3.3V کاهش می‌دهد و عملکرد ایمن کارت SD را تضمین می‌کند.
  • Level Shifters (در برخی ماژول‌ها): شبکه‌ای از ترانزیستور و مقاومت که منطق 5V را به 3.3V تبدیل می‌کند.
  • Pull-up Resistors: حفظ وضعیت منطقی صحیح روی خطوط SPI.
  • MicroSD Socket: پذیرش کارت‌های استاندارد microSD.

قطعات مورد نیاز این پروژه

  • رزبری پای پیکو
  • ماژول کارت حافظه SD
  • برد بورد
  • سیم جامپر
  • کابل USB
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

مدار اتصال برد Pico به ماژول کارت خوان

نمودار سیم‌کشی زیر، اتصال کامل Raspberry Pi Pico SD card Arduino را با استفاده از رابط پیش‌فرض SPI0 پیکو نشان می‌دهد. برای اتصال SD card به Raspberry Pi Pico، به تصویر زیر مراجعه کنید.

مدار اتصال برد Pico به ماژول کارت خوان

پین‌اوت اتصالات به‌صورت زیر است:

پین پیکو پین ماژول توضیح
3V3 VCC تغذیه ماژول
GND GND زمین مشترک
GP19 MOSI / DI SPI0 MOSI
GP16 MISO / DO SPI0 MISO
GP18 SCK SPI0 Clock
GP17 CS انتخاب ماژول

این سیم‌ کشی دقیقاً با رابط پیش‌فرض SPI0 پیکو که توسط Arduino-Pico core استفاده می‌شود مطابقت دارد؛ بنابراین کتابخانه SD به‌درستی می‌داند از کدام پایه‌ها برای Raspberry Pi Pico SD card reader استفاده کند. پس از اتصال صحیح پیکو، ارتباط با ماژول SD از طریق گذرگاه SPI0 برقرار می‌شود. کتابخانه Arduino SD.h عملیات زیر را برای Raspberry Pi Pico SD card reader مدیریت می‌کند:

  • ارسال و دریافت داده از طریق گذرگاه SPI
  • ایجاد و حذف فایل‌ها
  • مدیریت حافظه برای عملیات خواندن و نوشتن
  • مدیریت پوشه‌ها و فایل‌ها روی SD card با فرمت FAT32

این پروژه شامل یک سیستم منویی است که با Serial Monitor کار می‌کند و به کاربران اجازه می‌دهد وظایف SD card را روی Raspberry Pi Pico SD card reader به‌صورت تعاملی اجرا کنند.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

آماده سازی کارت حافظه برای پروژه

آماده‌سازی صحیح SD card برای موفقیت در interfacing ماژول SD card با Raspberry Pi Pico کاملاً حیاتی است. برای اطمینان از عملکرد صحیح Raspberry Pi Pico SD card reader، مراحل زیر را دنبال کنید:

  1. تمام پارتیشن‌های موجود را با استفاده از Disk Management حذف کنید.
  2. یک پارتیشن primary ایجاد کنید و مطمئن شوید کارت از MBR استفاده می‌کند، نه GPT.
  3. کارت را با فرمت FAT32 فرمت کنید.
  4. اگر ظرفیت SD card بیشتر از 8GB است، فقط یک پارتیشن 4GB یا 8GB ایجاد کرده و فضای اضافی را بدون
  5. تخصیص باقی بگذارید.
  6. ویندوز به‌صورت پیش‌فرض کارت‌های بزرگ‌تر از 32GB را با FAT32 فرمت نمی‌کند.
  7. برای کارت‌های SDXC از ابزارهایی مانند Rufus یا GUIFormat برای فرمت صحیح استفاده کنید.
  8. کارت را داخل ماژول SD قرار دهید.

اگر کارت با FAT32 فرمت نشده باشد یا از جدول پارتیشن GPT استفاده کند، Raspberry Pi Pico SD card reader نمی‌تواند آن را به‌درستی initialise کند و در Serial Monitor پیام “The SD card is not initialized” نمایش داده می‌شود.

آماده سازی کارت حافظه برای پروژه

خطاهای رایج در کار با کارت حافظه

مشکل ارور Solution
exFAT فرمت “SD init FAILED” error فرمت مجدد به FAT32 با استفاده از Rufus
پارتیشن GPT Card not detected تبدیل به جدول پارتیشن MBR
چند پارتیشن Only first partition accessible استفاده از یک پارتیشن primary
اتصال ناصحیح No communication اطمینان از جا رفتن کامل کارت در سوکت

توضیحات کد پروژه کارت حافظه برد Pico

آماده‌سازی صحیح SD card برای موفقیت در اتصال ماژول SD card به Raspberry Pi Pico کاملاً ضروری است. کد Raspberry Pi Pico SD card Arduino زیر یک سیستم منوی تعاملی برای انجام عملیات فایل از طریق Serial Monitor ایجاد می‌کند. بخش فریمور از دو کتابخانه تشکیل شده است: یکی برای ارتباط SPI و دیگری برای ارتباط با SD card.

#include <SPI.h>
#include <SD.h>
const uint8_t CSPIN = 17;
const char *FILENAME = "demo.txt";

در اینجا، SPI.h و SD.h به پیکو دسترسی به گذرگاه SPI و توابع SD card را می‌دهند. مقدار CSPIN مشخص می‌کند کدام پایه GPIO به‌عنوان Chip Select استفاده می‌شود و فایل demo.txt همان فایلی است که آن را ایجاد می‌کنیم، در آن می‌نویسیم، می‌خوانیم و در نهایت حذف می‌کنیم.

در ادامه، پیکو ارتباط سریال را آغاز کرده و تلاش می‌کند SD card را initialise کند:

Serial.begin(115200);
if (!SD.begin(CSPIN, SPI)) {
Serial.println("SD init FAILED");
}

در این بخش baud rate تنظیم شده و SD card mount می‌شود. اگر کارت به‌درستی فرمت نشده باشد یا سیم‌کشی اشتباه باشد، مقداردهی اولیه SD در همین مرحله با خطا مواجه می‌شود.
در حلقه اصلی، برنامه منتظر می‌ماند تا کاربر عددی را در Serial Monitor وارد کند:

if (Serial.available()) {
String s = Serial.readStringUntil('\n');
char c = s.charAt(0);
switch (c) { ... }
}

وقتی کاربر عدد 1، 2، 3 یا 4 را وارد می‌کند، دستور switch مشخص می‌کند کدام عملیات روی SD card اجرا شود.
ایجاد فایل بسیار ساده است:

File f = SD.open(FILENAME, FILE_WRITE);
f.println("Pico SD Demo initialized.");
f.close();

باز کردن فایل در حالت نوشتن، اگر فایل وجود نداشته باشد آن را به‌صورت خودکار ایجاد می‌کند. سپس یک پیام پیش‌فرض اضافه شده و فایل به‌درستی بسته می‌شود.

نوشتن متن دلخواه نیز مشابه همین روند است، با این تفاوت که متن از کاربر دریافت می‌شود:

String text = Serial.readStringUntil('\n');
File f = SD.open(FILENAME, FILE_WRITE);
f.println(text);
f.close();

در این حالت، هر چیزی که کاربر در Serial Monitor تایپ کند به انتهای فایل اضافه می‌شود.
خواندن فایل نیز با باز کردن آن در حالت read و چاپ تک‌تک کاراکترها انجام می‌شود:

File f = SD.open(FILENAME, FILE_READ);
while (f.available()) {
Serial.write(f.read());
}

این کد محتوای فایل را به‌صورت استریم به Serial Monitor ارسال می‌کند تا کاربر دقیقاً ببیند چه چیزی ذخیره شده است.
در نهایت، حذف فایل با یک دستور ساده انجام می‌شود:

SD.remove(FILENAME);
Serial.println("File deleted.");

این دستور فایل demo.txt را از روی SD card حذف کرده و پروژه را به حالت اولیه بازمی‌گرداند.

بررسی عملکرد پروژه

زمانی که سیستم با اتصال صحیح Raspberry Pi Pico SD card روشن می‌شود:

  1. پیکو گزینه‌های منوی SD را در Serial Monitor نمایش می‌دهد.
  2. کاربر با انتخاب 1، 2، 3 یا 4 یک عملیات مشخص فایل را روی Raspberry Pi Pico SD card reader اجرا می‌کند.
  3. پیکو بلافاصله عملیات را روی SD card انجام داده و نتیجه به‌صورت real-time در Serial Monitor نمایش داده می‌شود.

این دمو به‌صورت شفاف نشان می‌دهد که پیکو چگونه عملیات فایل را روی یک ماژول ذخیره‌سازی کوچک مدیریت می‌کند، مفهومی بسیار کاربردی برای IoT data logging، ذخیره تنظیمات دستگاه و نگهداری اطلاعات به‌صورت آفلاین.

نتیجه گیری

استفاده از ماژول SD card در کنار Raspberry Pi Pico امکان ساخت Embedded Applications پیشرفته را فراهم می‌کند که اطلاعات را از طریق Non-Volatile Storage حفظ می‌کنند. در این آموزش، همه مراحل شامل اتصال سخت‌افزاری، پیاده‌سازی Raspberry Pi Pico SD card Arduino code، فرمت کردن SD card به FAT32، اجرای Real-Time File Operations با Serial Monitor و همچنین روش‌های مختلف عیب‌یابی توضیح داده شد.

برای اطمینان از پایداری اتصال interface SD card to Pico، همیشه SD card را با فرمت FAT32 آماده کنید، از جدول پارتیشن MBR استفاده نمایید، از اتصال صحیح پایه‌های MOSI و MISO مطمئن شوید، کارت را فقط از پایه 3V3 پیکو تغذیه کنید و پس از پایان کار حتماً فایل‌ها را به‌درستی ببندید؛ در غیر این صورت ممکن است فایل خراب شده یا حتی کارت SD به‌صورت دائمی آسیب ببیند.

نظر خود را اعلام کنید

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *