Считывание температуры с помощью датчика DS18B20 и Orange Pi PC (ARMBIAN 5.35)

В предыдущей статье мы считывали показания датчика DS18B20 без использования драйверов, написав собственную программу на C++. В этой статье мы попробуем настроить 1-Wire драйвер и, с его помощью, получить температуру с DS18B20, подключенного к Orange Pi PC.

Операционная система Armbian 5.35 (Ubuntu 16.04) имеет драйвер для работы с 1-Wire устройствами, а именно с датчиком температуры DS18B20. По умолчанию этот драйвер отключён и по этому нужно его настроить.

О наличии этого драйвера в других операционных системах (не Armbian) я не знаю, не проверял.

Настройка драйвера 1-Wire

  1. Для начала сделайте резервную копию script.bin, чтобы, в случае чего, вы смогли вернуть обратно все настройки:
  2. Преобразуйте бинарный файл script.bin в редактируемый файл fex:
  3. Теперь отредактируйте файл script.fex с помощью утилиты nano:
  4. Найдите раздел [w1_para] и отредактируйте строки w1_used и gpio:

    где gpio — это номер пина по колонке BCM. Чтобы узнать, где и какой пин находится, выполняем gpio readall. В моём случае BCM=20, т.е. 37-й физический пин.gpio readall - номер пина BCM
  5. Сохраните и закройте файл:
  6. Преобразуйте измененный script.fex в script.bin:
  7. Отредактируйте файл /etc/modules с помощью утилиты nano:
  8. Добавьте следующие строки:
  9. Сохраните и закройте файл:
  10. Перезагрузите систему:

Схема подключения датчика DS18B20 к Orange Pi PC

Подключение датчика температуры DS18B20 к Orange Pi, Banana Pi, Raspberry Pi

Считывание температуры с датчика DS18B20

После перезагрузки выполняем команду:

вы должны получить примерно такой результат:

Это означает, что драйвер 1-wire настроен на 20-й пин.

Чтобы увидеть все подключённые датчики выполняем:

У меня два датчика, 28-000005464e04 и 28-00000547cabb:

Температура и crc записаны в файле w1_slave каждого датчика и, чтобы узнать её, выводим на экран содержимое этого файла:

результат:

где температура t=22062, т.е. 22.062 °C.
Считывание температуры с датчика DS18B20

Похожие записи

Комментарии 3

  • Добрый день
    orange pi one. стоит образ armbian от orangepi pc (на сайте написано что они подходят)
    uname -a
    4.14.70-sunxi #265 SMP Wed Sep 19 10:01:19 CEST 2018 armv7l GNU/Linux
    cat /etc/modules
    w1-sunxi
    w1-gpio
    w1-therm
    gpio-sunxi

    script.bin в нем нет, но в armbian-config нашел включение 1ware

    после чего:

    1
    dmesg | grep -E ‘w1|wire’
    [595233.277311] w1_master_driver w1_bus_master1: Attaching one wire slave 00.cd3400000000 crc 21
    [595233.284890] w1_master_driver w1_bus_master1: Family 0 for 00.cd3400000000.21 is not registered.
    [595259.558238] w1_master_driver w1_bus_master1: Attaching one wire slave 00.2d3400000000 crc c8
    [595259.565671] w1_master_driver w1_bus_master1: Family 0 for 00.2d3400000000.c8 is not registered.
    [595321.800421] w1_master_driver w1_bus_master1: Attaching one wire slave 00.ad3400000000 crc 44
    [595321.807568] w1_master_driver w1_bus_master1: Family 0 for 00.ad3400000000.44 is not registered.
    ….
    и таких записей с разным slave и src еще сотни полторы. Все начинаются с 0

    ls -al /sys/bus/w1/devices
    total 0
    drwxr-xr-x 2 root root 0 Oct 28 06:02 .
    drwxr-xr-x 4 root root 0 Oct 28 05:48 ..
    lrwxrwxrwx 1 root root 0 Oct 28 06:03 00-1d3400000000 -> ../../../devices/w1_bus_master1/00-1d3400000000
    lrwxrwxrwx 1 root root 0 Oct 28 06:03 00-ed3400000000 -> ../../../devices/w1_bus_master1/00-ed3400000000
    lrwxrwxrwx 1 root root 0 Oct 28 05:48 w1_bus_master1 -> ../../../devices/w1_bus_master1

    при этом датчик подключен один (к 37 ноге)
    и id иногда сменяются. бывает что их 3

    ни в одной папке нет файла w1_slave

    Поможете разобраться?

    • В ядре linux 4.14 Вам не нужно редактировать файл fex, но файл /boot/armbianEnv.txt и добавлять строки:

      Подключите пины данных устройств к PB20 (это 37-й) gpio и продолжайте, как Kernel 3.4.

      Материалы
      https://docs.armbian.com/User-Guide_Allwinner_overlays/#example-bootarmbianenvtxt-contents
      http://linux-sunxi.org/1-Wire#Linux_kernel_4.14

    • После перезагрузки всё работает точно так-же:

      чтобы увидеть все подключённые датчики:

      и температура:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *