- 2 Схемы
- MicroSD шилд — модуль микро-сиди карты для ардуино
- Arduino. Урок 15. SD карта.
- В этом уроке используется:
- Подключение sd карт к Arduino
- Запись и считывание SD карты на Arduino
- 1 комментарий
- Добавить комментарий Отменить ответ
- Подключение sd карты к ардуино
- Описание модуля для SD карты памяти
- Платы Arduino для работы с SD
- Подключение SD и microSD к ардуино
- Библиотека ардуино для работы с SD и microSD
- Встроенные примеры библиотеки SD
- Функции библиотеки SD
- Создание, редактирование и удаление файлов.
- Скетч примера работы с SD библиотекой ардуино
- Создание файла и выбор названия для arduino SD card
- Заключение
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 6 в случае использования платы Arduino UNO следует подключать к следующим выводам CS – D4, D0(MOSI) – D11, D1(MISO) – D12, CLK(SCK) – D13. Следует иметь в виду, что порт для подключения CS в различных проектах может отличаться 8.
В режиме ожидания модуль потребляет около 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, радикально решив проблему с «амнезией» при перерыве в электропитании, позволяя сохранять для последующего анализа данные о срабатывании датчиков на какой-либо мобильной платформе или работе датчиков умного дома.
Источник
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 и microSD карты могут существенно расширить возможности проектов ардуино, работающих с большими объемами данных: регистраторов данных, метеостанций, систем умного дома. Платы arduino оснащены сравнительно небольшой внутренней памятью, всего до 4 килобайт, включая и флэш-память, и EEPROM. Этой памяти не хватит для записи больших объемов данных, тем более, если плата будет постоянно выключаться или выключаться. Подключение SD карты ардуино в качестве внешнего накопителя позволяет многократно увеличить место для хранения любой информации. Съемные накопители SD стоят дешево, легко подключаются и удобны в использовании. О правильном подключении SD карты к Arduino и пойдет речь в статье.
Описание модуля для SD карты памяти
Работа с памятью SD в ардуино не представляет особых трудностей. Самым простым способом является подключение готового модуля и использование стандартной библиотеки. С этого варианта мы и начнем.
Использование готового модуля обладает различными преимуществами. Это довольно простое и удобное средство для работы с большим объемом данных. Он не требует особых навыков в подключении, все разъемы подписаны прямо на плате. За удобство приходится платить, но стоимость модуля относительно не велика, его легко можно найти по доступным ценам в российских и зарубежных интернет-магазинах.
Универсальный модуль представляет собой обыкновенную плату, на которой помещены слот для карты, резисторы и регулятор напряжений. Он обладает следующими техническими характеристиками:
- Диапазон рабочих напряжений 4,5-5 В;
- Поддержка SD карты до 2 Гб;
- Ток 80 мА;
- Файловая система FAT 16.
Модуль SD-карты реализует такие функции как хранение, чтение и запись информации на карту, которая требуется для нормального функционирования прибора на базе микроконтроллера.
Естественно, у недорогих модулей карт памяти есть и недостатки. Например, самые дешевые и распространенные модели поддерживают только карты до 4Гб и почти все модули позволяют хранить на SD карте файлы объемом до двух гигабайт – это ограничение используемой в большинстве моделей файловой системы FAT.
Еще одним недостатком карт памяти является относительно долгое время записи, однако существуют пути работы с ней, позволяющие увеличить ее скорость работы. Для этого используется механизм кэширования, когда данные сначала копятся в оперативной памяти, а потом сбрасываются за раз на карту памяти.
Платы Arduino для работы с SD
Для работы с SD card существует несколько различных плат:
- Arduino Ethernet – эта плата оснащена специальным модулем для вывода данных. Для выхода CS используется контакт 4. Для правильной работы нужно применять команду SD.begin(4).
- Adafruit Micro-SD – это отладочная плата, которая используется при работе с Micro-SD картами.
- Sparkfun SD – закрепляется сверху Ардуино, для выхода CS использует 8 контакт. В новой версии платы есть соединение с 3.3 В и встроен шестиразрядный инвертор.
Подключение SD и microSD к ардуино
Существует два вида карт – microSD и SD. Они одинаковы по подключению, структуре и программе, различаются же только размером. Перед работой советуется отформатировать карту SD. Обычно новые карты уже отформатированы и готовы к работе, но если используется старая карта, то лучше провести форматирование в файловой системе Arduino. Для проведения процедуры на компьютере должна быть установлена библиотека SD, желательно FAT16. Для форматирования на Windows нужно щелкнуть на иконке карты и нажать “Format”.
Для подключения карты используется 6 контактов, взаимодействие производится по интерфейсу SPI. Она выглядит на плате как разъем на лицевой поверхности с шестью штырями. Чтобы подключить карту, нужны сам контроллер, модуль карты и 6 проводов. Помимо SPI существует режим SDIO, но он сложен в реализации и слабо совместим с Ардуино. SPI легко налаживается для работы со всеми микроконтроллерами, поэтому советуется использовать именно его.
Подключение цифровых выводов производится так: для платы Arduino Nano или Uno контакт MOSI подключается к D11, MISO к D12,SCK к D13, CS к 4, VCC на +5 В,.GND к GND. На плате имеются разъемы для подключения к 3,3 и 5 вольтам. Питание самой карты составляет 3,3 вольт, поэтому проще применять микроконтроллер с таким же питанием, в ином случае нужен преобразователей уровней напряжения. На самых распространенных платах ардуино такой выход есть.
При подключении SD карты нужно учитывать соответствие SPI контактов для разных тип плат Arduino:
Плата | Пин MOSI | Пин MISO | Пин SCK |
Arduino Nano, Uno | 11 | 12 | 13 |
Arduino Mega2560 | 51 | 50 | 52 |
Библиотека ардуино для работы с SD и microSD
Для удобства работы с внешними накопителями данных в среде Arduino IDE доступны уже готовые библиотеки. Ничего дополнительно скачивать или устанавливать в большинстве случаев не понадобится.
Для подключения библиотеки в скетче нужно использовать инструкцию include:
Библиотека SPI нужна для правильной работы устройств, подключаемых по SPI.
Библиотечные функции нужно для считывания и записи данных на карту. Библиотека может поддерживать SD и SDHC карты.
Имена записываются в формате 8.3, то есть 8 знаков для названия, 3 для расширения. Путь к файлу записывается с помощью слэшей «/».
Встроенные примеры библиотеки SD
В Arduino IDE встроены готовые примеры для быстрого изучение функций бибилотеки:
- Card Info – это извлечение информации, хранящейся в SD карте. С ее помощью можно узнать, в какую файловую систему отформатирована карта, наличие свободного места, какие данные записаны.
- Yun Datalogger – позволяет записывать лог-данные с трех сенсоров на карту.
- Datalogger – регистрирует и созраняет данные, полученные с датчика на карту.
- Dump File – считывание данные с карты, передает их в серийный порт.
- Files – создает и удаляет данные. Существует функция file.write(), которая помещает записанные данные в буфер. Перемещение информации на карту происходит при вызове функций flush() или close(), поэтому важно закрывать его после каждого открытия файла, иначе данные будут потеряны.
- Read Write – записывает и считывает файлы с карты.
Функции библиотеки SD
Ардуино-библиотека SD содержит различные функции, с помощью которыми можно управлять данными. Функции класса SD:
- begin() – функция инициализирует библиотеку, присваивает контакт для сигнала.
- exists() – призвана проверить, имеется ли на карте необходимая информация.
- mkdir() – позволяет создать нужную папку на карте памяти.
- rmdir() – с помощью этой функции можно удалить папку. Важно, чтобы удаляемая папка была пустой.
- open() – позволяет открыть файл, который нужен для записи или чтения. Если нужный файл отсутствует на карте, то он будет создан.
- remove() – удаляет любой файл.
В ответ на все эти функции должно прийти одно из значений – true, в случае удачного завершения операции и false при неудаче.
Создание, редактирование и удаление файлов.
Для работы с файлами в ардуино существует класс File. В него входят функции, которые предназначены для записи и чтения информации с карты:
- available() – проверяет наличие в файле байт, которые доступны для чтения. В ответ приходит количество места, которое доступно для чтения.
- close() – закрывает файл, перед эти проверяет, сохранены ли данные на карту.
- flush() – функция позволяет убедиться, что данные записаны на карту.
- name() – возвращает указатель на имя.
- peek() – считывает байты данных, при этом не перемещает указатель на следующий символ.
- position() – находит текущее положение указателя в файле.
- print() – выводит данные в отдельный файл.
- println() – печатает данные в файл до места, где появляется символ перевода каретки и пустая строка.
- seek() – меняет положение текущей позиции в файле.
- size() – выводит информацию о размере данных.
- read() – считывает информацию.
- write() – производит запись в файл.
- isDirectory() – с помощью этого метода происходит проверка, является ли файл директорией, то есть каталогом или папкой.
- openNextFile() – выводит имя последующего файла.
- rewindDirectory() – возвращает к первому файлу в директории.
Для корректной работы платы нужно проследить, чтобы был сконфигурирован SS выход.
Скетч примера работы с SD библиотекой ардуино
Ниже приведен скетч, демонстрирующий пример работы с модулем карты памяти.
Создание файла и выбор названия для arduino SD card
Создание файла – одна из самых распространенных задач, возникающих при работе с SD картами в ардуино. Как мы убедились в предыдущем скетче, для создания файла достаточно просто открыт его. Если мы захотим проверить, есть ли такой файл, можно использовать функцию exists():
Функция возвращает TRUE, если файл существует.
Популярной практикой при создании проектов – регистраторов данных является разбивка больших файлов на более мелкие, которые удобнее обновлять и открывать на компьютере. Например, вместо одного очень большого файла datalog.csv на SD карте можно иметь несколько маленьких, добавляя к концу номер по порядку: datalog01.csv, datalog02.csv и т.д.
Вот пример скетча, который поможет вам выполнить эту работу:
Заключение
Как мы с вами убедились, подключить SD карту памяти к Ардуино и использовать ее в проекте не очень сложно. Для этого есть готовые библиотеки в Arduino IDE и самые разнообразные варианты модулей. Приобрести карту памяти можно в любом магазине электроники, они стоят недорого, при этом позволяют существенно расширить потенциал платы Ардуино. С использованием карт памяти можно собирать и сохранять для последующего анализа большие объемы данных. С помощью нашей статьи мы сможете наделить памятью свои исследовательские проекты, создать системы голосового оповещения для умного дома, создать простой wav-проигрыватель и многое другое.
Источник