Featured image of post Чтение температуры с датчика DS18B20 с использованием Raspberry Pi и Python

Чтение температуры с датчика DS18B20 с использованием Raspberry Pi и Python

В проектах на Raspberry Pi нам часто нужно использовать датчики для получения данных об окружающей среде. Один из наиболее распространённых - это цифровой термометр DS18B20...

В проектах на Raspberry Pi нам часто необходимо использовать датчики для получения данных об окружающей среде. DS18B20 - это распространённый цифровой термометр, который можно подключить и прочитать данные о температуре через интерфейс GPIO на Raspberry Pi. В этой статье мы расскажем, как подключить датчик DS18B20 и написать код на Python для циклического считывания температуры.

Сначала давайте разберёмся с основными принципами работы датчика DS18B20. Это цифровой термометр с высокой точностью и достаточно широким диапазоном измерений. Он общается с Raspberry Pi по протоколу One-Wire и получает питание и передаёт данные через GPIO-пин.

1. Подключение:

Шаги для подключения датчика DS18B20 к Raspberry Pi:

  1. Подключите VCC пин датчика DS18B20 к пину 3.3V на Raspberry Pi.
  2. Подключите GND пин датчика DS18B20 к пину GND на Raspberry Pi.
  3. Подключите DATA пин датчика DS18B20 к пину GPIO на Raspberry Pi. Рекомендуется использовать пин GPIO4.

Ниже приведена схема подключения:

1
2
3
4
5
6
DS18B20 модуль
 +-------+
 |       | 3.3V---->|VCC |
 |       |           |     | GPIO4 <--------|DATA |
 |       | Ground---->|GND |
 +-------+

2. Настройка и ручное чтение:

Вот основные шаги для считывания температуры с помощью модуля DS18B20:

  1. Включите поддержку DS18B20 на Raspberry Pi: откройте терминал и введите следующую команду, чтобы убедиться, что ядро модули “w1-gpio” и “w1-therm” включены:
1
sudo nano /boot/config.txt

В конце файла добавьте следующие строки:

1
2
dtoverlay=w1-gpio
dtoverlay=w1-therm

Сохраните изменения и выйдите из редактора, затем перезагрузите Raspberry Pi, чтобы изменения вступили в силу.

  1. Подключите модуль DS18B20: подключите модуль DS18B20 к интерфейсу GPIO на Raspberry Pi, конкретное подключение можно найти в документации модуля.

  2. Считывание температуры: откройте терминал и введите следующую команду, чтобы прочитать значения температуры с модуля DS18B20:

1
2
cd /sys/bus/w1/devices/
ls

Должно появиться имя каталога, начинающееся на “28-”, это уникальный идентификатор модуля DS18B20. Замените этот идентификатор в следующей команде на “<device_id>”, чтобы прочитать температурное значение:

1
cat /sys/bus/w1/devices/<device_id>/w1_slave

Эта команда вернет текстовую строку, содержащую значение температуры, где температура начинается с “t=”. Полученное значение “t=” разделите на 1000, чтобы получить температуру в градусах Цельсия.

Учтите, что поскольку модуль DS18B20 требует времени для точной измерения температуры, перед считыванием следует подождать некоторое время (например, 1 секунду), чтобы гарантировать, что измерение завершено. Также рекомендуется проверить электрические соединения между Raspberry Pi и модулем DS18B20 для корректного считывания температуры.

3. Циклическое считывание на Python:

После правильного подключения мы можем написать код на Python для чтения значений температуры, измеряемых датчиком DS18B20. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import time

# Определяем путь к файлу датчика DS18B20
sensor_file = '/sys/bus/w1/devices/28-<device_id>/w1_slave'  # Замените <device_id> на фактический ID устройства

def read_temperature():
    try:
        # Открываем файл датчика
        with open(sensor_file, 'r') as file:
            lines = file.readlines()

        # Получаем строку с температурным значением
        temperature_line = lines[1]

        # Извлекаем температурное значение
        temperature = float(temperature_line.split('=')[1]) / 1000.0

        return temperature

    except IOError as e:
        print("Не удалось прочитать датчик температуры:", str(e))
        return None

# Циклическое считывание температуры и вывод
while True:
    temperature = read_temperature()
    if temperature is not None:
        print("Текущая температура:", temperature, "℃")
    time.sleep(1)  # Задержка 1 секунда

Не забудьте заменить <device_id> в приведённом коде на фактический ID вашего датчика DS18B20. Вы можете найти правильный ID, выполнив команду ls /sys/bus/w1/devices/.

Данный код будет непрерывно считывать температуру и выводить текущее значение каждую секунду. Вы можете изменять и расширять его в соответствии с вашими потребностями.

Чтение температуры с датчика DS18B20 с использованием Raspberry Pi и Python

Следуя этим шагам, вы можете легко считывать значения температуры с датчика DS18B20 с использованием Raspberry Pi и Python. Это предоставляет простой и надежный способ получения данных о температуре окружающей среды для вашего проекта. Надеемся, что эта статья была полезна вам в работе с датчиком температуры на Raspberry Pi!

Создано при помощи Hugo
Тема Stack, дизайн Jimmy