Самодельный sd card shield для arduino

2 Схемы

Принципиальные электросхемы, подключение устройств и распиновка разъёмов

MicroSD шилд – модуль микро-сиди карты для ардуино

При конструировании той или иной системы на основе аппаратной платформы Arduino может возникнуть задача сохранения данных для последующего анализа. Осуществить такую операцию можно при помощи SD или microSD карты и соответствующего модуля. Шилд для microSD карты был приобретен на Али всего за 1 доллар с доставкой. Рассматриваемое устройство продается под брендом RobotDyn [1]. Поставляется данный шилд в обычном антистатическом пакете.

Модуль имеет габаритные размеры 40 х 25 мм, массу 4,3 г, без microSD карты. На плате располагаются два светодиода зеленый – индикатор питания, синий загорается при работе с microSD картой.

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

Рассматриваемый шилд имеет восемь выводов. Они имеют следующее назначение

  • 5V – питание 5В,
  • 3.3V – питание 3,3 В (данный контакт специфичен именно для шилда от RobotDyn),
  • GND – общий, четыре контакта интерфейса SPI:
  • CLK – SCK, D0 – MISO, D1 – MOSI, CS – выбор устройства,
  • а также опциональный CD – обнаружение карты (может быть не подключен, данный контакт специфичен именно для шилда от RobotDyn).

Контакты интерфейса SPI [2-7] в случае использования платы Arduino UNO следует подключать к следующим выводам CS – D4, D0(MOSI) – D11, D1(MISO) – D12, CLK(SCK) – D13. Следует иметь в виду, что порт для подключения CS в различных проектах может отличаться [8-11].

В режиме ожидания модуль потребляет около 23 мкА при напряжении питания 5 В, при кратковременном обращении к карте ток возрастает до 1,8 мА, если осуществляется непрерывная запись на карту, то ток возрастает до 11 мА. При напряжении питания 3,3 В устройство не заработало.

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

На рисунке выше результат работы CardInfo в случае отформатированной карты. Программа ReadWrite производит создание на microSD карте текстового файла и запись информации в него.

После работы ReadWrite программа CardInfo покажет, что на microSD карте появился файл TEST.TXT.

Программа Datalogger позволяет записывать данные с 0, 1 и 2 аналоговых портов в файл на microSD карте. Также эти данные передаются через последовательный порт. В качестве датчика в данном случае использован переменный резистор сопротивлением 10 кОм.

После работы Datalogger программа CardInfo покажет, что на microSD карте к файлу TEST.TXT. добавился файл DATALOGGER.TXT.

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

Источник

Подключение 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 об атмосферном давлении и температуре окружающего воздуха.

Источник

Модуль для тех, кому паять резисторы не с руки, а работать с MicroSD картами на Arduino всё же хочется

С целью избавиться от этой самодельной страхоты, был заказан отдельный модуль. Он позволяет подключать MicroSD-карту по протоколу SPI к Ардуино.

Товар был доставлен в Украину за 36 дней, заказывал во время акции, цены указаны со скидкой и текущая…

Приехало, завёрнутое в пупырку:
запаяно в плотном пакете:

Первое впечатление: устройство слишком большое!
можно было бы разместить элементы с обратной стороны платы — уменьшить размеры раза в два.

Вставленная карточка выпирает, кажется, на 0.2мм:
Имеется удобный механизм, благодаря которому карточка выщелкивается, аки крышка в телевизоре «Берёзка» — стандартная фишка любого нормального разъема SD-карт.

Толщина

4мм, если не считать штыревые контакты:
припаяли бы элементы с обратной стороны — получили бы 5мм. По-моему, в самоделках для компактности лучше +1мм к толщине, чем +25мм в длину платы. Для сравнения:
зелёная плата слева используется для тех же целей, снизу — GPS-модуль.
Ну да ладно, для изучения пойдёт, а кому надо — сам плату от ЛУТит.

Заявлено «SDHC(high-speed card)», вероятно, это означает поддержку карт 32 ГБ =)

Схема

Конкретно для этого модуля схему не нашел, но принцип работы, думаю, такой — www.pighixxx.com/test/wp-content/uploads/2014/10/200.png


LVC125A — docs-europe.electrocomponents.com/webdocs/12e1/0900766b812e1075.pdf
Заявленные характеристики:
напряжение работы: 1.65-3.6В,
напряжение на входе: до 5.5В,

AMS1117-3.3 — www.ams-semitech.com/attachments/File/AMS1117_20120314.pdf
Завяленные характеристики:
выходной ток до 1А,
входное напряжение: 4.8 — 10.3В,
выходное напряжение: 3.234 — 3.366В,
греется до 125 градусов по Цельсию,
при монтаже выдерживает нагрев до 300,
имхо, 4.8В многовато для нижнего предела.

Проверка

Для проверки скорости были использованы две карты памяти:
SanDisk на 2ГБ, шедшая в комплекте со старым смартфоном
И SanDisk Ultra Class 10 на 16ГБ
отформатированы они обе были под FAT32, с размером кластера 16КБ.
Они поочерёдно размещались то в подключенный модуль, то в GPS-логгер, где производились тесты записи и чтения. Код теста скорости — gist.github.com/ircphp/5df3ec8319fc5de1b3e877e261e5eada

Склоняюсь ко мнению, что скорость ограничивается быстродействием самой Ардуино. Следовательно, лучше собрать устройство для работы с SD-картой самому на делителях, не потому что так может быть дешевле и быстрее, а главным образом, потому что можно сделать компактнее. Да, на плате имеется мощный линейный стабилизатор (хоть я и не уверен в его качестве), но можно обойтись и без него, запитавшись от другого устройства.

С другой стороны, эта плата поможет, если нужен мощный линейник на 3.3, а взять его негде. Аккуратно подпаяться можно, например, сюда:

Стресс-тест до потери пульса устраивать не хотелось, ограничился сопротивлением 5 Ом — 600 мА:
напряжение при этом падало до 3.14В:
на этом же мультиметре без нагрузки показывает 3.2В. Нагрелся стабилизатор не сильно, градусов до тридцатипяти.
Когда на входе 4.56В и ниже, напряжение на выходе начинает постепенно опускаться.

В общем, смутные сомнения в душе моей. Может, с другим микроконтроллером данный модуль и даст какие-то преимущества, но в моём случае никаких преимуществ, по сравнению с тем, что есть, к сожалению, я не увидел.
Кстати, среди Ардуин, для нормальной работы с SD-картами, подходит микроконтроллер не ниже Atmega328. Atmega168 работает на сторонней библиотеке только с файловой системой FAT16; эту библиотеку я тоже использовал, на Atmega328, в надежде сэкономить память, однако иногда терялись файлы — решил использовать стандартную.

Ставить данный модуль в GPS-логгер пока не буду, собираюсь заменить пятивольтную версию Atmega328 на трёхвольтную. Спасибо за внимание. Удачи в самоделках.
С наступающими праздниками!

Источник

Adblock
detector