====== SD картридер (Troyka-модуль) ====== [[amp>product/troyka-sd?utm_source=man&utm_campaign=troyka-sd&utm_medium=wiki|SD картридер (Troyka-модуль)]] поможет сохранить подробные логи и объёмные файлы в вашем проекте. {{ :продукты:troyka-sd:troyka-sd.1.jpg |}} ===== Видеообзор ===== {{youtube>S58Y_cnFcYk?large}} ===== Подключение и настройка ===== SD картридер (Troyka-модуль) общается с управляющей платой по протоколу [[видеоуроки:8-интерфейсы-spi|SPI]]. Для удобства работы с модулем используйте [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-sd&utm_medium=wiki|Troyka Shield]]. {{ :продукты:troyka-sd:troyka-sd_scheme_troykashield.png |}} Или вовсе избавьтесь от проводов с [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-sd&utm_medium=wiki|Troyka Slot Shield]]. {{ :продукты:troyka-sd:troyka-sd_scheme_troykaslotshield.png |}} ===== Пример работы для Arduino ===== В качестве примеры запишем данные с [[amp>product/troyka-temperature-humidity-sensor-dht11?utm_source=man&utm_campaign=troyka-sd&utm_medium=wiki|датчика температуры и влажности DHT11 (Troyka-модуль)]] на SD-карту памяти с помощью [[https://www.arduino.cc/en/reference/SD|библиотеки SD.]] {{ :продукты:troyka-sd:troyka-sd_scheme_troykaslotshield_dht11.png |}} // библиотека для работы с SPI #include // библиотека для работы с SD-картами #include // библиотека для работы с датчиками DHT11, DHT21, DHT22 #include // создаём объект класса DHT // передаём номер пина к которому подключён датчик и тип датчика // типы сенсоров: DHT11, DHT21, DHT22 DHT dht(4, DHT11); // даём разумное имя для CS пина microSD-карты #define SD_CS_PIN 8 String dataString = ""; void setup() { // открываем последовательный порт для мониторинга действий в программе Serial.begin(9600); dht.begin(); // выводим сообщение в Serial-порт о поиске карты памяти Serial.println("Initializing SD card..."); // если microSD-карта не была обнаружена if (!SD.begin(SD_CS_PIN)) { // выводим сообщение об ошибке Serial.println("Card failed, or not present"); // don't do anything more: return; } else { Serial.println("Card initialized."); } } void loop() { // переменная состояния датчика int check; // переменная покозания температуры int temperature; // переменная показания влажности int humidity; dataString = ""; // мониторинг ошибок // считывание данных с датчика DHT11 check = dht.read(); switch (check) { // всё OK case DHT_OK: // считываем показания влажности и температуры temperature = dht.getTemperatureC(); humidity = dht.getHumidity(); // формируем строку с результатами показаний датчика dataString += "Temperature = "; dataString += String(temperature); dataString += "C \t"; dataString += "Humidity = "; dataString += String(humidity); dataString += "%\r\n"; // выводим результаты в serial-порт Serial.print(dataString); // сохраняем на microSD saveSD(); break; // ошибка контрольной суммы case DHT_ERROR_CHECKSUM: Serial.println("Checksum error"); break; // превышение времени ожидания case DHT_ERROR_TIMEOUT: Serial.println("Time out error"); break; // неизвестная ошибка default: Serial.println("Unknown error"); break; } // ждём 1 секунду delay(1000); } void saveSD() { // создаём файл для записи File dataFile = SD.open("datalog.txt", FILE_WRITE); // если файл доступен для записи if (dataFile) { // сохраняем данные dataFile.println(dataString); // закрываем файл dataFile.close(); // выводим сообщение об удачной записи Serial.println("Save OK"); } else { // если файл не доступен Serial.println("Error opening datalog.txt"); } } ===== Примеры работы для Iskra JS ===== Если у вас [[amp>product/iskra-js?utm_source=man&utm_campaign=troyka-sd&utm_medium=wiki|Iskra JS]] для работы с SD картами воспользуйтесь встроенной в Espruino IDE библиотекой [[js:fs:|fs]] или классом [[js:file:|File]]. ===== Элементы платы ===== {{ :продукты:troyka-sd:troyka-sd_annotation.png |}} ===== Холдер ===== Подпружиненный держатель для карт формата microSD (15×11 мм и восемью контактами). ===== Troyka контакты ===== === Контакты шины SPI: === * сигнальный (''DI'') — подключите к ''DO'' пину микроконтроллера. **MOSI** (Master Out Slave In) — линия для передачи данных от ведущего устройства «Master» (микроконтроллера) к ведомому устройству «Slave» (microSD-карте); * сигнальный (''DO'') — подключите к ''DI'' пину микроконтроллера. **MISO** (Master In Slave Out) — линия для передачи данных от ведомого устройства «Slave» (microSD-карты) к ведущему устройству «Master» (микроконтроллеру); * сигнальный (''SCK'') — подключите к ''SCK'' пину микроконтроллера. **SCK** (Serial Clock) — тактовые импульсы, генерируемые ведущим устройством «Master» (микроконтроллером) для синхронизации процесса передачи данных. === Контакты питания: === * земля (''G'') — соедините с землёй микроконтроллера; * питание (''V'') — соедините с питанием микроконтроллера; * сигнальный (''CS'') — подключите к цифровому пину микроконтроллера. **SS** (Slave Select) — вывод, присутствующий на каждом ведомом устройстве. Он предназначен для активизации Мастером того или иного периферийного устройства. Периферийное устройство (Slave) взаимодействует с ведущим (Master) тогда, когда на выводе ''SS'' присутствует низкий уровень сигнала. В противном случае данные от Master-устройства будут игнорироваться. Такая архитектура позволяет взаимодействовать с несколькими SPI-устройствами, подключенными к одной и той же шине: ''MISO'', ''MOSI'' и ''SCK''. ===== Обвязка для согласования уровней напряжения ===== Необходима для сопряжения устройств с разными питающими напряжениями. В нашем случае это управляющее устройство Arduino с ''5'' вольтовой логикой и microSD-карта с ''3,3'' вольтовой логикой. ===== Принципиальная и монтажная схемы ===== {{:продукты:troyka-sd:troyka-sd_schematic.png?direct&350 |}} {{ :продукты:troyka-sd:troyka-sd_layout.png?direct&300|}} ===== Характеристики ===== * Напряжение питания: 3,3–5 В * Выходной интерфейс: SPI * Габариты: 25,4×25,4 мм ===== Ресурсы ===== * [[amp>product/troyka-sd?utm_source=man&utm_campaign=troyka-sd&utm_medium=wiki|SD картридер (Troyka-модуль)]] в магазине. * [[js:fs|Описание библиотеки «fs» для Iskra JS]] * [[js:file|Описание класса «File» для Iskra JS]] * [[http://arduino.ua/ru/prog/SD|Описание библиотеки SD для Arduino (Rus)]] * [[https://www.arduino.cc/en/reference/SD|Описание библиотеки SD для Arduino (Eng)]] * [[https://github.com/amperka/hardware-drawings/blob/master/troyka-sd.svg|Векторное изображение SD картридера (Troyka-модуль)]]