Содержание

SD картридер (Troyka-модуль)

SD картридер (Troyka-модуль) поможет сохранить подробные логи и объёмные файлы в вашем проекте.

Видеообзор

Подключение и настройка

SD картридер (Troyka-модуль) общается с управляющей платой по протоколу SPI. Для удобства работы с модулем используйте Troyka Shield. Или вовсе избавьтесь от проводов с Troyka Slot Shield.

Пример работы для Arduino

В качестве примеры запишем данные с датчика температуры и влажности DHT11 (Troyka-модуль) на SD-карту памяти с помощью библиотеки SD.

dataLoggerDHT11.ino
// библиотека для работы с SPI
#include <SPI.h>
// библиотека для работы с SD-картами
#include <SD.h>
// библиотека для работы с датчиками DHT11, DHT21, DHT22
#include <TroykaDHT.h>
// создаём объект класса 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

Если у вас Iskra JS для работы с SD картами воспользуйтесь встроенной в Espruino IDE библиотекой fs или классом File.

Элементы платы

Холдер

Подпружиненный держатель для карт формата microSD (15×11 мм и восемью контактами).

Troyka контакты

Контакты шины SPI:

Контакты питания:

Периферийное устройство (Slave) взаимодействует с ведущим (Master) тогда, когда на выводе SS присутствует низкий уровень сигнала. В противном случае данные от Master-устройства будут игнорироваться. Такая архитектура позволяет взаимодействовать с несколькими SPI-устройствами, подключенными к одной и той же шине: MISO, MOSI и SCK.

Обвязка для согласования уровней напряжения

Необходима для сопряжения устройств с разными питающими напряжениями. В нашем случае это управляющее устройство Arduino с 5 вольтовой логикой и microSD-карта с 3,3 вольтовой логикой.

Принципиальная и монтажная схемы

Характеристики

Ресурсы