Меню

Arduino sd card своими руками

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

В большинстве проектов с Ардуино необходимо устанавливать вспомогательное хранилище для медиафайлов, будь это видео или аудио. Если возникает необходимость хранить и обрабатывать информацию, а стоковой флеш-памяти плат вам не хватает, то есть несколько решений.

Можно докупить специальную плату, обеспечивающую быстрый доступ к данным, но и стоящую не малых денег. Если же у вас нет желания тратиться, то расширить стоковую память платы можно и с arduino card SD, дабы не было проблем с записью и стиранием стоковых утилит с чипов. Однако далеко не все новички знают, как правильно подключать флешку к чипу и что для этого нужно. Давайте разберёмся во всех нюансах и узнаем, какие подводные камни такого решения вас поджидают.

Что необходимо знать при подключении SD card к Arduino

Прежде чем подсоединять что-либо, следует изучить нюансы, которые будут подстерегать вас на каждом шагу. Первое, с чем вам придётся столкнуться, это вольтаж карт памяти, ведь они рассчитаны на 3.3 В, что является стандартом.

Неудобство заключается в том, что для записи данных необходима и соответствующая сила тока, вплоть до 100 мА, если речь о действительно больших массивах информации. Соответственно, необходимо обеспечить всю систему хорошим источником питания, но основная проблема заключается в том, что карты крайне привередливы. Если вы будете пользоваться резисторами и длинными проводниками, то скорость записи и чтения может упасть в разы ниже средних показателей, поэтому следует обзавестись небольшими коннекторами и убрать, по возможности, всё сопротивление из цепочки для питания логики.

Чтобы не сжечь всю плату, достаточно прикупить преобразователи переменного и постоянного тока, лучше всего подойдут приборы под HEF4050 и 74FHC125 базу.

Далее, учтите, что система предоставляет несколько режимов записи данных. У вас в распоряжении:

  1. SPI. Универсален, и подойдёт для любого микроконтроллера, а подключение требует всего четыре пина.
  2. SDIO. Хороший выбор, если необходима высокая скорость передачи информации, но с arduino microsd реализуется крайне тяжело.

Учитывайте и формат карты, он не влияет ровным счётом ни на что, кроме размера вашей конечной поделки. Если необходимо серьёзно урезать габариты, то хорошим выбором станет microSD.

Сама по себе флешка – это небольшой чип со специально выделенными секторами, а соответственно, структур, обязательных к использованию, вы здесь не найдёте. Такой подход удобен для быстрого форматирования и сохранения данных в подходящей файловой системе.

Большинство устройств на сегодняшний день пользуются форматами NTFS, FAT32 и FAT16. Но чем сложнее система, тем больше памяти для работы arduino SD придётся выделить, что чревато последствиями в виде подлагиваний и плохой скорости отклика.

Схема подключения SD card к Arduino

Предварительно отформатировав карту памяти, приступайте к её подключению.

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

Плата расширений потребуется под микроконтроллеры до 5 В, учитывайте это при её выборе. Главное достоинство Ардуино – простота, и подключение вспомогательных модулей не стало исключением. Лучшим выбором станет именно структура запуска через hardware SPI пины, дабы не усложнять новичкам жизнь. Нам потребуются 13, 12 и 11 цифровые пины, а также четвёртые, чтобы наладить «chip\slave select» цепь. Под это, зачастую, берётся 10 пин, но если вы знаете, что делаете, можете выбрать и более подходящий.

Читайте также:  Как сделать для ванной шкаф своими руками

Распиновка подключения Arduino Uno к SD

Обратите внимание на то, что в зависимости от форм-фактора и типа платы Ардуино, точки подключения могут варьироваться. Например, для меги необходимо соединить цепь с 50, 51, 52 и 53 слотом.

Модуль SD card Arduino Uno Arduino Mega
VCC 3.3V или 5V (проверьте описание платы) 3.3V или 5V (проверьте описание платы)
CS 4 53
MOSI 11 51
CLK 13 52
MISO 12 50
GND GND GND

В последующие разы вы можете поэкспериментировать с последними пинами на обеих картах, но поначалу лучше выбрать именно те, что указаны выше. Так вы сможете отработать код, избавившись от нежелательных поломок и осечек, что значительно упростит задачу в будущем. Оставшиеся 5 В и GND подсоединяйте к соответствующим портам, здесь никаких особых инструкций нет.

Еще один вариант наглядной схемы:

В конце процедуры необходимо замкнуть CD в заземление, так система не сможет инициализировать карту памяти. Но, в случае необходимости, всегда можно применить резисторы в 10 кОм и вспомогательные порты, однако мы не будем останавливаться на этом пине, так как сейчас он нам не нужен.

Загрузка библиотек и запуск SD card на Arduino

Чтобы подсоединиться к SD карте и свободно передавать на неё данные, потребуется написать немало кода, однако здесь нам поможет встроенная библиотека SD.

Открыв подменю «образцов», найдите заготовку «cardinfo», именно её мы не будем использовать в качестве прописной функции при загрузке информации. Скетч пригодится лишь для проверки, опознаётся ли дополнительная память на устройстве. Проверяйте chipSelect, учитывая, что подключение идёт через 10 пин.

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

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

Заключение

SD-карта – необходимый элемент любой системы, в которой вы собираетесь использовать медиафайлы. Это будет хорошим решением как для приборов под «умный дом», так и для самодельных плееров. Однако не забывайте, что качество конечного продукта приравнивается к качеству его худшего компонента, и не стоит экономить на SD-картах.

Источник

💥 Как подключить 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, вычисления объема памяти карты и вывода списка файлов на флэшке можно отказаться.

Программа для проверки sd модуля и карты памяти

Скетч. 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