Каталог
|
Приклад використання датчика температури DS18B20 з Raspberry Pi за допомогою Python2022-07-28 Всі статті →Приклад використання датчика температури DS18B20 з Raspberry Pi за допомогою Python. У цьому маленькому туторіалі показано як без допомоги сторонніх бібліотек працювати на мові Python в OS Linux на Raspberry Pi з датчиком температури DS18B20 від Maxim Integrated, який працює на шині даних 1-Wire. Усю потрібну інформацію по датчику Ви зможете знайти в офіційній документації. А тим людям які ніколи не стикалися з шиною даних 1-Wire дуже рекомендується ознайомитися з її специфікацією. ПРИМІТКА: Усі команди будуть виконуватися від звичайного користувача. Але треба враховувати налаштування sudo. Якщо у Вас якась команда заборонена на виконання від звичайного користувача вам треба залогинитися під root. Для цього введіть команду su та пароль root. Таким чином Ви зможете виконувати усі команди від прав root, без потреби в команді sudo. Насамперед оновимо операційну систему та перезавантажимо її. 1 :: user@host: sudo apt-get update 2 :: user@host: sudo apt-get upgrade 3 :: user@host: sudo apt-get clean 4 :: user@host: sudo reboot Далі треба увімкнути шину 1-Wire. Це можна зробити двома способами. Перший за допомогою raspi-config та її TUI інтерфейсу, а другий це звичайне редагування конфігураційного файлу config.txt який знаходиться в директорії /boot. Зробимо другим способом, для цього відкриємо config.txt та у самий кінець файлу в розділ [all] додамо строку - dtoverlay=w1-gpio . 5 :: user@host: sudo nano /boot/config.txt # :: Приблизно так виглядає кінець конфігураційного файлу config.txt .
Після того як потрібні данні будуть внесені та збережені треба перезавантажити систему. 6 :: user@host: sudo reboot Після перезавантаження перевіряємо наявність потрібних модулів у системі. 7 :: user@host: lsmod | grep wire # :: Якщо потрібні модулі присутні в системі, то у консолі Ви побачите наступні дві строки.
ПРИМІТКА: Якщо через якусь причину потрібних модулів не буде, тоді треба їх запустити в ручному режимі. Для цього виконайте наступні команди, після чого треба повторно перевірити їх наявність. # :: user@host: sudo modprobe w1-gpio # :: user@host: sudo modprobe w1-therm Після усіх виконаних дій треба вимкнути комп’ютер та під'єднати датчик або датчики до GPIO. 8 :: user@host: sudo shutdown -h now Зображення: Малюнок 1 :: Витяг з офіційної документації - призначення контактів.
Малюнок 2 :: Витяг з офіційної документації - схема підключення. Увага: обов'язково треба встановити між контактами DQ та Vdd резистор номіналом 4,7кОм, та конденсатор номіналом 1uF між контактами Vdd та GND. Усі підключені пристрої до шини 1-Wire розташовується у директорії /sys/bus/w1/devices . Переходимо у неї та дивимося що в ній розташовано. 9 :: user@host: cd /sys/bus/w1/devices 10 :: user@host: ls -lia # :: Ви повинні побачити дві дерикторіїї, або більше якщо датчиків підключено більше.
У данному випадку нас цікавить директорія 28-00000005ed05 . Назва цієї директорії і є індентифікатор датчику. ПРИМІТКА: На оригінальних датчиках у кожного буде свій унікальний ідентифікатор. Наприклад якщо ви під'єднаєте три чи більше датчиків, то у директоріїї ви побачите стільки директорій, скільки датчиків під'єднано до системи (w1_bus_master1 - не рахується) та кожна буде мати унікальний номер (назву). Тепер подивимося, що знаходиться у директорії датчика. 11 :: user@host: ls -lia 28-00000005ed05/
Розглядати за що відповідає кожний файл та кожне посилання ми не будемо. Нас цікавить зараз тільки один файл w1_slave . Виводимо інформацію яка зберігається у ньому. 12 :: user@host: cat /sys/bus/w1/devices/28-00000005ed05/w1_slave
У кінці першого рядка знаходиться словоYES яке відповідає за коректний опрос датчика. У кінці другого рядка знаходяться число 20000 яке являється даними температури. Ось з цим файлом і потрібно працювати. В якості приклада нижче приведений код написаний на мові Python для трьох під'єднаних датчиків.
Наприкінці відзначимо, що дуже зручно працювати з різними датчиками (і не тільки з ними :) ) на мові Python використовуючи - потоки (threading). Але це вже зовсім інша історія :)
Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Сергiй
28.01.2023 21:19:09
Дякую! Ще тільки збираюсь опановувати Raspberri, тому потроху збираю інформацію.
|