Подключение SD карты к микроконтроллеру. Как устанавливать приложения на карту памяти Android Подключение микро сд

SD и microSD карты могут существенно расширить возможности проектов ардуино, работающих с большими объемами данных: регистраторов данных, метеостанций, систем умного дома. Платы arduino оснащены сравнительно небольшой внутренней памятью, всего до 4 килобайт, включая и флэш-память, и EEPROM. Этой памяти не хватит для записи больших объемов данных, тем более, если плата будет постоянно выключаться или выключаться. Подключение SD карты ардуино в качестве внешнего накопителя позволяет многократно увеличить место для хранения любой информации. Съемные накопители SD стоят дешево, легко подключаются и удобны в использовании. О правильном подключении SD карты к Arduino и пойдет речь в статье.

Работа с памятью 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:

Библиотека ардуино для работы с SD и microSD

Для удобства работы с внешними накопителями данных в среде Arduino IDE доступны уже готовые библиотеки. Ничего дополнительно скачивать или устанавливать в большинстве случаев не понадобится.

Для подключения библиотеки в скетче нужно использовать инструкцию include:

#include #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 библиотекой ардуино

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

/* Регистратор данных с использованием SD карт Пример сохранения данных с аналоговых портов на SD карте. Данные будут сохраняться в файле в виде набора строк с разделителем полей в виде символа "," Схема подключения: * Аналоговые сенсоры подключаются к аналоговым пинам * Модуль SD карты подключен в SPI по стандартной схеме: ** MOSI - пин 11 ** MISO - пин12 ** CLK - пин 13 ** CS - pin 4 */ #include #include const int PIN_CHIP_SELECT = 4; void setup() { Serial.begin(9600); Serial.print("Initializing SD card..."); // Этот пин обязательно должен быть определен как OUTPUT pinMode(10, OUTPUT); // Пытаемся проинициализировать модуль if (!SD.begin(PIN_CHIP_SELECT)) { Serial.println("Card failed, or not present"); // Если что-то пошло не так, завершаем работу: return; } Serial.println("card initialized."); } void loop() { // Строка с данными, которые мы поместим в файл: String logStringData = ""; // Считываем данные с портов и записываем в строку for (int i = 0; i < 5; i++) { int sensor = analogRead(i); logStringData += String(sensor); if (i < 4) { logStringData += ","; } } // Открываем файл, но помним, что одновременно можно работать только с одним файлом. // Если файла с таким именем не будет, ардуино создаст его. File dataFile = SD.open("datalog.csv", FILE_WRITE); // Если все хорошо, то записываем строку: if (dataFile) { dataFile.println(logStringData); dataFile.close(); // Публикуем в мониторе порта для отладки Serial.println(logStringData); } else { // Сообщаем об ошибке, если все плохо Serial.println("error opening datalog.csv"); } }

Создание файла и выбор названия для arduino SD card

Создание файла – одна из самых распространенных задач, возникающих при работе с SD картами в ардуино. Как мы убедились в предыдущем скетче, для создания файла достаточно просто открыт его. Если мы захотим проверить, есть ли такой файл, можно использовать функцию exists():

  • SD.exists(“datalog.csv”);

Функция возвращает TRUE, если файл существует.

Популярной практикой при создании проектов – регистраторов данных является разбивка больших файлов на более мелкие, которые удобнее обновлять и открывать на компьютере. Например, вместо одного очень большого файла datalog.csv на SD карте можно иметь несколько маленьких, добавляя к концу номер по порядку: datalog01.csv, datalog02.csv и т.д.
Вот пример скетча, который поможет вам выполнить эту работу:

Char filename = "datalog00.CSV"; // Первоначальное название for (uint8_t i = 0; i < 100; i++) { filename = i / 10 + "0"; filename = i % 10 + "0"; if (! SD.exists(filename)) { // Проверяем наличие logfile = SD.open(filename, FILE_WRITE); break; // Дальше продолжать смысла нет } }

Заключение

Как мы с вами убедились, подключить SD карту памяти к Ардуино и использовать ее в проекте не очень сложно. Для этого есть готовые библиотеки в Arduino IDE и самые разнообразные варианты модулей. Приобрести карту памяти можно в любом магазине электроники, они стоят недорого, при этом позволяют существенно расширить потенциал платы Ардуино. С использованием карт памяти можно собирать и сохранять для последующего анализа большие объемы данных. С помощью нашей статьи мы сможете наделить памятью свои исследовательские проекты, создать системы голосового оповещения для умного дома, создать простой wav-проигрыватель и многое другое.

В некоторых телефонах есть слоты для карт памяти (как правило, формата microSD).

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

  • увеличить объем хранилища, вставив такую карту;
  • использовать карту для работы некоторых функций и приложений.

Примечание. Некоторые из этих действий можно выполнить только на устройствах с Android 6.0 и более поздних версий.

Как установить SD-карту

Шаг 1. Вставьте SD-карту
  1. Узнайте, есть ли в вашем телефоне слот для SD-карты и где он расположен. Для этого посетите сайт производителя .
  2. Выключите телефон.
  3. Поместите SD-карту в слот. Если вы подняли удерживающий язычок, опустите его.
Шаг 2. Настройте SD-карту
  1. Когда вы вставите SD-карту, появится уведомление.
  2. Нажмите Настроить .
  3. Выберите нужный тип хранилища.
    • Съемный накопитель
      SD-карту можно переносить на другое устройство вместе со всеми файлами, которые на ней хранятся (например, фотографиями и музыкой). Приложения на съемный накопитель перемещать нельзя.
    • Внутренний накопитель
      На SD-карте можно хранить приложения и данные только для этого телефона. Если вставить карту в другое устройство, с нее удалятся все данные. После этого карту можно будет использовать на новом телефоне.
  4. Чтобы настроить SD-карту, следуйте инструкциям на экране.
  5. По завершении нажмите Готово .

Как использовать SD-карту

Как перенести приложения и файлы

Как перенести приложения на SD-карту, настроенную в качестве внутреннего накопителя

Важно! Не все приложения можно перенести на SD-карту.

  1. Выберите Приложения .
  2. Выберите приложение, которое хотите переместить на SD-карту.
  3. Нажмите Хранилище .
  4. В разделе "Использовано" нажмите Изменить .
  5. Выберите SD-карту.
  6. Следуйте инструкциям на экране.

Как перенести файлы на SD-карту, настроенную в качестве съемного накопителя

Шаг 1. Скопируйте файлы на SD-карту
Шаг 2. Удалите файлы с внутреннего накопителя

Если SD-карта используется в качестве внутреннего накопителя

  1. Откройте приложение "Настройки".
  2. Нажмите Хранилище и USB-накопители .
  3. Выберите SD-карту из списка.
  4. Вы увидите, сколько пространства используется и сколько свободно. Чтобы посмотреть, какие файлы или приложения занимают место, выберите категорию.

Если SD-карта используется в качестве съемного накопителя

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

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

Шаг 1. Отключите SD-карту

Шаг 2. Извлеките SD-карту

  1. Узнайте, где в вашем телефоне расположен слот для SD-карт.
  2. Выключите телефон.
  3. Извлеките лоток для SD-карты или снимите заднюю крышку устройства (в зависимости от модели). При необходимости поднимите язычок, удерживающий карту.
  4. Извлеките SD-карту из слота. Если вы подняли удерживающий язычок, опустите его.
  5. Установите обратно лоток для SD-карты или заднюю крышку устройства.

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

Распиновка SD и microSD карт

SD карты могут работать в двух режимах - SD и SPI . Назначение выводов карт и схема подключения зависит от используемого режима. У 8-и разрядных микроконтроллеров AVR нет аппаратной поддержки SD режима, поэтому карты с ними обычно используются в режиме SPI. В 32-х разрядных микроконтроллерах на ядре ARM, например AT91SAM3, интерфейс для работы с картами в SD режиме есть, поэтому там можно использовать любой режим работы.

Назначение контактов SD карты в SD режиме


Назначение контактов SD карты в SPI режиме

Назначение контактов microSD карты в SD режиме



Назначение контактов microSD карты в SPI режиме



Подключение SD и microSD карт к микроконтроллеру в SPI режиме

Напряжение питания SD карт составляет 2.7 - 3.3 В. Если используемый микроконтроллер запитывается таким же напряжением, то SD можно подключить к микроконтроллеру напрямую. Расово верная схема, составленная путем изучения спецификаций на SD карты и схем различных отладочных плат, показана на рисунке ниже. По такой схеме подключены карты на отладочных платах фирм Olimex и Atmel .

На схеме обозначены именно выводы SD карты, а не разъема.


L1 - феррит или дроссель, рассчитанный на ток >100 мА. Некоторые его ставят, некоторые обходятся без него. А вот чем действительно не стоит пренебрегать, так это полярным конденсатором C2. Потому что при подключении карты происходит бросок тока, напряжение питания "просаживается" и может происходить сброс микроконтроллера.

По поводу подтягивающих резисторов есть некоторая неоднозначность. Поскольку SD карты выпускаются несколькими производителями, на них существует несколько спецификаций. В одних документах четко указана необходимость подтягивающих резисторов (даже для неиспользуемых линий - 8, 9), в других документах этих указаний нет (или я не нашел).

Упрощенный вариант схемы (без подтягивающих резисторов) показан на рисунке ниже. Эта схема проверена на практике и используется в платах фирмы Microelectronika. Также она используется во многих любительских проектах, которые можно найти в сети.



Здесь сигнальные линии SD карты удерживаются в высоком состоянии микроконтроллером, а неиспользуемые линии (8, 9) никуда не подключены. По идее они должны быть подтянуты внутри SD карты. Далее я буду отталкиваться от этой схемы.

Если микроконтроллер запитывается напряжением отличным от напряжения питания SD карты, например 5 В, то нужно согласовать логические уровни . На схеме ниже показан пример согласования уровней карты и микроконтроллера с помощью делителей напряжения. Принцип согласования уровней простой - нужно из 5-и вольт получить 3.0 - 3.2 В.



Линия MISO - DO не содержит делитель напряжения, так как данные по ней передаются от SD карты к микроконтроллеру, но для защиты от дурака можно добавить аналогичный делитель напряжения и туда, на функционировании схемы это не скажется.

Если использовать для согласования уровней буферную микросхему, например CD4050 или 74AHC125, этих недостатков можно избежать. Ниже приведена схема, в которой согласование уровней выполняется с помощью микросхемы 4050. Это микросхема представляет собой 6 неинвертирующих буферов. Неиспользуемые буферы микросхемы "заглушены".

Подключение microSD карт аналогичное, только у них немного отличается нумерация контактов. Приведу только одну схему.



На схемах я рассматривал подключение SD карт к микроконтроллеру напрямую - без разъемов. На практике, конечно, без них не обойтись. Существует несколько типов разъемов и они друг от друга немного отличаются. Как правило, выводы разъемов повторяют выводы SD карты и также содержать несколько дополнительных - два вывода для обнаружения карты в разъеме и два вывода для определения блокировки записи. Электрически эти выводы с SD картой никак не связаны и их можно не подключать. Однако, если они нужны, их можно подключить как обычную тактовую кнопку - один вывод на землю, другой через резистор к плюсу питания. Или вместо внешнего резистора использовать подтягивающий резистор микроконтроллера.

Подключение SD и microSD карт к микроконтроллеру в SD режиме

Ну и для полноты картины приведу схему подключения SD карты в ее родном режиме. Он позволяет производить обмен данными на большей скорости, чем SPI режим. Однако аппаратный интерфейс для работы с картой в SD режиме есть не у всех микроконтроллеров. Например у Atmel`овских ARM микроконтроллеров SAM3/SAM4 он есть.



Шина данных DAT может использоваться в 1 битном или 4-х битном режимах.

Продолжение следует...

Большинство современных смартфонов оснащены слотом для карты памяти. Хiaomi не является исключением. Наличие этой функции позволяет сохранить на устройстве важную информацию (музыка, фото, документы, заметки), расширить его возможности, функциональность, а также использовать мобильное устройство в качестве внешнего накопителя. Когда Хiaomi не видит карту памяти, владельцы сталкиваются с некоторыми трудностями, особенно если телефон был способом хранения данных для учебы или работы.

Что нужно сделать в первую очередь

Если вы решили сразу форматировать карту или нести гаджет в ремонт, не спешите это делать. Для начала вставьте SD в другое устройство (планшет или компьютер) и проверьте её работу. Эти простые действия помогут понять, проблема в телефоне или в съемном накопителе. Только после этого можно выбрать способ решения.

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

Какие могут быть причины поломки

Иногда нарушение может заключаться непосредственно в смартфоне. Чтобы вернуть функциональность флешки, скопируйте информацию на компьютер или другое устройство, выполните следующие действия (в зависимости от ситуации):

  1. Сбои программного обеспечения смартфона. Выньте и вставьте флешку обратно, перезагрузите гаджет. Работа системы восстановится.
  2. Хiaomi не поддерживают работу с SD от некоторых производителей или в связи со своими ограниченными возможностями не может работать с накопителями большой емкости. Изучите технические параметры гаджета, возможно, ему не под силу карты объемом памяти свыше 8 Гб, а вы предлагаете ему 32 Гб. Стоит отметить, что иногда правильная работа невозможна из-за типа файловой системы.
  3. Поломка контактов в слоте. Когда Хiaomi не видит накопительную sd карту по этой причине, выньте карточку и вставьте ее обратно. Если проблема повторилась неоднократно, стоит отнести гаджет в ремонт. Исправление поломки занимает несколько минут и стоит сравнительно недорого.

Как восстановить функциональность

При выходе sd карты из строя можно отметить следующие причины:

  1. Память флешки переполнена. Выньте ее с телефона и откройте на компьютере, удалив лишние файлы или сохранив их на компьютере. Освободив пространство на накопителе, вы восстановите функциональность устройства;
  2. Заражение вирусами или неверный формат файловой системы. Нужно провести форматирование на телефоне или компьютере. При таком способе решения задачи, данные на устройстве будут утрачены.

Чтобы провести форматирование с помощью смартфона следуйте следующему алгоритму:

  • зайдите в Меню и выберете раздел «Память»;
  • выберете функцию «Извлечь карту памяти» или «Очистить карту памяти» и ожидайте, пока начнется процесс;
  • после завершения форматирования, появится функция «Подключить карту SD».

В зависимости от модели Хiaomi название или порядок функций может измениться.

Чтобы провести форматирование с помощью компьютера, стоит придерживаться следующего алгоритма:

  • подключаем карту к компьютеру с помощью картридера;
  • на компьютере открываем раздел «Мой компьютер» (значок находится в меню Пуск или на рабочем столе), выбираем SD, которая обычно отображается как флешка (или съемный диск);
  • нажав правой кнопкой мыши на флешку, перед вами появится меню, где нужно выбрать функцию «Форматировать»;
  • нажимаем кнопку начать и ожидаем пока форматирование завершиться;
  • готово, карта памяти должна восстановить свою функциональность.

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