🛒
0 товар.
0 руб.
Логотип

Интернет-магазин «Неглупый Дом»

☰
ИИ-консультант Wildberries OZON Яндекс Маркет
Поиск по сайту
Гугл таблица с ассортиментом

💾 Проект: логгер температуры на SD-карту в формате CSV

Датчик DS18B20 и модуль SD-карты

Модуль SD-карты и DS18B20 пишут CSV-файл, который открывается в Excel.

Как это работает

Модуль SD-карты подключается по тому же протоколу SPI, что и многие другие модули (RFID, дисплеи), просто на своей линии CS. Раз в минуту плата измеряет температуру и дописывает новую строку в CSV-файл на карте — формат с запятыми-разделителями, который без проблем открывается в Excel или Google Таблицах.

Пошаговая сборка

Разводка модулей у разных производителей отличается — если на вашей плате контакты называются иначе, сориентируйтесь по маркировке.

  1. SD-модуль (SPI): CS → D4, SCK → D13, MOSI → D11, MISO → D12, VCC → 5V (у некоторых модулей — 3.3V, уточните по своей плате).
  2. DS18B20: сигнал → D2, подтягивающий резистор 4.7 кОм между сигналом и VCC.
  3. Отформатируйте карту в FAT16 или FAT32 — библиотека SD.h не работает с exFAT, который часто идёт по умолчанию на картах больше 32 ГБ.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить.

#include <SPI.h>
#include <SD.h>
#include <OneWire.h>
#include <DallasTemperature.h>

const int csPin = 4;
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(9600);
  if (!SD.begin(csPin)) {
    Serial.println("Ошибка: SD-карта не найдена");
    return;
  }
  sensors.begin();

  File dataFile = SD.open("log.csv", FILE_WRITE);
  if (dataFile) {
    dataFile.println("millis,temp_c");
    dataFile.close();
  }
}

void loop() {
  sensors.requestTemperatures();
  float t = sensors.getTempCByIndex(0);
  Serial.print("Запись: ");
  Serial.println(t);

  File dataFile = SD.open("log.csv", FILE_WRITE);
  if (dataFile) {
    dataFile.print(millis());
    dataFile.print(",");
    dataFile.println(t);
    dataFile.close();
  } else {
    Serial.println("Не удалось открыть log.csv");
  }
  delay(60000);
}
                

Файл открывается и сразу закрывается на каждой итерации — данные сохраняются на карту даже при внезапной потере питания.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🌐 проводная веб-метеостанция на …💿 логгер температуры на обычную … →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу: 163 ₽ 147 ₽ (экономия 16 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина

Поиск


Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA