В предыдущей статье мы считывали показания датчика DS18B20 без использования драйверов, написав собственную программу на C++. В этой статье мы попробуем настроить 1-Wire драйвер и, с его помощью, получить температуру с DS18B20, подключенного к Orange Pi PC.
Операционная система Armbian 5.35 (Ubuntu 16.04) имеет драйвер для работы с 1-Wire устройствами, а именно с датчиком температуры DS18B20. По умолчанию этот драйвер отключён и по этому нужно его настроить.
О наличии этого драйвера в других операционных системах (не Armbian) я не знаю, не проверял.
Настройка драйвера 1-Wire
- Для начала сделайте резервную копию script.bin, чтобы, в случае чего, вы смогли вернуть обратно все настройки:
sudo cp /boot/script.bin /boot/script.bak
- Преобразуйте бинарный файл script.bin в редактируемый файл fex:
bin2fex /boot/script.bin /boot/script.fex
- Теперь отредактируйте файл script.fex с помощью утилиты nano:
nano /boot/script.fex
- Найдите раздел [w1_para] и отредактируйте строки w1_used и gpio:
[w1_para] w1_used = 1 gpio = 20
где gpio — это номер пина по колонке BCM. Чтобы узнать, где и какой пин находится, выполняем gpio readall. В моём случае BCM=20, т.е. 37-й физический пин.
- Сохраните и закройте файл:
Ctrl X, Y (Yes), Enter
- Преобразуйте измененный script.fex в script.bin:
sudo fex2bin /boot/script.fex /boot/script.bin
- Отредактируйте файл /etc/modules с помощью утилиты nano:
nano /etc/modules
- Добавьте следующие строки:
w1-sunxi w1-gpio w1-therm
- Сохраните и закройте файл:
Ctrl X, Y (Yes), Enter
- Перезагрузите систему:
reboot
Схема подключения датчика DS18B20 к Orange Pi PC
Считывание температуры с датчика 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
Linux orangepipcplus 4.19.20-sunxi #5.75
С датчиком разобрался — работает, но есть один вопросик :
Вы случаем не знаете как переключить разрешение датчика
на 10-11 битное преобразование, а то он похоже на 9 битах.
При комнатной, у вас кстати примером выше тоже похоже — 20750, т.е. точность 0.25 градуса.
И кстати он предложил подключить датчик на 110 порт (PD14) и на другие не соглашался.
Я во всяких никсах и программировании не очень, так что если вам удастся придумать как — будет вам большой респект 😉
Да и кстати в начале темы все ок (где температура t=22062, т.е. 22.062 °C.) т.е. преобразование с большим разрешением, интересно почему. Другая версия драйвера ?
По опыту общения с 18b20 насколько я понял все просто
9бит -точность 0.25
10 — 0.1
11-0.01
Ну да, просто вот вопрос, почему на Kernel 3.4. идет преобразование наверно 12 бит, а на 4.14 — 10 бит.
Может просто со старого какой-нить файлик вытащить и переставить на новый?
На orange pi pc после установки свежего armbian 21.05.1
просто запускаем armbian-config -> System -> Hardware
в самом низу чекаем w1-gpio
сохраняем, получаем предложение перезагрузки и после чего
на PD14 получаем данные.
В node-red узел node-red-contrib-sensor-ds18b20
сразу читает данные с этого пина.
В этой публикации мы сосредоточимся на интересных аспектах одной из самых актуальных тем современности. Совмещая факты и мнения экспертов, мы создадим полное представление о предмете, которое будет полезно как новичкам, так и тем, кто глубоко изучает вопрос.
Исследовать вопрос подробнее — https://mednarkoforum.ru/
купить медицинскую справку для водителя где можно купить медицинскую справку
магазин продажи аккаунтов быстро продать аккаунт
магазин социальных аккаунтов account-service213.ru
биржа для продажи аккаунтов купить аккаунт
продажа аккаунтов продать маркетплейсы для покупки аккаунта
pdacenter.ru — сервис по ремонту бытовой техники
Ремонт бесперебойников в Новосибирске в официальном сервисном центре PDACENTER.
Наши инженеры выполняют ремонт любой сложности по дотупным ценам!
iphone plus iphone 4
english essay https://promontoryartists.org/ edit pad