# Как собрать простой регистратор температуры на Arduino: проект для новичка
Простой регистратор температуры на Arduino — это удобный учебный проект, который за один вечер показывает, как работают датчики, таймстемпы и запись данных. Такой логгер пригодится для контроля температуры в доме, холодильнике, теплице, серверном шкафу, котельной или при тестировании утепления.
## Что получится в итоге
В базовой версии устройство:
— измеряет температуру через датчик DS18B20;
— делает замер через заданный интервал;
— сохраняет значения на SD-карту;
— при желании показывает данные в Serial Monitor;
— может работать автономно от блока питания или пауэрбанка.
Для новичка это хороший старт: схема простая, библиотек много, а результат сразу практический.
Когда я только начинал возиться с микроконтроллерами, именно такой логгер стал первым проектом, который принёс реальную пользу в доме. Потом, уже занимаясь котельными, я не раз убеждался: без записи температуры за длительный период многие проблемы просто не видны. Например, твердотопливный котёл может перегреваться в момент затухания, а автоматика — неадекватно реагировать на резкие скачки. Без графика это остаётся на уровне догадок.
## Что нужно для сборки
Минимальный набор компонентов:
| Компонент | Зачем нужен | Примечание |
|—|—|—|
| Arduino Uno / Nano | Управляет всей схемой | Для новичка удобнее Uno или Nano |
| DS18B20 | Измеряет температуру | Лучше брать в герметичном корпусе с проводом |
| Резистор 4,7 кОм | Подтяжка линии данных | Обязателен для стабильной работы DS18B20 |
| Модуль microSD | Записывает данные | Удобнее брать модуль с уровневым согласованием |
| microSD-карта | Хранит лог | Лучше FAT32, без сложной разметки |
| Провода и макетная плата | Для сборки | На старте пайка не обязательна |
| Источник питания 5 В | Для автономной работы | Можно использовать USB |
Если нужен только учебный стенд, этого достаточно. Если хотите добавить точное время записи, позже можно подключить RTC-модуль, например DS3231.
По своему опыту скажу: не экономьте на модуле SD-карты. Дешёвые платы без уровневого согласования иногда работают нестабильно с 5-вольтовой логикой Arduino, а в полевых условиях — в подвале или котельной — это вылезает в самый неподходящий момент.
## Почему именно DS18B20
DS18B20 — один из самых удобных датчиков для первого проекта. Он цифровой, поэтому меньше боится помех, чем аналоговые датчики. У него:
— простое подключение по одной линии данных;
— нормальная точность для бытовых задач;
— возможность ставить несколько датчиков на один провод;
— устойчивость в длинных проводах лучше, чем у многих дешёвых аналоговых решений.
Для новичка это почти идеальный вариант: подключил, поставил библиотеку, проверил показания.
Когда я проектировал систему мониторинга для собственной котельной, то пробовал и аналоговые термисторы, и DHT22. Но именно DS18B20 показал себя наиболее предсказуемо на проводе длиной 15 метров, проложенном рядом с силовыми кабелями насосов. Цифровой протокол 1-Wire оказался куда менее восприимчив к наводкам, чем аналоговый сигнал.
## Схема подключения
У DS18B20 обычно три вывода:
— GND — земля;
— VCC — питание 5 В;
— DATA — линия данных.
Подключение:
— GND датчика → GND Arduino;
— VCC датчика → 5V Arduino;
— DATA датчика → любой цифровой пин Arduino, например D2;
— между DATA и 5V ставится резистор 4,7 кОм.
Модуль SD-карты подключается по SPI. На Arduino Uno обычно используют:
— CS → D10;
— MOSI → D11;
— MISO → D12;
— SCK → D13;
— VCC → 5V или 3.3V в зависимости от модуля;
— GND → GND.
## Что важно проверить до запуска
Перед тем как заливать скетч:
— SD-карта должна быть отформатирована в FAT32;
— питание должно быть стабильным;
— у DS18B20 должен быть именно подтягивающий резистор 4,7 кОм;
— провода DATA не должны быть слишком длинными на первом запуске;
— модуль SD не должен конфликтовать по питанию с Arduino.
Частая ошибка новичков — подключить всё правильно “на глаз”, но забыть про общий GND. Без общей земли схема часто ведёт себя нестабильно.
Добавлю важный момент из практики: если планируете использовать логгер в котельной или рядом с насосным оборудованием, сразу закладывайте экранированный провод для датчика. Я однажды потратил полдня, пытаясь понять, почему показания скачут на полградуса каждые 20 минут — оказалось, что пусковой ток циркуляционного насоса наводил помеху на длинную линию данных. Экранирование и качественная подтяжка решили проблему полностью.
## Логика работы проекта
Принцип очень простой:
1. Arduino запускается.
2. Инициализирует датчик температуры.
3. Инициализирует SD-карту.
4. Считывает температуру через заданный интервал.
5. Записывает строку в файл.
6. Ждёт следующий цикл.
Если добавить RTC-модуль, можно писать не просто “температура 23,4”, а полноценную строку:
— дата;
— время;
— значение температуры.
Это сильно повышает ценность логов. Без времени файл тоже полезен, но анализировать его сложнее.
По сути, здесь работает тот же принцип, что и в GPS-трекерах, которые я когда-то разрабатывал: устройство должно быть максимально автономным, стабильно просыпаться по таймеру и гарантированно сохранять данные даже при нештатном отключении питания. Разница лишь в том, что трекер пишет координаты, а логгер — температуру, но подход к надёжности записи абсолютно одинаковый.
## Пример простого скетча
Ниже — базовая версия для новичка: один DS18B20, запись в CSV-файл на SD-карту.
## Как улучшить этот код
Базовая версия подходит для старта, но у неё есть ограничения:
— в файл пишется `millis()`, а не реальное время;
— при отключении питания счётчик обнуляется;
— нет контроля ошибок датчика;
— нет защиты от ложных показаний;
— нет красивого форматирования даты.
Для практического применения лучше доработать проект.
## Полезные улучшения для реального использования
### 1. Добавить RTC-модуль
Если нужен точный журнал, добавьте DS3231. Тогда каждая запись будет с датой и временем.
### 2. Писать в CSV
Формат CSV удобен:
— открывается в Excel;
— легко строить графики;
— можно быстро искать пики и провалы.
### 3. Проверять ошибки датчика
DS18B20 возвращает специальные значения при проблеме с датчиком. Это нужно обрабатывать, чтобы в файл не попадал мусор.
### 4. Ограничить частоту записи
Если писать на SD-карту слишком часто, это:
— быстрее изнашивает карту;
— увеличивает риск потери данных;
— делает лог труднее для анализа.
Для бытовых задач обычно достаточно интервала от 10 секунд до 5 минут.
### 5. Добавить светодиод статуса
Один светодиод может показывать:
— питание есть;
— запись идёт;
— ошибка SD-карты;
— ошибка датчика.
Это мелочь, но в полевых условиях очень помогает.
Когда я ставил такой логгер в котельную для длительного теста, светодиод статуса спас меня от лишних поездок. По миганию сразу было видно: идёт ли запись, не зависла ли карта, жив ли датчик. Без визуальной индикации пришлось бы каждый раз подключаться по USB и смотреть логи, а это неудобно, когда устройство смонтировано в углу за котлом.
## Типичные ошибки новичков
| Ошибка | Что происходит | Как исправить |
|—|—|—|
| Нет резистора 4,7 кОм | Датчик работает нестабильно | Поставить подтяжку DATA к VCC |
| SD-карта не FAT32 | Arduino не видит карту | Отформатировать карту заново |
| Плохое питание | Логер зависает или перезапускается | Использовать стабильные 5 В |
| Слишком длинные провода | Плавающие показания | Укоротить провод или улучшить монтаж |
| Неверный CS-пин | SD не инициализируется | Проверить схему и код |
| Нет общего GND | Устройство работает хаотично | Соединить все земли вместе |
## Где такой регистратор реально полезен
Простой температурный логгер имеет смысл не только как учебный проект. Он полезен:
— для контроля температуры в подвале;
— для отслеживания режима котельной;
— для проверки морозильника;
— для наблюдения за теплицей;
— для теста отопления в частном доме;
— для контроля температуры в шкафу с электроникой;
— для поиска причин перегрева или переохлаждения.
На практике такие данные часто помогают увидеть проблему, которую “на глаз” не заметишь. Например, котёл может работать нормально днём и уходить в провалы ночью. Без логирования это сложно доказать.
В моей практике был случай: заказчик жаловался, что в дальних комнатах холодно, хотя котёл вроде бы работает исправно. Поставили три логгера — на подаче, на обратке и в проблемной комнате. Через сутки стало ясно: ночью трёхходовой клапан по какой-то причине уходил в перепуск, и теплоноситель циркулировал по малому кругу. Без записи температуры по времени мы бы гадали ещё неделю.
## Как проверить, что всё работает
После сборки:
— откройте Serial Monitor;
— убедитесь, что Arduino видит SD-карту;
— проверьте, что температура меняется при нагреве датчика рукой;
— убедитесь, что файл `temp.csv` создаётся на карте;
— откройте файл на компьютере и проверьте строки.
Если температура не меняется:
— проверьте адрес пина DS18B20 в коде;
— проверьте резистор подтяжки;
— осмотрите контакты датчика;
— замените провод DATA на короткий.
## Мини-чек-лист перед первым запуском
— [ ] DS18B20 подключён правильно
— [ ] Резистор 4,7 кОм установлен
— [ ] SD-модуль получает питание
— [ ] Карта отформатирована в FAT32
— [ ] CS-пин в коде совпадает со схемой
— [ ] Все земли соединены
— [ ] В Serial Monitor нет ошибок инициализации
## Как сделать проект надёжнее
Если проект нужен не “поиграться”, а для постоянной работы:
— соберите всё на пайке, а не на макетной плате;
— используйте качественный блок питания;
— поставьте герметичный DS18B20;
— храните Arduino и SD-модуль в корпусе;
— добавьте RTC;
— разнесите силовые и сигнальные провода.
Для домашней инженерии это особенно важно: в котельной, подвале или рядом с насосами условия обычно хуже, чем на столе.
Из опыта монтажа систем отопления: любой электронный компонент, работающий в котельной, должен быть защищён от пыли, влажности и перепадов температуры. Я обычно использую пластиковые корпуса со степенью защиты IP55 и кабельные вводы с резиновыми уплотнителями. Это недорого, но сильно продлевает жизнь устройству.
## Вывод
Простой регистратор температуры на Arduino — один из лучших проектов для новичка. Он недорогой, понятный и сразу даёт полезный результат. Начать можно с DS18B20 и SD-карты, а потом добавить точное время, дисплей, несколько датчиков и автономное питание.
Если собрать базовую версию аккуратно, она уже сможет вести нормальный температурный журнал для дома, мастерской или инженерного узла.
## FAQ
### Можно ли обойтись без RTC-модуля?
Да, можно. Но тогда в логе не будет реального времени, только относительный счётчик вроде `millis()`. Для анализа это хуже.
### Какой Arduino лучше выбрать новичку?
Для первого проекта подойдут Arduino Uno или Nano. Они простые, хорошо документированы и легко запускаются с популярными библиотеками.
### Можно ли подключить несколько DS18B20?
Да. Один из плюсов этого датчика — несколько устройств могут работать на одной линии данных. Это удобно для разных точек контроля.
### Как часто лучше делать замер?
Для бытового логирования обычно хватает 10–60 секунд. Если задача связана с медленными изменениями, можно ставить интервал 1–5 минут.
### Почему SD-карта не записывает файл?
Чаще всего причина в формате карты, неверном CS-пине, плохом питании или проблемах с модулем. Начинать проверку лучше с питания и инициализации карты.