Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Как подключить однопроводный датчик температуры DS1820 к Raspberry Pi через GPIO

Мониторинг температуры в помещении или на улице с Raspberry Pi можно осуществить минимальной установкой. Это руководство показывает, как подключить 1-Wire датчик DS18S20 (DS1820) напрямую к GPIO-пину, считывать температуру в софте и логировать данные с RRDtool.

Raspberry Pi и 1-Wire

DS18S20, DS18B20 и DS1822 — все 1-Wire датчики температуры в корпусе TO‑92, объединяющие сенсор, АЦП и последовательный интерфейс. У них одинаковая распиновка и программный интерфейс, но отличаются стоимостью и точностью — DS18S20 даёт ±0,5 °C, DS18B20 ±0,5 °C, DS1822 ±0,5 °C, но дешевле.

У каждого устройства три пина: Земля (GND, пин 1), Данные (DQ, пин 2), Питание (VDD, пин 3). Паразитное питание (3–5 В) позволяет запитать датчик исключительно от линии данных через подтягивающий резистор.

Всего один резистор

Подключите DQ пин датчика к GPIO 4 на Pi. Соедините GND с землёй Pi и VDD с GND, включая паразитное питание. Поставьте подтягивающий резистор 4,7 кОм между 3,3 В и GPIO 4. Небольшая макетная плата или угловой хэдер держат проводку аккуратной и помещаются в официальный корпус Pi.

Программные драйверы 1-Wire

На Raspbian (или любом Debian-based дистрибутиве) загрузите модули ядра:

sudo modprobe w1-gpio pullup=1
sudo modprobe w1-therm

Флаг pullup=1 сообщает драйверу, что датчик питается через подтягивающий резистор. После загрузки каждый датчик появляется как поддиректория под /sys/bus/w1/devices. Имя директории состоит из семейного кода и уникального 64-битного идентификатора датчика: DS18S20/DS1820 используют семейный код 10, DS18B20 — 28, DS1822 — 22.

Внутри каждой директории лежит w1_slave, содержащий две строки. Первая показывает сырой дамп регистров и CRC-проверку. Вторая заканчивается на t=xxxx — температуру в миллиградусах Цельсия. Пример:

cd /sys/bus/w1/devices
cd 10-000801b5*
cat w1_slave
0f 00 4b 46 ff ff 06 10 0c : crc=0c YES
0f 00 4b 46 ff ff 06 10 0c t=7375

Значение 7375 соответствует 7,375 °C. Обратите внимание, даташит указывает точность ±0,5 °C, поэтому истинная температура в пределах ±0,5 °C от показания.

Чтобы модули загружались при загрузке, добавьте их в /etc/modules:

# /etc/modules
w1-gpio pullup=1
w1-therm

Круговая база данных (RRDtool)

Для долгосрочного хранения и визуализации идеален RRDtool. Установите:

sudo apt-get install rrdtool python-rrdtool

Определите базу, записывающую значение каждые 15 минут и хранящую суточные агрегаты за десять лет:

rrdtool create temperature.rrd --step 900 \
DS:temp0:GAUGE:1200:-40:80 \
DS:temp1:GAUGE:1200:-40:80 \
RRA:AVERAGE:0.5:1:960 \
RRA:MIN:0.5:96:3600 \
RRA:MAX:0.5:96:3600 \
RRA:AVERAGE:0.5:96:3600

Сбор данных с Python

Ниже минимальный Python-скрипт, читающий w1_slave и вставляющий значение в RRDtool-базу. Подправьте пути к датчикам и имя базы по необходимости.

import os
import rrdtool

W1_PATH = '/sys/bus/w1/devices'
DB_FILE = 'temperature.rrd'

def read_temp(sensor_id):
    with open(f'{W1_PATH}/{sensor_id}/w1_slave') as f:
        lines = f.readlines()
    if lines[1].strip().endswith('YES'):
        temp_milli = int(lines[1].strip().split('t=')[-1])
        return temp_milli / 1000.0
    return None

# Пример для двух датчиков
temps = {
    'temp0': read_temp('10-000801b5'),
    'temp1': read_temp('28-0000045e')
}
rrdtool.update(DB_FILE, ','.join(str(t) for t in temps.values()))

Запускайте скрипт периодически (например, через cron) для обновления базы.

Производственный процесс

  1. Сборка логгера температуры на Raspberry Pi с $5 I2C датчиком
  2. Подключение нескольких DS18B20 1-Wire датчиков к Raspberry Pi для точного мониторинга температуры
  3. Как считывать температуру с DS18B20 на Raspberry Pi 2
  4. Профессиональный мониторинг температуры на Raspberry Pi с датчиком DS18B20
  5. Измерение температуры на Raspberry Pi с датчиками Maxim 1-Wire и мостом DS2482 I2C
  6. ИК-датчик температуры TMP006 с Raspberry Pi: библиотека Python и руководство по настройке
  7. Создание удалённого датчика температуры на Raspberry Pi и Python — пошаговое руководство
  8. Создание метеостанции на Raspberry Pi с ежедневными email-отчётами о погоде
  9. Точный мониторинг температуры в серверной на Raspberry Pi
  10. Подключение ультразвукового датчика HC‑SR04 к Raspberry Pi 3 — полное руководство