Модуль SD карты
Описание
Универсальный модуль со слотом под SD карту. Дешевый и простой в эксплуатации модуль будет полезен в тех случаях, когда требуется дополнительная память для хранения данных. Идеально подходит для хранения картинок, музыки, видео и т.д.
Технические характеристики
- рабочее напряжение: 4,5-5,5В
- потребляемый ток 80 мА
- поддержка карт: SD
- файловая система: FAT 16
- поддержка карт памяти SD: до 2Гб
Физические размеры
- Модуль (Д х Ш х В): 51 х 31 х 11 мм
Плюсы использования
- Простое и недорогое решение для работы с данными
- Прост в подключении
Минусы использования
- Не поддерживает карты выше 2 Гб
Примеры подключения и использования
Пример 1: В примере иллюстрируется подключение модуля к контроллеру и тестирование работы карты (Пример взят из среды разработки для Ардуино). (Примеры тестировались на контроллере Smart UNO)
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Модуль SD карты | 1 |
Провода папа-мама | 6 |
Скетч для загрузки:
// Подключение библиотек SPI и SD: #include <SPI.h> #include <SD.h> // установка переменных, используемых функциями библиотеки SD: Sd2Card card; SdVolume volume; SdFile root; // измените эту переменную в зависимости от подключения модуля и использования шилдов; // Ethernet shield: пин 4 const int chipSelect = 4; void setup() { // Инициализация сериал порта: Serial.begin(9600); while (!Serial) { ; // ожидание подключения к Serial порту. Только для собственных USB портов } Serial.print("\nInitializing SD card..."); // инициализация карты, и проверка работает ли модуль с данной картой if (!card.init(SPI_HALF_SPEED, chipSelect)) { Serial.println("initialization failed. Things to check:"); Serial.println("* is a card inserted?"); Serial.println("* is your wiring correct?"); Serial.println("* did you change the chipSelect pin to match your shield or module?"); return; } else { Serial.println("Wiring is correct and a card is present."); } // Вывод типа карты Serial.print("\nCard type: "); switch (card.type()) { case SD_CARD_TYPE_SD1: Serial.println("SD1"); break; case SD_CARD_TYPE_SD2: Serial.println("SD2"); break; case SD_CARD_TYPE_SDHC: Serial.println("SDHC"); break; default: Serial.println("Unknown"); } // Теперь мы попробуем открыть 'volume'/'partition' (том/раздел) - файловая система должна быть FAT16 или FAT32 if (!volume.init(card)) { Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card"); return; } // вывод типа и размера первого FAT-тома uint32_t volumesize; Serial.print("\nVolume type is FAT"); Serial.println(volume.fatType(), DEC); Serial.println(); volumesize = volume.blocksPerCluster(); // кластеры и коллекции блоков volumesize *= volume.clusterCount(); // получим много кластеров volumesize *= 512; // на SD карте блоки всегда по 512 байт Serial.print("Volume size (bytes): "); Serial.println(volumesize); Serial.print("Volume size (Kbytes): "); volumesize /= 1024; Serial.println(volumesize); Serial.print("Volume size (Mbytes): "); volumesize /= 1024; Serial.println(volumesize); Serial.println("\nFiles found on the card (name, date and size in bytes): "); root.openRoot(volume); // Вывод всех файлов с карты с датой и размером root.ls(LS_R | LS_DATE | LS_SIZE); } void loop(void) { }
Пример 2: В примере иллюстрируется подключение модуля к контроллеру и запись данных в файл, который создается на карте памяти. (Примеры тестировались на контроллере Smart UNO)
Что нужно | Кол-во, шт |
---|---|
Контроллер Smart UNO | 1 |
Модуль SD карты | 1 |
Провода папа-мама | 6 |
Скетч для загрузки:
#include <SD.h> File dataFile; // файл для записи данных char* DATA_FILE_NAME = "data.txt"; // имя файла void setup() { Serial.begin(9600); // инициализация карты Serial.print("Card-initializing begins..."); if (!SD.begin(4)) { Serial.println("Card-initializing failed"); return; } Serial.println("Card-initializing done"); } void loop() { //получение количества секунд со старта ардуино int seconds = millis() / 1000; //Открытие файла (если его нет, то он создастся) dataFile = SD.open(DATA_FILE_NAME, FILE_WRITE); //запись данных в файл dataFile.print(seconds); dataFile.println(" seconds left from the start"); //закрытие файла dataFile.close(); //контрольный вывод в монитор порта Serial.print(seconds); Serial.println(" seconds left from the start"); //задержка 3 секунды delay(3000); }