Руководство по модулю SD-карты с Arduino

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

Руководство по модулю SD-карты с Arduino

Для проекта Arduino с модулем SD-карты читайте нашу статью: Логгер данных температуры Arduino с SD-картой.

Знакомство с модулем SD-карты

Модуль SD-карты особенно полезен для проектов, которые требуют логирования данных.

Arduino может создать файл на SD-карте для записи и сохранения данных с помощью библиотеки SD.

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

Модуль SD-карты — вид спереди и сзади

Этот модуль работает с micro SD-картами.

Micro SD-карта

Где купить?

Модуль SD-карты стоит очень недорого, и вы можете найти его примерно за $1 — проверьте цены на Maker Advisor.

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

В таблице ниже показано, как следует подключить модуль SD-карты к вашему Arduino.

Модуль SD-карты

Подключение к Arduino Uno

Подключение к Arduino Mega

VCC

3.3V или 5V (проверьте datasheet модуля)

3.3V или 5V (проверьте datasheet модуля)

CS

4

53

MOSI

11

51

CLK

13

52

MISO

12

50

GND

GND

GND

Примечание: разные платы Arduino имеют разные выводы SPI. Если вы используете другую плату Arduino, проверьте официальную документацию Arduino.

Подготовка SD-карты

Первый шаг при использовании модуля SD-карты с Arduino — форматирование SD-карты в формат FAT16 или FAT32. Следуйте инструкциям ниже.

1) Чтобы отформатировать SD-карту, вставьте её в компьютер. Перейдите в Мой компьютер и щёлкните правой кнопкой мыши по SD-карте. Выберите Форматировать, как показано на рисунке ниже.

Форматирование SD-карты — шаг 1

2) Появится новое окно. Выберите FAT32, нажмите Начать, чтобы запустить процесс форматирования, и следуйте инструкциям на экране.

Форматирование SD-карты — шаг 2

Тестирование модуля SD-карты

Вставьте отформатированную SD-карту в модуль SD-карты.

Подключите модуль SD-карты к Arduino, как показано на схеме ниже, или проверьте раздел Распиновка подключения в предыдущем разделе.

Схема подключения модуля SD-карты к Arduino

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

Код — CardInfo

Чтобы убедиться, что всё подключено правильно и SD-карта работает нормально, в окне Arduino IDE перейдите в File > Examples > SD > CardInfo.

Загрузите код на вашу плату Arduino. Убедитесь, что выбрана правильная плата и COM-порт.

Откройте монитор порта (Serial Monitor) со скоростью передачи 9600 бод, и вы должны увидеть информацию о вашей SD-карте.

Если всё работает правильно, вы увидите подобное сообщение в мониторе порта.

Информация о SD-карте в мониторе порта Arduino

Чтение и запись на SD-карту

Библиотека SD предоставляет полезные функции для удобной записи и чтения с SD-карты.

Для записи и чтения с SD-карты сначала нужно подключить библиотеки SPI и SD:

#include <SPI.h>
#include <SD.h>

Также необходимо инициализировать модуль SD-карты на выводе Chip Select (CS) — в нашем случае это вывод 4.

SD.begin(4);

Чтобы открыть новый файл на SD-карте, нужно создать объект файла, который ссылается на ваш файл данных. Например:

dataFile = SD.open("data.txt", FILE_WRITE);

Первый параметр этой функции — имя файла, data.txt, а аргумент FILE_WRITE позволяет вам читать и записывать в файл.

Эта строка кода создаёт файл с именем data.txt на вашей SD-карте. Если файл data.txt уже существует, Arduino откроет файл вместо создания нового.

Для записи данных в текущий открытый файл используйте:

dataFile.write(data);

Где dataFile — это объект файла, созданный ранее, а data — это то, что вы хотите записать в файл.

Вы также можете использовать функции print() или println() для записи данных в файл:

dataFile.print(data);
dataFile.println(data); // с переходом на новую строку

Для чтения данных, сохранённых в вашем файле:

dataFile.read();

Вы можете записывать только в один файл одновременно, поэтому вам нужно закрыть файл перед переходом к следующему. Чтобы закрыть файл data.txt, который мы только что создали:

SD.close("data.txt");

Аргумент этой функции — файл, который вы хотите закрыть, в данном случае data.txt.

Для полного скетча о том, как читать и записывать, в вашем Arduino IDE перейдите в File > Examples > SD > ReadWrite.

Пример ReadWrite в Arduino IDE

Подведение итогов

Это было лишь краткое введение в модуль SD-карты с Arduino.

Обязательно ознакомьтесь со следующей статьёй для примера проекта логирования данных с использованием модуля SD-карты с Arduino:

В этом проекте мы сохраняем показания температуры на SD-карту с метками времени, используя датчик температуры DS18B20 и модуль часов реального времени (RTC).

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

Спасибо за прочтение.