SD картридер (Troyka-модуль) поможет сохранить подробные логи и объёмные файлы в вашем проекте.
SD картридер (Troyka-модуль) общается с управляющей платой по протоколу SPI. Для удобства работы с модулем используйте Troyka Shield. Или вовсе избавьтесь от проводов с Troyka Slot Shield.
В качестве примеры запишем данные с датчика температуры и влажности DHT11 (Troyka-модуль) на SD-карту памяти с помощью библиотеки SD.
// библиотека для работы с 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 для работы с SD картами воспользуйтесь встроенной в Espruino IDE библиотекой fs или классом File.
Подпружиненный держатель для карт формата microSD (15×11 мм и восемью контактами).
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
вольтовой логикой.