Профессиональный мониторинг температуры на Raspberry Pi с датчиком DS18B20
Обзор
Raspberry Pi — это компактный одноплатный компьютер (SBC), разработанный фондом Raspberry Pi в Великобритании. Он работает на различных ARM-дистрибутивах Linux и предоставляет набор GPIO-контактов для подключения широкого спектра внешних компонентов, таких как датчики и исполнительные механизмы. Поскольку у Pi нет встроенного аналого-цифрового преобразователя (АЦП), аналоговые датчики температуры вроде TMP36 использовать напрямую нельзя. Вместо этого для точного измерения температуры по последовательному интерфейсу рекомендуется цифровой датчик DS18B20.
Необходимые компоненты
- Raspberry Pi (любая современная модель)
- Цифровой датчик температуры DS18B20
- Подтягивающий резистор 4,7 кОм (стандартное значение)
- Плата для прототипирования (макетная плата или Pi-Cobbler)
- Половинчатая макетная плата (опционально, для удлинения проводов)
- Перемычки (папа-папа или папа-мама по необходимости)
Базовая схема
Подключение оборудования
Основа схемы составляют Raspberry Pi, датчик DS18B20, резистор 4,7 кОм, Pi-Cobbler (или прямое подключение к макетной плате) и перемычки. Все компоненты устанавливаются на макетную плату для быстрого прототипирования и удобной отладки.
Схема подключения
DS18B20 использует однопроводный последовательный интерфейс, позволяющий подключать несколько датчиков к одной линии данных. В Raspbian (и производных) датчик определяется как последовательное устройство после загрузки соответствующих модулей ядра. Датчик должен быть подключен к GPIO 4 (BCM 4) — единственному контакту, поддерживающему протокол 1-Wire. Наглядная схема доступна в руководстве Adafruit по DS18B20.
Выбор варианта DS18B20
DS18B20 выпускается в трёх исполнениях:
- Стандартный корпус DIP (для прототипирования)
- Водонепроницаемый с кабелем (для мониторинга окружающей среды)
- Высокотемпературный (до 125 °C)
Все варианты имеют интерфейс 1-Wire и логику преобразования температуры, выдавая цифровые показания непосредственно на Pi. Современные образы Raspbian уже содержат необходимые драйверы, что обеспечивает простой доступ через файловую систему.
Проверка из командной строки
После подключения проверьте датчик из терминала:
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls
cd 28-xxxxxxxxxxxx # замените на серийный номер вашего датчика
cat w1_slave
Вывод будет содержать строку, заканчивающуюся на YES, а на следующей строке — значение температуры в тысячных долях градуса Цельсия.
Программное обеспечение — базовый логгер
Приведённый ниже скрипт на Python считывает температуру каждую секунду и выводит значения в стандартный вывод. Сохраните его как temp_logger_basic.py и запускайте с правами root.
#!/usr/bin/env python3
import os
import glob
import time
# Загрузка модулей 1-Wire
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
BASE_DIR = '/sys/bus/w1/devices/'
DEVICE_FOLDER = glob.glob(BASE_DIR + '28*')[0]
DEVICE_FILE = f'{DEVICE_FOLDER}/w1_slave'
def read_temp_raw():
with open(DEVICE_FILE, 'r') as f:
return f.readlines()
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f
while True:
print(read_temp())
time.sleep(1)
Запуск скрипта даст вывод вроде:
(18.875, 65.975)
(18.875, 65.975)
(18.875, 65.975)
…
Скрипт необходимо запускать через sudo python3 temp_logger_basic.py, так как файлы датчика находятся в защищённой системной директории.
Расширенная реализация
Для промышленного использования макетную плату можно заменить на паяную печатную плату-шилд, что даст более надёжное и переносимое решение. Автор изготовил собственный шилд, вставляемый прямо в Pi, размещённый в компактном чёрном корпусе. Программа записывает показания ежечасно в базу данных MySQL, а визуализация выполняется через Google Charts для наглядного анализа трендов.
Расширенное оборудование
К компонентам базовой схемы добавляются:
- Шилд для прототипирования Adafruit Raspberry Pi (или эквивалентная кастомная ПП)
- Опционально: корпуса и крепеж
Подробное руководство см. в гайде по датчику DS18B20 и документации Raspberry Pi по поддержке 1-Wire.
Производственный процесс
- Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
- Точный температурный профиль Raspberry Pi с Python, SQLite и LabVIEW
- Raspberry Pi сетевой монитор температуры и влажности — руководство по DIY сборке
- Как считывать температуру с DS18B20 на Raspberry Pi 2
- Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
- Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
- Бесшовный мониторинг температуры и влажности на Raspberry Pi с EzTemp
- Точный мониторинг температуры в серверной на Raspberry Pi
- Самодельная система термостатирования для домашнего пивоварения: мониторинг и регулирование на Arduino
- Raspberry Pi BMP085: точные показания температуры и давления по I2C