Використання температурних датчиків з Raspberry Pi
User Rating: / 8
PoorBest 
There are no translations available.

Temperature-Raspberry-piRaspberry Pi не має виводів АЦП (аналого-цифрового перетворювача) в GPIO, і тому повинен бути використаний цифровий датчик температури.
Датчик, який вибирають в усьому світі, це Dallas DS18B20 - датчик температури 1-Wire (однопровідний). Він відносно дешевий, його дуже легко знайти, простий у використанні і показує температуру з точністю до +/-0,5 градуса у всьому діапазоні від -10 до +85 градусів Цельсія.
Для того, щоб він взаємодіяв з Raspberry Pi, нам потрібний лише один резистор - на 4k7, який діє як «підтягуючий» резистор, - і підключити все, як показано нижче:
Temperature-Raspberry-pi-GPIO-1
Raspberry Pi і температурний датчик DS18B20 – Python
Увійдіть на Raspberry Pi і в командному рядку введіть таку команду:
sudo modprobe w1-gpio && sudo modprobe w1_therm
щоб завантажити модулі ядра однопровідних пристроїв зв'язку, необхідні для використання датчика температури.
(Щоб уникнути необхідності ручного введення цієї команди щоразу, коли Ви повторно завантажуєте Pi, редагуйте з використанням нано або подібного редактора файл "/etc/modules"  додаванням рядків w1-gpio і w1_therm в кінець файлу.)
Тепер в командному рядку введіть:
ls -l /sys/bus/w1/devices/
щоб побачити список пристроїв, підключених в даний момент до Вашого Raspberry Pi.
Ваш датчик температури з'явиться з адресою у форматі 28-00000xxxxxx. Нижче Ви можете побачити, що адреса нашого датчика температури була 28-00000283c6cd. Кожен датчик температури DS18B20 має унікальну жорстко задану адресу, так що Ви можете підключити декілька датчиків температури при необхідності і, як і раніше, читати їх окремо.
Temperature-Raspberry-pi-GPIO-2
Знайдіть свій датчик температури, введіть наступну команду в командному рядку, щоб відкрити файл датчика і переглянути показання температури:
cat /sys/bus/w1/devices/28-00000283c6cd/w1_slave
(переконавшись, звичайно, що підставили адресу свого власного датчика температури)
Вище ми бачимо, що на виході цієї команди є два рядки даних. Наприкінці другого рядку після "t=" є числове значення. Це значення є помножена на 1000 температура датчика в градусах Цельсія. Тому, в нашому прикладі, де ми бачимо t=24812, показання температури буде 24812/1000 = 24,812 градусів за Цельсієм.
Читати температуру за допомогою командного рядка, як тут, не дуже корисно. Загалом ми хочемо вимірювати температуру через регулярні проміжки часу і або відображається десь, або увійти в файл для подальшого аналізу. Для цього ми повинні написати сценарій. Ось наш сценарій Python для вимірювання та відображення температури один раз в секунду:
Temperature-Raspberry-pi-GPIO-3
Не вдаючись у подробиці (натисніть тут, якщо хочете вивчити Python), цей сценарій один раз на секунду читає файл датчика температури, отримує другий рядок, розбиває його на своїх розділених пробілами елементи, отримує десятий з цих елементів (деномінованих '9', бо '0' є першим елементом), пропускає перші два символи ("t=") цього елемента і перетворює те, що залишається (24812 в нашому прикладі) з рядка в числове значення, яке потім ділиться на 1000, щоб дати нам температуру, що потім виведиться на екран.
Temperature-Raspberry-pi-GPIO-4
Скріншот вище показує запуск сценарію поки датчик температури проходить нагрівання.
Швидке відображення температури в командному рядку – Bash
Замість того, щоб писати сценарій Python для читання температури з датчика, можна написати один рядок команди, яка буде читати датчик, витягувати температуру від решти частини повернутих даних і обробляти результат за допомогою Bash в командному рядку Raspberry Pi.
Є багато способів для досягнення цієї мети, але от один приклад з використанням sed і awk:
cat /sys/bus/w1/devices/28-00000283c6cd/w1_slave | sed -n 's/^.*\(t=[^ ]*\).*/\1/p' | sed 's/t=//' | awk '{x=$1}END{print(x/1000)}'
Temperature-Raspberry-pi-GPIO-5
Символ труби "|" використовується для передачі виводу однієї команди до наступної команди. Цей скрипт спочатку читає температуру з датчика, перш ніж повернути два рядки даних, остання частина другого рядка, яка є t=XXXXX, де XXXXX є температурою в мілліградусах Цельсієм. Потім ми використовуємо sed, щоб знайти «слово», яке починається з 't=' в даних, а потім пересилаємо його до другої команди sed, яка видаляє 't='. Нарешті, чисельний результат пропускається далі до команди awk, яка ділить його на 1000 і відображає температуру в градусах Цельсія.
Очевидно, що Ви не хотіли б набирати що довгу лінію щоразу, коли хотіли б перевірити температуру свого датчика, тому можете створити псевдонім:
alias checktemp="cat /sys/bus/w1/devi......x/1000)}"
так що при введенні в checktemp в командному рядку, команди будуть запущені.
Альтернативно, можете зберегти команди як сценарій оболонки. Для цього відкрийте текстовий редактор за допомогою команди:
sudo nano checktemp
який створить порожній файл з ім'ям checktemp. Введіть:
#!/bin/bash
в першому рядку, а потім введіть cat /sys/bus...  і т.д. команди в другому рядку. Натисніть Ctrl-X, щоб вийти і зберегти файл. Щоб зробити цей файл виконуваним (так що ми могли запустити його) введіть:
chmod +x checktemp
і, нарешті, перемістити його в каталог /usr/bin, де зберігається більшість виконуваних файлів:
mv checktemp /usr/bin/
Тепер, коли Ви набираєте checktemp в командному рядку, то буде запускатися Ваш скрипт, і буде відображатися прочитана з датчика температура.
Підключення декількох датчиків температури з Raspberry Pi
Тепер ми розглянемо, як можна під’єднати кілька датчиків температури до Raspberry Pi, що особливо корисне для інших додатків вимірювання різниці температур, де потрібні два або більше датчиків температури.
Temperature-Raspberry-pi-GPIO-6
Вище показано, як схематично підключити три температурних датчика DS18B20 до GPIO виводів Raspberry Pi. Відзначимо, що хоча в даний час існує декілька температурних датчиків для читання, ми досі маємо три з'єднання з Raspberry Pi: 3,3V і 0V підключення живлення датчиків, і один провід даних, який повертає прочитану температуру від всіх датчиків.
Читання показань температури з декількох датчиків через один провід можливо тому, що кожен датчик DS18B20 має унікальний серійний номер, закодований в нього при виготовленні, який Raspberry Pi може використати для їх ідентифікації.
При використанні декількох датчиків перше, що потрібно зробити, це отримати серійний номер для кожного датчика і фізично маркувати їх, щоб Ви знали, що є що, коли будете встановлювати їх у різних місцях по всій системі.
Дотримуйтесь інструкцій, наведених вище, про підключення одного датчика, щоб встановити кожен з них на Вашому Raspberry Pi і скористайтеся командою:
ls -l sys/bus/w1/devices
щоб знайти серійний номер для першого датчика. Потім додайте другий датчик і визначте його, повторно перевіривши підключені пристрої та відзначте його серійний номер. Повторіть цей процес, поки не підключите і не визначите всі датчики.
Щоб підтвердити, що все працює як треба, візьміть прочитану температуру з кожного датчика один за одним за допомогою команди:
cat /sys/bus/w1/devices/28-00000xxxxxxx/w1_slave
... замінивши XXXXXXX правильним серійним номером для кожного датчика.
Тепер Ви готові використовувати датчики температури у своєму проекті на Raspberry Pi. Подібним чином можна використовувати з Raspberry Pi й інші цифрові датчики.
(За матеріалами EN: reuk.co.uk)
 
>
BookNewsPractice SearchPartnersAbout
Підтримка та дизайн: Могильний С.С. Шаблон: Joomla Templates by BuyHTTP Joomla Hosting