Руководство по модулю SD-карты с Arduino
В этой статье мы покажем вам, как использовать модуль SD-карты с Arduino для чтения и записи файлов на SD-карту.
Для проекта Arduino с модулем SD-карты читайте нашу статью: Логгер данных температуры Arduino с SD-картой.
Знакомство с модулем SD-карты
Модуль SD-карты особенно полезен для проектов, которые требуют логирования данных.
Arduino может создать файл на SD-карте для записи и сохранения данных с помощью библиотеки SD.
Существуют различные модели от разных производителей, но все они работают аналогичным образом, используя протокол связи SPI. Модуль, используемый в этом руководстве, показан на рисунке ниже (вид спереди и сзади).
Этот модуль работает с 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-карте. Выберите Форматировать, как показано на рисунке ниже.
2) Появится новое окно. Выберите FAT32, нажмите Начать, чтобы запустить процесс форматирования, и следуйте инструкциям на экране.
Тестирование модуля SD-карты
Вставьте отформатированную SD-карту в модуль SD-карты.
Подключите модуль SD-карты к Arduino, как показано на схеме ниже, или проверьте раздел Распиновка подключения в предыдущем разделе.
Примечание: в зависимости от используемого модуля, порядок выводов может отличаться.
Код — CardInfo
Чтобы убедиться, что всё подключено правильно и SD-карта работает нормально, в окне Arduino IDE перейдите в File > Examples > SD > CardInfo.
Загрузите код на вашу плату Arduino. Убедитесь, что выбрана правильная плата и COM-порт.
Откройте монитор порта (Serial Monitor) со скоростью передачи 9600 бод, и вы должны увидеть информацию о вашей SD-карте.
Если всё работает правильно, вы увидите подобное сообщение в мониторе порта.
Чтение и запись на 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.
Подведение итогов
Это было лишь краткое введение в модуль SD-карты с Arduino.
Обязательно ознакомьтесь со следующей статьёй для примера проекта логирования данных с использованием модуля SD-карты с Arduino:
В этом проекте мы сохраняем показания температуры на SD-карту с метками времени, используя датчик температуры DS18B20 и модуль часов реального времени (RTC).
Надеемся, что это руководство было для вас полезным.
Спасибо за прочтение.