Считывание температуры с помощью датчика 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, чтобы, в случае чего, вы смогли вернуть обратно все настройки:
    sudo cp /boot/script.bin /boot/script.bak
  2. Преобразуйте бинарный файл script.bin в редактируемый файл fex:
    bin2fex /boot/script.bin /boot/script.fex
  3. Теперь отредактируйте файл script.fex с помощью утилиты nano:
    nano /boot/script.fex
  4. Найдите раздел [w1_para] и отредактируйте строки w1_used и gpio:
    [w1_para]
    w1_used = 1
    gpio = 20

    где gpio — это номер пина по колонке BCM. Чтобы узнать, где и какой пин находится, выполняем gpio readall. В моём случае BCM=20, т.е. 37-й физический пин.gpio readall - номер пина BCM

  5. Сохраните и закройте файл:
    Ctrl X, Y (Yes), Enter
  6. Преобразуйте измененный script.fex в script.bin:
    sudo fex2bin /boot/script.fex /boot/script.bin
  7. Отредактируйте файл /etc/modules с помощью утилиты nano:
    nano /etc/modules
  8. Добавьте следующие строки:
    w1-sunxi
    w1-gpio
    w1-therm
  9. Сохраните и закройте файл:
    Ctrl X, Y (Yes), Enter
  10. Перезагрузите систему:
    reboot

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

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

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

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

dmesg | grep -E 'w1|wire'

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

root@orangepipc:~# dmesg | grep -E 'w1|wire'
[    5.375196] W1_SUNXI: Added w1-gpio on GPIO-20
[    5.379420] Driver for 1-wire Dallas network protocol.

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

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

ls -al /sys/bus/w1/devices

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

root@orangepipc:~# ls -al /sys/bus/w1/devices
total 0
drwxr-xr-x 2 root root 0 Dec  3 19:59 .
drwxr-xr-x 4 root root 0 Dec  3 19:59 ..
lrwxrwxrwx 1 root root 0 Dec  3 20:02 28-000005464e04 -> ../../../devices/w1_bus_master1/28-000005464e04
lrwxrwxrwx 1 root root 0 Dec  3 20:02 28-00000547cabb -> ../../../devices/w1_bus_master1/28-00000547cabb
lrwxrwxrwx 1 root root 0 Dec  3 19:59 w1_bus_master1 -> ../../../devices/w1_bus_master1
root@orangepipc:~#

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

cat /sys/bus/w1/devices/28-000005464e04/w1_slave

результат:

61 01 4b 46 7f ff 0f 10 02 : crc=02 YES
61 01 4b 46 7f ff 0f 10 02 t=22062

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

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

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

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

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