Обзор модулей SD карт для Arduino, ESP32 и ESP8266
Рассмотрены различные модули SD-карт для Arduino, ESP32 и ESP8266. Анализ их особенностей, преимуществ и недостатков. Примеры подключения и использования
Обзор модулей SD карт для Arduino, ESP32 и ESP8266
02.05.2024 в 05:44   985 0
Версия для печати

Обзор модулей SD карт для Arduino, ESP32 и ESP8266

logo

Введение

SD-карты являются удобным и недорогим способом расширения памяти для микроконтроллеров, таких как ESP32, ESP8266 и Arduino. Совместимость с SD-картами позволяет увеличить объем доступной памяти, что особенно полезно при работе с большими объемами данных, такими как фотографии, видео и звуковые файлы. В этой статье мы рассмотрим различные модули SD-карт, которые можно купить на Aliexpress, совместимые с ESP32, ESP8266 и Arduino, и проанализируем их особенности, преимущества и недостатки, чтобы помочь вам выбрать наиболее подходящий модуль для вашего проекта.

Краткий обзор модулей подключения SD карты

Рассмотрим несколько модулей, которые чаще всего встречаются на Aliexpress.

MicroSD Card Adapter

microsdadapter

Чаще всего на Aliexpress можно встретить именно эту модель адаптера. Цена его примерно 70 рублей. Он обладает следующими техническими характеристиками:

  • Поддержка карт MicroSD (объемом до 2 гб) и MicroSDHC (до 32 гб)
  • Связь с микроконтроллером по интерфейсу SPI
  • Встроенный конвертер логических уровней (с 5В до 3.3В)
  • Встроенный стабилизатор напряжения на 3.3В
  • Питать модуль можно от напряжения 4.5В ~ 5.5В
  • Потребление от 0.2мА до 80мА
  • Размеры 42 мм х 24 мм 
  • Вес 5 гр

Расположение основных элементов на плате модуля представлено на фото ниже

card_elems

В качестве конвертера логических уровней используется микросхема 74LVC125A, что позволяет без проблем подключать модуль к платам на базе Arduino, с их 5 вольтовой логикой, без опаски сжечь модуль из-за повышенного напряжения на пинах.

Питать модуль можно от любого источника напряжения от 4.5В до 5.5В. Встроенный стабилизатор напряжения AMS1117, автоматически снизит его до необходимых SD карте 3.3В.

Для связи с микроконтроллером через интерфейс SPI и питания модуля, предусмотрено 6 выводов на плате. Их назначение описано в таблице ниже:

Обозначение вывода на плате Описание
GND Заземление
VCC Подключение источника питания (от 4.5В до 5.5 В)
MISO Master In Slave Out(SPI)
MOSI Master Out Slave In(SPI)
SCK Serial Clock(SPI)
CS Chip Select(SPI)

Mini TF Card module

mini tf card module

Представляет собой уменьшенную и удешевленную версию предыдущего модуля. Цена около 60 рублей. Имеет следующие технические характеристики:

  • Поддержка карт MicroSD (объемом до 2 гб) и MicroSDHC (до 32 гб)
  • Связь с микроконтроллером по интерфейсу SPI
  • Напряжение питания 3.3В
  • Потребление от 0.2мА до 80мА
  • Размеры 18 мм х 18 мм 
  • Вес 3 гр

Модуль имеет гораздо более компактные размеры по сравнению с предыдущей моделью, но при этом лишился встроенного стабилизатора напряжения и конвертера логических уровней. Поэтому надо очень внимательно отнестись к выбору источника питания для модуля и подключение к микроконтроллерам с 5 вольтовой логикой управления может доставить некоторые проблемы. Но, вместе с тем из-за небольших размеров платы, он может быть весьма хорошим выбором для проектов на базе ESP8266 или ESP32 в которых габариты готового устройства имеют большое значение.

Количество выводов на плате  и их назначение полностью соответствует аналогичным пинам на предыдущей плате.

D1 Shield Module

d1 shield

Версия предыдущего модуля в виде надстройки  для платы Wemos D1 Mini. Цена около 80 рублей. Имеет следующие технические характеристики:

  • Поддержка карт MicroSD (объемом до 2 гб) и MicroSDHC (до 32 гб)
  • Связь с микроконтроллером по интерфейсу SPI
  • Напряжение питания 3.3В
  • Потребление от 0.2мА до 80мА
  • Размеры 26 мм х 28 мм 
  • Вес 4.5 гр

Для Wemos D1 Mini это самый простой способ добавления поддержки SD карты в ваши проекты в формате Подключи и Пользуйся. При подключении задействует следующие контакты Wemos D1 Mini:

Пин модуля Пин Wemos D1 Mini
VCC 3.3V
GND GND
MISO D6
MOSI D7
SCK D5
CS D8

MH-SD Card Module

mh-sdcard

Данный модуль, в отличие от предыдущих, работает уже с полноразмерными SD картами. Цена его около 70 рублей. Имеет следующие технические характеристики:

  • Поддержка SD карт (объемом до 2 гб) и SDHC (до 32 гб)
  • Связь с микроконтроллером по интерфейсу SPI
  • Встроенный стабилизатор напряжения на 3.3В
  • Питать модуль можно от напряжения 3.3В ~ 5.5В
  • Двойной ряд управляющих контактов для более удобного подключения
  • Потребление от 0.2мА до 80мА
  • Размеры 51 мм х 30 мм
  • Вес 7.2 гр

Питаться модуль может как напрямую через пин 3.3В, так и через стабилизатор AMS1117 от 5В. Для этого предусмотрены соответствующие пины на плате. Также можно заметить, что все управляющие контакты на модуле продублированы. Не знаю зачем это было сделано, но продавец преподносит это как одно из достоинств.Микросхемы преобразования уровней на модуле нет, так что к Ардуино и ей подобным придется подключать через делитель напряжения или внешний преобразователь. Например СB4050.

Принципиальная схема устройства представлена на рисунке ниже:

Подключение к микроконтроллеру

Так как все модули работают по интерфейсу SPI, то общая схема подключения любого из них к микроконтроллеру будет одна и та же. Возьмем для примера модуль MicroSD Card Adapter.
Для подключения к ESP8266 задействованы следующие пины:

  • VCC к 5V
  • GND к GND
  • MISO к D6 (GPIO12)
  • MOSI к D7 (GPIO13)
  • SCK к D5 (GPIO14)
  • CS к D8 (GPIO15)

Для Wemos D1 Mini схема выглядит следующим образом:

wemos d1 scheme

Для подключения к Arduino задействованы следующие пины:

  • VCC к 5V
  • GND к GND
  • MISO к D12
  • MOSI к D11
  • SCK к D13
  • CS к D10

Для Arduino Nano схема выглядит следующим образом:

ardunano_scheme
Для Arduino Mega пины будут другие:

  • VCC к 5V
  • GND к GND
  • MISO к 50
  • MOSI к 51
  • SCK к 52
  • CS к 53

У ESP32 пины SPI расположены следующим образом:

  • VCC к 3.3V
  • GND к GND
  • MISO к GPIO 19
  • MOSI к GPIO 23
  • SCK к GPIO 18
  • CS к GPIO 5

На схеме это выглядит так:

esp32_scheme

Программная часть

Для работы с SD картами в Arduino IDE есть встроенная библиотека SD.h. Она совместима практически со всеми микроконтроллерами с которыми умеет работать Arduino IDE. Также для обмена данными по SPI интерфейсу используется встроенная библиотека SPI.h, которая также совместима с большинством микроконтроллеров.
Для иллюстрации работы с модулем SD карты разберем простой пример. Микроконтроллер подключится к модулю SD карты по SPI интерфейсу, создаст на ней файл test.txt, запишет в него данные, потом откроет этот файл и выведет его содержимое в  монитор серийного порта.

Для тестов будем использовать следующее оборудование:

  • Плата Wemos D1 Mini
  • Модуль MicroSD Card Adapter
  • MicroSD карта объемом 2 Гб 
  • 6 проводов с Dupont разъемами

setup

SD карту нужно предварительно отформатировать в FAT32.

Соедините все компоненты по схеме

  • VCC к 5V
  • GND к GND
  • MISO к D6 (GPIO12)
  • MOSI к D7 (GPIO13)
  • SCK к D5 (GPIO14)
  • CS к D8 (GPIO15)

Далее вставьте SD в модуль и прошейте в Wemos D1 Mini скетч:

//подключаем необходимые библиотеки
#include <SPI.h>
#include <SD.h>

File myFile;

void setup() {
 // Открываем серийный порт для вывода отладочной информации:
 Serial.begin(115200);

 Serial.println("Initializing SD card...");

 if (!SD.begin(15)) {
 Serial.println("initialization failed!");
 return;
 }
 Serial.println("initialization done.");

 // Открываем файл для записи,
 // Одновременно может быть открыт только один файл. Для работы с другим закройте текущий. если файл не существует, то он будет создан
 myFile = SD.open("test.txt", FILE_WRITE);

 // Если файл открылся без ошибок, то записываем в него текст:
 if (myFile) {
 Serial.print("Writing to test.txt...");
 myFile.println("testing 1, 2, 3."); //запись текста в файл
 // закрываем файл
 myFile.close(); 
 Serial.println("done.");
 } else {
 // если открыть файл не получилось, то выводим в монитор порта сообщение об ошибке:
 Serial.println("error opening test.txt");
 }

 // переоткрываем файл для чтения:
 myFile = SD.open("test.txt");
 if (myFile) {
 Serial.println("test.txt:");

 // читаем содержимое файла и выводим его в монитор порта:
 while (myFile.available()) {
 Serial.write(myFile.read());
 }
 // close the file:
 myFile.close();
 } else {
 // если файл не открывается, то выводим сообщение об ошибке:
 Serial.println("error opening test.txt");
 }
}

void loop() {
 // В основном цикле ничего не делаем
}

Если вы все сделали правильно, то Мониторе порта вы увидите следующее:

monlog

Если вы откроете SD карту в проводнике Windows, то ее содержимое будет таким:

 

sd content

А открыв данный файл в текстовом редакторе вы увидите:

file content

Как видите, работа с SD картой в Arduino IDE довольно просто реализована и доступна каждому.

Заключение

В заключение, мы рассмотрели различные модули SD-карт, которые можно использовать с микроконтроллерами ESP32, ESP8266 и Arduino. Модули SD-карт предоставляют удобный и доступный способ увеличения памяти для хранения больших объемов данных, таких как фотографии, видео и звуковые файлы. При выборе модуля SD-карт для вашего проекта важно учитывать особенности каждого модуля, такие как скорость передачи данных, интерфейс подключения и уровень напряжения, чтобы выбрать наиболее подходящий для вашего конкретного проекта. Мой личный фаворит MicroSD Card Adapter из-за его универсальности. Но иногда в своих проектах на ESP8266  и  ESP32 использую и Mini TF Card module из-за его компактности. 

Надеюсь, что данный обзор модулей SD-карт помог вам определиться с выбором и создать проект, который вам нужен.

Материал также доступен на моем канале: Яндекс Дзен и в группе ВК
Категория: Обзоры модулей | Добавил: :, (11.04.2023)
Просмотров: 985 | Теги: ESP32, Arduino, модуль SD карты, SD карта, ESP8266 | Рейтинг: 0.0/0
Поделиться:
Всего комментариев: 0
avatar