====== 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-модуль)]]