Модуль SD-карти
Зміст
Загальні відомості
Спеціальний модуль для підключення Micro SD (TF) карт пам'яті до Arduino:
• Може використовуватися в різних робототехнічних проектах, де необхідно забезпечити завантаження аудіо, відео, графіки або записи будь-яких даних.
• Модуль дозволяє значно розширити можливості Arduino. Так як в більшості мікроконтролерів вбудована пам'ять обмежена.
• Бібліотека для роботи з даними адаптером входить в стандартний набір Arduino IDE. Бібліотека SD дозволяє: читати і записувати дані, створювати і видаляти файли, отримувати інформацію про файлах і SD-карті, працювати з SD-картою на низькому рівні.
• Адаптер підключається до апаратних виводів шини SPI (4 виведення: CS, SCK, MOSI, MISO). Назва виводів зазначено на адаптері, їх потрібно підключити до однойменних виводів плат Arduino.Характеристика модуля
- Вхідна напруга живлення: 4.5 - 5.5 В
- Струм споживання адаптером: 0.2 - 200 мА
- Підтримувані рівні логічної «1»: 3.3 / 5 В
- Інтерфейс: SPI
- Підтримуваний обсяг MicroSD: до 2 Гб
- Розмір: 46 x 24 x 7 мм
- Вага: 5 г
Підключення модуля до Arduino
Плата розширення значно полегшує підключення. На ній встановлено регулятор, який перетворює напругу в 3.3 В (I2C). Є регулятор рівня, який перетворює живення логіки з 3.3-5 В в 3.3 В. Це означає, що плату розширення можна використовувати з мікроконтролерами 3.3 В і 5 В.
Найкраще підключати SD карту до пінам hardware SPI, тому-що при її використанні відбувається передача великої кількості даних. На "класичних платах Arduino (Duemilanove / Diecimila / Uno) це цифровий пін 13 (SCK), 12 (MISO) і 11 (MOSI). Також знадобиться четвертий пін для ланцюга 'chip / slave select' (SS). Традиційно використовують 10 пін, але можна і інший. Якщо в наявності є плата Arduino Mega, піни будуть відрізнятися! В цьому випадку використовуйте 50 (MISO), 51 (MOSI), 52 (SCK) і 53 (SS) для ланцюга CS. Знову таки, ви можете змінити пін SS (10 або 53).
Програмування
У програмний пакет Arduino IDE входить спеціальна бібліотека SD. Бібліотека підтримує на стандартних картах і SDHC файлові системи FAT16 і FAT32. Працює з іменами файлів довжиною 8 символів і розширенням імені 3 символу. Починаючи з версії 1.0, бібліотека SD підтримує відкриття декількох файлів. Програмне забезпечення Arduino містить процедури дозволяють працювати з картою SD і інтерфейсом SPI.
Базові функції, для роботи з файлами SD-карти
// Створення змінної myFile класу File бібліотеки SD, яка буде служити "покажчиком" на файл File myFile; // змінна буде потрібно для відкриття і закриття файлу, а так само для роботи з відкритим файлом
// Відкриття файлу "iarduino.txt" для читання і запису, починаючи з кінця файлу: myFile = SD.open ( "iarduino.txt", FILE_WRITE); // якщо файлу з ім'ям "iarduino.txt" - немає, то він буде створений.
// Запис рядка в файл> "iarduino.txt": myFile.print ( "початок рядка,"); // запис рядка у відкритий файл "iarduino.txt", без додавання символів переходу на новий рядок. myFile.println ( "продовження рядка."); // запис рядка у відкритий файл "iarduino.txt", з додаванням символів переходу на новий рядок. // Закриття файлу "iarduino.txt": myFile.close ();
// Відкриття файлу "iarduino.txt" для читання, починаючи з початку файлу: myFile = SD.open ( "iarduino.txt"); // якщо файлу з ім'ям "iarduino.txt" - немає, то він не буде відкритий.
// Читання рядків з файлу "iarduino.txt": while (myFile.available ()) // якщо є дані для читання з відкритого файлу "iarduino.txt" { Serial.write (myFile.read ()); // читаємо черговий байт з файлу і виводимо його в послідовний порт. }
// Видалення файлу "iarduino.txt": SD.remove ( "iarduino.txt"); // функція повертає результат видалення true / false
// Створення файлу "iarduino.txt": myFile = SD.open ( "iarduino.txt", FILE_WRITE); // якщо файлу з ім'ям "iarduino.txt" - немає, то він буде створений. myFile.close (); // закриваємо файл "iarduino.txt" без запису даних.
// Перевірка існування файлу "iarduino.txt": if (SD.exists ( "example.txt")) {...;} // умова буде виконана, якщо файл "iarduino.txt" існує на SD-карті
// Перевірка відкриття файлу "iarduino.txt": if (myFile) {...;} // умова буде виконана, якщо файл був успішно відкритий: myFile = SD.open (...)
// Створення каталогу "my_Dir" SD.mkdir ( "my_Dir"); // функція повертає результат створення true / false. Якщо вказати "first_Dir / my_Dir", то буде створено два каталоги (каталог my_Dir в каталозі first_Dir)
// Видалення каталогу "my_Dir" SD.rmdir ( "my_Dir"); // функція повертає результат видалення true / false. Видаляється каталог повинен бути порожнім
Створення файлу
// підключення бібліотек SPI і SD: #include <SPI.h> #include <SD.h> const uint8_t PIN_CS = 10; // вказуємо номер виведення arduino підключеного до висновку CS адаптера File myFile; // створюємо змінну myFile класу File, яка буде служити "покажчиком" на відкритий файл void setup () { Serial.begin (9600); // відкриваємо послідовний порт на швидкості 9600 бод while (! Serial) { ; // очікуємо з'єднання послідовного порту } // використовуємо відповідь ініціалізації, для визначення працездатності карти і адаптера if (! SD.begin (PIN_CS)) // ініціалізація SD карти із зазначенням номера виведення CS { Serial.println ( "SD-card not found"); return; // помилка ініціалізації. картка не знайдено або сигнал не підключено (неправильно підключений) адаптер карт MicroSD } // перевіряємо наявність файлу "iarduino.txt" на SD-карті if (SD.exists ( "iarduino.txt")) // якщо файл з ім'ям "iarduino.txt" існує, то ... { Serial.println ( "file exists"); } Else {// інакше ... Serial.println ( "file does not exist"); } // відкриваємо файл "iarduino.txt" для читання і запису, починаючи з кінця файлу, і записуємо в нього рядок myFile = SD.open ( "iarduino.txt", FILE_WRITE); // якщо файлу з ім'ям "iarduino.txt" - немає, то він буде створений. if (myFile) // якщо файл доступний (відкритий для запису), то ... { Serial.println ( "file is opened"); myFile.print ( "The beginning of a line,"); // записуємо першу частину рядка в файл myFile.println ( "The end of the line"); // записуємо другу частину рядка в файл Serial.println ( "data written to the file"); myFile.close (); // закриваємо файл Serial.println ( "file is closed"); } Else { Serial.println ( "file is not opened"); } // перевіряємо наявність файлу "iarduino.txt" на SD-карті if (SD.exists ( "iarduino.txt")) // якщо файл з ім'ям "iarduino.txt" існує, то ... { Serial.println ( "file exists"); } Else { Serial.println ( "file does not exist"); } } void loop () { }
Якщо підключити адаптер карт MicroSD v1.0 до Arduino Uno, підключити Arduino Uno до ПК, завантажити скетч, вставити SD-карту і запустити Монітор послідовного порту, то в моніторі будуть виведені наступні рядки:
file does not exist (файл не виявлений) file is opened (файл відкритий) data written to the file (дані записані в файл) file is closed (файл закритий) file exists (файл виявлений)
а на SD-карті з'явиться файл "iarduino.txt" з одним рядком "The beginning of a line, The end of the line".
Якщо завантажити програму при вставленої в адаптер карт MicroSD v1.0 SD-картою, то на SD-карті з'явиться файл "iarduino.txt" з двома рядками "The beginning of a line, The end of the line", а першим рядком в моніторі послідовного порту буде "file exists" (файл виявлений).
Видалення файлу
// підключення бібліотек SPI і SD: #include <SPI.h> #include <SD.h> const uint8_t PIN_CS = 10; // вказуємо номер виведення arduino підключеного до висновку CS адаптера void setup () { Serial.begin (9600); // відкриваємо послідовний порт на швидкості 9600 бод while (! Serial) { ;// очікуємо з'єднання послідовного порту } // використовуємо відповідь ініціалізації, для визначення працездатності карти і адаптера if (! SD.begin (PIN_CS)) // ініціалізація SD карти із зазначенням номера виведення CS { Serial.println ( "SD-card not found"); // помилка ініціалізації. картка не знайдено або сигнал не підключено (неправильно підключений) адаптер карт MicroSD return; } // перевіряємо наявність файлу "iarduino.txt" на SD-карті if (SD.exists ( "iarduino.txt")) // якщо файл з ім'ям "iarduino.txt" існує, то ... { Serial.println ( "file exists"); // видаляємо файл "iarduino.txt": if (SD.remove ( "iarduino.txt")) // функція повертає результат видалення true / false { Serial.println ( "file deleted"); } Else { Serial.println ( "file is not deleted"); } } Else { Serial.println ( "file does not exist"); } // перевіряємо наявність файлу "iarduino.txt" на SD-карті if (SD.exists ( "iarduino.txt")) // якщо файл з ім'ям "iarduino.txt" існує, то ... { Serial.println ( "file exists"); } Else { Serial.println ( "file does not exist"); } } void loop () { }
Якщо підключити адаптер карт MicroSD v1.0 до Arduino Uno, підключити Arduino Uno до ПК, завантажити скетч, вставити SD-карту і запустити Монітор послідовного порту, то в моніторі будуть виведені наступні рядки:
file exists (файл виявлений) file deleted (файл видалений) file does not exist (файл не виявлений)
а файл "iarduino.txt" буде видалений з SD-карти.
Якщо завантажити скетч при вставленої в адаптер карт MicroSD v1.0 SD-картою, то файл "iarduino.txt" буде видалений з SD-карти, але в моніторі послідовного порту будуть два рядки "file does not exist" (файл не виявлений) .
Перелік посилань
1.http://iarduino.ru/shop/Expansion-payments/spi-adapter-kart-microsd-v0-9b-dlya-arduino-rabotaet-s-oficialnymi-programmami-arduino.html
2.http://robot-kit.ru/product_info.php/info/p1145_Modul-Micro-SD-karty-dlya-Arduino--MicroSD-Shield-.html
3.https://arduino-kit.ru/catalog/id/modul-sd-kartyi-pamyati-dlya-arduino
4.https://arduino.cc