Найти в Дзене

Цифровой термометр‑гигрометр с логированием данных на microSD: строим умный регистратор

Примечание: статья создана с использованием искусственного интеллекта (для структурирования и редактирования текста). Введение Привет, друзья! Сегодня разберём проект, который сочетает простоту реализации и реальную практическую пользу — цифровой термометр‑гигрометр с записью данных на microSD. Устройство на базе STM32 будет: Идеально для контроля микроклимата в доме, теплице или лаборатории. Обычный термометр показывает «сейчас», но не отвечает на вопросы: Наш регистратор решает эти задачи: Система состоит из четырёх ключевых блоков: Дополнительно: При включении STM32: Калибровка RTC: Датчик опрашивается раз в 10 секунд. Для DHT22 (интерфейс 1‑Wire): Для SHT31 (интерфейс I²C): Важные нюансы: Данные упаковываются в строку формата CSV (удобно для Excel):
2026-02-03,15:42:10,22.3,48.7 Буфер накапливает 5–10 записей перед записью на карту — это снижает износ microSD. Через библиотеку Petit FatFS устройство: Важные ограничения Petit FatFS: Защита от сбоев: На LCD отображаются: Temp: 22.3
Оглавление

Примечание: статья создана с использованием искусственного интеллекта (для структурирования и редактирования текста).

Введение

Привет, друзья! Сегодня разберём проект, который сочетает простоту реализации и реальную практическую пользу — цифровой термометр‑гигрометр с записью данных на microSD.

Устройство на базе STM32 будет:

  • измерять температуру и влажность;
  • сохранять показания с меткой времени;
  • выводить текущие значения на дисплей.

Идеально для контроля микроклимата в доме, теплице или лаборатории.

Зачем это нужно?

Обычный термометр показывает «сейчас», но не отвечает на вопросы:

  • Как менялась температура за сутки?
  • Были ли критические перепады влажности?
  • Когда включалось отопление?

Наш регистратор решает эти задачи:

  • создаёт архив измерений для последующего анализа;
  • подаёт сигнал при выходе параметров за заданные границы.

Схема устройства

Система состоит из четырёх ключевых блоков:

  1. Датчик (DHT22 или SHT31) — снимает показания температуры и влажности.
  2. Микроконтроллер (STM32F103C8T6) — обрабатывает данные, управляет периферией.
  3. MicroSD‑карта — хранит лог в текстовом формате.
  4. Дисплей (LCD 16×2) — отображает текущие значения.

Дополнительно:

  • часы реального времени (RTC, например, DS1307) — для тайм‑стемпинга;
  • светодиод — индикация ошибок;
  • суперконденсатор — страховка от потери данных при отключении питания.

Как это работает: пошаговый алгоритм

1. Инициализация

При включении STM32:

  • настраивает GPIO для датчика и дисплея;
  • активирует SPI для microSD и I²C для LCD;
  • запускает RTC.

Калибровка RTC:

  • выполняется один раз при первом включении или после замены батареи DS1307;
  • для повышения точности возможна синхронизация через GPS или NTP (при наличии Wi‑Fi);
  • для лучшей стабильности рекомендуется использовать термокомпенсированные RTC (например, DS3231).

2. Измерение параметров

Датчик опрашивается раз в 10 секунд.

Для DHT22 (интерфейс 1‑Wire):

  • отправка стартового импульса;
  • чтение 40 бит данных;
  • проверка CRC.

Для SHT31 (интерфейс I²C):

  • I²C‑запрос с проверкой контрольной суммы.

Важные нюансы:

  • DHT22 требует стабильного питания (не ниже 3 В). Рекомендуется установить конденсатор 100 мкФ рядом с датчиком.
  • Тайм‑аут ожидания ответа DHT22 установлен в 500 мс (с запасом; по спецификации — до ~200 мс).
  • Для SHT31 убедитесь, что адрес устройства на шине I²C соответствует настройкам в коде (стандартные адреса: 0x44, 0x45).

3. Формирование записи

Данные упаковываются в строку формата CSV (удобно для Excel):
2026-02-03,15:42:10,22.3,48.7

Буфер накапливает 5–10 записей перед записью на карту — это снижает износ microSD.

4. Сохранение на microSD

Через библиотеку Petit FatFS устройство:

  • открывает файл DATA.TXT в режиме добавления (формат 8.3, совместимый с FAT16/FAT32);
  • записывает буфер;
  • закрывает файл, чтобы избежать потери данных.

Важные ограничения Petit FatFS:

  • не поддерживает длинные имена файлов;
  • работает с FAT16/FAT32 (максимальный размер файла — 2 ГБ);
  • при заполнении карты устройство переходит в режим «только чтение» до очистки.

Защита от сбоев:

  • при ошибках записи система делает 3 попытки с интервалом 1 с;
  • если ошибка сохраняется, данные остаются во внутреннем буфере STM32 до восстановления связи с картой;
  • суперконденсатор (1–2 Ф, 5.5 В) обеспечивает 1–2 с для завершения операции f_write() и вызова f_close() при отключении питания. Он подключается параллельно питанию MCU через диод Шоттки для предотвращения обратного тока.

5. Вывод на дисплей

На LCD отображаются:

Temp: 22.3 C
Hum : 48.7 %

При ошибке датчика — сообщение ERR SENSOR.

6. Аварийная сигнализация

  • Если температура > 30 °C, включается звуковой сигнал (пищалка).
  • При отсутствии microSD мигает светодиод. После вставки карты запись возобновляется автоматически (без перезагрузки).

Ключевые технические нюансы

  1. Файловая система
    Petit FatFS занимает ~6 КБ ОЗУ (критично для STM32F103).
    Имена файлов — в формате 8.3 (например, DATA.TXT).
  2. Энергосбережение
    между измерениями MCU переходит в режим Sleep (потребление 1–2 мА при отключении периферии);
    в режиме Sleep отключаются: дисплей, датчик, SPI/I²C. RTC продолжает работать от резервного питания.
  3. Защита от сбоев
    перед записью проверяется свободное место на карте;
    если DATA.TXT достигает 2 ГБ, создаётся DATA2.TXT;
    при заполнении всех файлов устройство переходит в режим «только чтение»;
    данные буферизируются для минимизации операций записи.
  4. Точность времени
    RTC с кристаллом 32.768 кГц даёт погрешность < 1 мин/месяц (зависит от качества кристалла и температуры);
    калибровка выполняется при первом включении, после замены батареи или если погрешность > 5 мин/месяц.
  5. Объём лога
    каждая запись занимает ~20 байт;
    при интервале 10 с: 8640 записей/день → ~173 КБ/день;
    на 1 МБ карты — ~6 дней данных (при интервале 20 с — ~14 дней).

Выбор компонентов: на что обратить внимание

Датчик

ПараметрDHT22SHT31Цена≈100 руб.≈300 руб.Погрешность температуры±2 °C±0.3 °CИнтерфейс1‑WireI²CУстойчивость к влагеНизкаяВысокая

Нюансы:

  • DHT22 при высокой влажности может «зависать». Решение — принудительный сброс питания через MOSFET.
  • Если датчик не отвечает в течение 500 мс, система регистрирует ошибку TIMEOUT и повторяет запрос в следующем цикле.

microSD‑модуль

  • ищите платы с логическим уровнем 3.3 В (иначе нужен преобразователь);
  • для надёжности используйте карты объёмом до 2 ГБ (некоторые SDHC‑карты ≥ 4 ГБ могут быть несовместимы с Petit FatFS);
  • подключение: используйте аппаратный SPI1 (пины PA5–PA7, PA4 — CS). Если модуль на 5 В, добавьте преобразователь уровней (например, на транзисторах или микросхеме 74LVCX245).

Дисплей

  • LCD 16×2 с модулем PCF8574 (стандартные адреса: 0x27 или 0x3F) экономит выводы MCU;
  • альтернатива: OLED с SPI (освобождает выводы).

Важно: если дисплей не отображается:

  • проверьте адрес устройства на шине I²C;
  • убедитесь, что подтягивающие резисторы 4.7 кОм не создают «перетяжку» сигнала. При подключении нескольких устройств на шину:
    суммарное сопротивление подтяжки снижается (параллельное соединение);
    если оно становится < 1 кОм, сигналы могут искажаться;
    в таких случаях резисторы удаляют с одного или нескольких модулей либо заменяют на резисторы большего номинала (например, 10 кОм).

Питание

  • стабилизатор LM1117‑3.3 для надёжного 3.3 В;
  • суперконденсатор (1–2 Ф, 5.5 В) для страховки от потери данных при отключении питания.

Калибровка датчиков

Для повышения точности показаний датчиков DHT22 и SHT31 рекомендуется провести калибровку по эталонному прибору.