Поиск…


Пример - датчик температуры

Взаимодействие DS18B20 с малиновым pi

Соединение DS18B20 с малиновой пи

введите описание изображения здесь

Вы можете видеть, что есть три терминала

  1. Vcc
  2. Gnd
  3. Данные (один проводной протокол)

введите описание изображения здесь

R1 - сопротивление 4.7 кОм для вытягивания уровня напряжения

  1. Vcc должен быть подключен к любому из контактов 5v или 3.3v из малины pi (PIN: 01, 02, 04, 17).
  2. Gnd должен быть подключен к любому из Gnd контактов из малины pi (PIN: 06, 09, 14, 20, 25).
  3. DATA необходимо подключить к (PIN: 07)

Включение однопроводного интерфейса со стороны RPi

  1. Войдите в Raspberry pi с помощью шпатлевки или любого другого терминала linux / unix.

  2. После входа в систему, откройте файл /boot/config.txt в своем любимом браузере.

    nano /boot/config.txt

  3. Теперь добавьте эту строку dtoverlay=w1–gpio в конец файла.

  4. Теперь перезагрузите перезагрузку малины pi sudo reboot .

  5. Войдите в Raspberry pi и запустите sudo modprobe g1-gpio

  6. Затем запустите sudo modprobe w1-therm

  7. Теперь перейдите в каталог / sys / bus / w1 / devices cd /sys/bus/w1/devices

  8. Теперь вы обнаружите виртуальный каталог, созданный вашим температурным датчиком, начиная с 28 - ********.

  9. Перейти к этому каталогу cd 28-********

  10. Теперь есть имя файла w1-slave , этот файл содержит температуру и другую информацию, такую ​​как CRC. cat w1-slave .

Теперь напишите модуль в python, чтобы прочитать температуру

import glob
import time

RATE = 30
sensor_dirs = glob.glob("/sys/bus/w1/devices/28*")

if len(sensor_dirs) != 0:
    while True:
        time.sleep(RATE)
        for directories in sensor_dirs:
            temperature_file = open(directories + "/w1_slave")
            # Reading the files
            text = temperature_file.read()
            temperature_file.close()
            # Split the text with new lines (\n) and select the second line.
            second_line = text.split("\n")[1]
            # Split the line into words, and select the 10th word
            temperature_data = second_line.split(" ")[9]
            # We will read after ignoring first two character.
            temperature = float(temperature_data[2:])
            # Now normalise the temperature by dividing 1000.
            temperature = temperature / 1000
            print 'Address : '+str(directories.split('/')[-1])+', Temperature : '+str(temperature)

Выше модуля python будет печатать температуру vs адрес в течение бесконечного времени. Параметр RATE определяется для изменения или настройки частоты запроса температуры от датчика.

Фиксированная диаграмма GPIO

  1. [ https://www.element14.com/community/servlet/JiveServlet/previewBody/73950-102-11-339300/pi3_gpio.png][3]


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow