Подключение mh sd card module к ардуино

Содержание

Как работает модуль чтения SD карт и как его подключить к Arduino

Если вы профессионально или на любительском уровне занимаетесь изучением микроконтроллеров, то наверняка вы сталкивались с ситуацией когда памяти вашего микроконтроллера не хватает для сохранения необходимого вам объема данных. Наиболее часто эта проблема возникает в логгерах каких-нибудь данных: частоты сердечных сокращений, температуры, влажности и т.д. Хорошим решением в данном случае для увеличения объема сохраняемых данных является использование SD карты. Поэтому в данной статье мы рассмотрим принципы работы модуля чтения и записи SD карт и как его правильно подключить к плате Arduino.

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

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Модуль чтения SD карт (купить на AliExpress).

Принципы работы модуля чтения SD карт

Распиновка модуля чтения SD карт

Модуль чтения Micro SD карт имеет 6 контактов: GND, VCC, MISO, MOSI, SCK и CS. Все эти контакты являются цифровыми, за исключением контактов VCC и Ground. Распиновка модуля чтения SD карт показана на следующем рисунке.

Назначение контактов модуля следующее:

GND – общий провод (земля) модуля, в нашем проекте его необходимо подключить к контакту земли (ground) платы Arduino.

VCC – контакт для подачи питания на модуль, его необходимо подключать к напряжению 5V или 3.3V.

MISO (Master In Slave Out) – контакт передачи данных по интерфейсу SPI от модуля.

MOSI (Master Out Slave In) – контакт передачи данных по интерфейсу SPI в модуль.

SCK – линия синхронизации в интерфейсе SPI, в нашем проекте источником тактовых импульсов будет плата Arduino.

CS (Chip Select) – линия для выбора ведомого устройства в интерфейсе SPI. В нашем проекте плата Arduino, управляя данным контактом, может включать/выключать работу модуля.

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

Это дешевый и простой в использовании модуль, который может быть использован во множестве различных приложений. Его составные части (компоненты) показаны на следующем рисунке.

Как видите из представленного рисунка, у модуля чтения SD карт всего три наиболее значимых компонента. Первый – это держатель карт формата Micro SD, он обеспечивает возможность легкой перестановки SD карты из одного модуля в другой. Второй – микросхема преобразователя уровня (level shifter IC). Поскольку сам модуль работает от питающего напряжения 3.3V, а его максимальное рабочее напряжение составляет 3.6V, то если мы непосредственно подключим его к 5V, то это с большой вероятностью выведет из строя SD карту. Кроме микросхемы преобразователя уровня модуль также содержит понижающий регулятор напряжения, который преобразует напряжение из 5V в 3.3V.

Наиболее часто задаваемые вопросы о модуле чтения SD карт

Какой стандарт форматирования лучшего всего подходит для SD карт?
При форматировании SD карт наиболее предпочтительным является формат exFAT.

Имеют ли SD карты прошивку (программное обеспечение)?
SD карты поставляются с записанной в них прошивкой, которая содержит инструкции для работы с ROM (read-only memory) и позволяют устройству «загружаться».

Уменьшает ли форматирование время жизни SD карт?
Прямого и точного ответа на этот вопрос нет. Но поскольку процесс форматирования работает со всей памятью SD карты, очищает на ней данные и помечает блоки как доступные, то, поскольку количество циклов чтения/записи для SD карты ограничено, скорее всего, он немного может уменьшать время жизни SD карты.

Что такое exFAT для SD карты?
exFAT (Extensible File Allocation Table) – это файловая система, разработанная компанией Microsoft в 2006 году и оптимизированная для различных типов флэш памяти, таких как USB носители и SD карты. exFAT была проприетарной системой до 28 августа 2019, когда Microsoft опубликовала ее спецификацию. Компания Microsoft владеет патентами над несколькими элементами ее дизайна.

Схема модуля чтения SD карт

Схема модуля чтения SD карт представлена на следующем рисунке. Как видите, она состоит из легко доступных компонентов общего назначения.

Как видно из представленной схемы, она содержит коннектор (держатель) Micro SD карт прижимного типа, который подключен к микросхеме изменения логического уровня (logic level shifter IC). Поскольку максимальное рабочее напряжение модуля составляет 3.6V, то данная микросхема в этих условиях является весьма актуальной. Для питания SD карты и конвертера логических уровней мы используем регулятор напряжения LM1117. Коннектор JP1 внизу схемы представляет собой коннектор внизу модуля чтения SD карт.

Схема проекта

Схема подключения модуля чтения SD карт к плате Arduino представлена на следующем рисунке.

Как видите, подключение модуля чтения Micro SD карт к плате Arduino UNO достаточно простое – необходимо всего лишь подключить контакты SPI модуля SCK, MISO и MOSI к аналогичным SPI контактам платы Arduino SCK (D13), MOSI (D12) и MISO(D11). Если же у нас к шине SPI будет подключено несколько устройств, то в этом случае необходимо подключить и линию CS (выбор ведомого) к плате Arduino. Более подробно об использовании интерфейса SPI в плате Arduino вы можете прочитать в этой статье.

Контакты VCC и Ground модуля чтения SD карт используются для подачи на него питания.

Внешний вид собранной конструкции проекта представлен на следующем рисунке.

Подготовка модуля чтения SD карт

Перед тем как вставлять SD карту в модуль чтения SD карт вам необходимо правильно ее отформатировать, иначе могут возникнуть проблемы с ее работой. Это связано с тем, что модуль чтения SD карт может работать только с файловыми системами FAT16 или FAT32. А при изготовлении SD карта могла быть предварительно отформатирована в другом формате. В этих случаях иногда даже проще использовать старую SD карту чем новую для уменьшения риска проблем совместимости.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

В коде программы мы будем проверять наличие файла с именем “ data_log.txt ”. Если этот файл существует, то мы будем записывать в него информацию. Если файл не существует, мы будем создавать на SD карте этот файл и затем записывать в него информацию. Мы потом можем открыть этот файл на компьютере и проверить действительно ли в нем содержится информация, которую мы туда записали.

Первым делом в коде программы мы подключим библиотеку для работы с SD картами, объявим контакт chipSelect модуля и объявим файловую переменную myFile.

Источник

Arduino. Урок 15. SD карта.

Сегодня речь пойдет об использовании SD и micro SD карт в Arduino. Мы разберемся как можно подключить SD карты к Ардуино, как записывать и считывать информацию. Использование дополнительной памяти может быть очень полезно во многих проектах. Если вы не знаете что такое SPI, I2C и аналоговые выводы, то советую вам посмотреть прошлые уроки и разобраться с этими интерфейсами связи Ардуино.

Подключить SD карту к Arduino напрямую не получится, так как она не поддерживает нужный протокол связи. Но мы можем использовать дополнительные модули или шилды для этого. К счастью, стоят они очень дешево и доступны в разных вариантах.

В этом уроке используется:

Отличный набор для начинающих: Купить
Arduino Uno: Купить
Инфракрасный датчик расстояния: Купить
Плата расширения для считывания micro SD карт c SPI интерфейсом: Купить
Шилд для Arduino Uno: Купить
Карты micro SD: Купить
Датчики освещенности: Купить
Датчик температуры I2C: Купить

Подключение sd карт к Arduino

Модуль и шилд для считывания sd карт подключается по интерфейсу SPI. Шилд просто вставляется в Arduino Uno сверху. А плата подключается к пинам D10 -> CS, D11 -> MOSI, D12 -> MISO, D13 -> SCLK, 5V -> VIN (если на плате есть стабилизатор, если нет то 3,3V), GND -> GND. Вот наглядная схема:

Обратите внимание на напряжение питания платы. Если на плате есть стабилизатор питания, то можете подавать на нее 5 В. Если же стабилизатора нет, то необходимо подвести 3.3 В. В остальном все так же как мы разбирали в уроке по SPI интерфейсу. Теперь перейдем к программной части.

Запись и считывание SD карты на Arduino

Для работы с картами памяти в Arduino есть библиотека SD.h. Она по умолчанию доступна в Arduino IDE. С ней мы и будем работать. Для начала напишем простую программу, которая будет записывать обычную строку на SD карту. Теперь посмотрим на скетч:

Отлично! У меня все работает так как и было задумано. Теперь я хочу немного доработать этот скетч. Давайте закинем текстовый файл на карту памяти с каким-нибудь значением и попробуем считать это на Arduino. Например я создам текстовый файл в котором будет всего одно число. Это число я буду использовать в качестве задержки между записью нашей строки на эту же карту памяти. Немного доработаем предыдущий скетч.

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

Подробно скетч моего регистратора показаний я расписывать не буду, потому что мы все это уже разбирали подробно в этом и прошлых уроках. В этом скетче сочетаются навыки из уроков по аналоговым входам, I2C и SPI интерфейсам и подтягивающим резисторам. Вы можете найти все это в разделе сайта уроки по Arduino. Вот скетч:

На сегодня все. В следующий раз мы разберемся с подключением RFID метками. Надеюсь вам все было понятно.

1 комментарий

А нужно ли останавливать непрерывную запись в файл как-нибудь? Не испортится ли карта памяти при отключении непрерывно записываемых данных? Как отключать эту запись?

Добавить комментарий Отменить ответ

Для отправки комментария вам необходимо авторизоваться.

Источник

Подключение SD карты к Ардуино

Модуль карты памяти Ардуино (sd card shield) позволяет сохранять данные с датчиков при создании сложных проектов, так как собственная энергонезависимая память (eeprom arduino) позволяет использовать лишь 4 Кбайта памяти на Arduino Mega (Atmega2560). Рассмотрим в этом обзоре, как правильно производить чтение и запись информации в файл на SD память при помощи микроконтроллера Ардуино.

Модуль SD card shield Arduino Uno

Некоторые производители изготавливают модули с двумя контактами питания — 5 В и 3,3 В. К контакту «3,3В» в этом случае следует подключить стабилизированное напряжение 3,3 Вольта. Если нет такого контакта, то к выводу «5В» или «VCC» следует подключить 5 Вольт от платы, которое будет преобразовываться в 3,3 В. К контакту «3,3В» нельзя подключать большее напряжение, так как это выведет из строя microSD.

Для работы с модулем рекомендуется использовать файловую систему на sd карте — FAT16 или FAT32. При работе с новой картой всегда используйте данную программу для проверки работоспособности флэш памяти и модуля. Если у вас не появилась подобная информация на мониторе порта Arduino IDE, проверьте правильность подключения micro sd card модуля к плате и попробуйте предварительно отформатировать карту.

SD библиотека Arduino описание команд

Перед началом работы с модулем карты памяти потребуется установить в Arduino IDE библиотеки SD.h и SPI.h, которые можно скачать на нашем сайте — здесь. Данная библиотека содержит множество полезных команд и функций, позволяющих работать с файлами на флэш памяти sd card shield arduino nano: создавать и удалять файлы, открывать и сохранять в файлах нужную информацию с датчиков и т.д.

Функции библиотеки SD.h

  • begin() – инициализация библиотеки, присваивает пин для сигнала;
  • exists() – проверка, имеется ли на карте информация;
  • mkdir() – создает нужную папку на sd карте памяти;
  • rmdir() – удалят папку (папка должна была пустой);
  • open() – открывает файл для записи/чтения (если файла нет, то он будет создан);
  • remove() – удаляет файл с карты памяти.

Команды библиотеки SD.h

  • available() – проверяет наличие в файле байт, доступные для чтения;
  • size() – выводит информацию о размере данных;
  • read() – считывает информацию;
  • write() – производит запись в файл;
  • close() – закрывает файл, проверяя сохранены ли данные на sd карту;
  • flush() – позволяет убедиться, записаны ли данные на карту памяти;
  • name() – возвращает указатель на имя;
  • peek() – считывает байты данных, не перемещая указатель;
  • position() – показывает текущее положение указателя в файле;
  • seek() – меняет положение текущей позиции в файле;
  • print() – выводит данные в отдельный файл;
  • println() – печатает данные в файл до места, где появляется пустая строка;
  • isDirectory() – проверка, является ли файл директорией (папкой);
  • openNextFile() – выводит имя следующего файла на карте;
  • rewindDirectory() – возвращает к первому файлу в папке;

Как подключить SD карту к Ардуино

Для этого занятия потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • SD card shield Arduino;
  • провода «папа-мама».

Схема подключения sd карты памяти к Ардуино

SD card shield Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 5V 5V 5V
MOSI 11 11 51
MISO 12 12 50
SCK 13 13 52
SC 4 4 53

Модуль подключается к Ардуино по SPI интерфейсу, а для этого понадобятся выводы SCK, MISO, MOSI и CS. Для SPI шины у плат Arduino Uno и Nano имеются специальные пины, у платы Mega 2560 пины отличаются. Для контакта CS можно использовать любой свободный пин на микроконтроллере и указать это изменение в коде. По умолчанию используют пины на платах, указанные в следующей таблице.

Скетч. Проверка microSD карты памяти

Для проверки подключения sd модуля к плате Ардуино и флэш памяти используйте стандартный скетч из библиотеки SD.h — CardInfo (пример кода размещен ниже). После загрузки программы в микроконтроллер, откройте монитор порта и вы увидите там информацию (смотри скриншот ниже) — файловая система microSD карты, доступный объем памяти и список файлов с датой создания, которые сейчас есть на карте.

Пояснения к коду:

  1. в дальнейшем, после диагностики целостности карты памяти и правильного подключения sd модуля к плате, от проверки типа microSD, вычисления объема памяти карты и вывода списка файлов на флэшке можно отказаться.

Скетч. Arduino запись данных на SD карту

Следующий пример кода позволяет открыть файл test.txt с карты памяти для записи (если файла с таким именем нет, то он будет создан) и сохранить в нем строчку текста «testing 1, 2, 3». После этого файл следует обязательно закрыть, чтобы все данные в нем сохранились. И уже вся информация с файла выводится на COM-порт Arduino IDE. Загрузите скетч для записи файла на SD карте и откройте монитор порта.

Пояснения к коду:

  1. при работе с sd card module в Arduino IDE нельзя открывать несколько файлов одновременно, перед открытием нового файла, старый надо закрыть;
  2. при каждой перезагрузке программы новые данные в файл будут добавляться, а не перезаписываться (смотри скриншот ниже).

Запись информации в текстовый файл на sd card Arduino

Скетч. Arduino чтение данных с SD карты

Следующий код позволяет вывести на монитор порта информацию о размере файла test.txt из предыдущего примера, а также всю информацию, которая была в него записана. Отметим, что имя файла на SD карте памяти не должно содержать более 8 символов (букв), не включая расширение. А библиотека SD.h не чувствительна к регистру букв в имени файла, т.е. «TEST.txt» и «test.txt» — это один и тот же файл.

Пояснения к коду:

  1. библиотека SD.h не чувствительна к регистру букв, т.е. команды SD.open(«test.txt»); и SD.open(«TEST.txt»); откроют один и тот же файл.

Заключение. Мы рассмотрели несколько возможностей работы с sd модулем для Ардуино Уно для чтения и записи файлов на sd карту памяти. Данный модуль будет полезно использовать в проектах, где требуется периодически сохранять информацию. Например, если требуется ежедневно сохранять информацию с датчика bmp180 (GY-68) Arduino об атмосферном давлении и температуре окружающего воздуха.

Источник

Adblock
detector