- Огляд датчика DHT11:
- Передумови:
- Встановлення РК-бібліотеки Adafruit на Raspberry Pi:
- Встановлення бібліотеки Adafruit DHT11 на Raspberry Pi:
- Кругова діаграма:
- Програмування на Python для датчика DHT11:
- Вимірювання вологості та температури за допомогою Raspberry Pi:
Температура та вологість - найпоширеніші параметри, які контролюються в будь-якому середовищі. Існує безліч датчиків на вибір для вимірювання температури та вологості, але найбільш часто використовуваним є DHT11 завдяки його гідному діапазону вимірювання та точності. Він також працює за допомогою одного штифтового зв'язку, а отже, дуже легко взаємодіяти з мікроконтролерами або мікропроцесорами. У цьому підручнику ми дізнаємось, як поєднати популярний датчик DHT11 з Raspberry Pi та відобразити значення температури та вологості на РК-екрані 16x2. Ми вже використовували його для побудови метеостанції Raspberry Pi IoT.
Огляд датчика DHT11:
Датчик DHT11 може вимірювати відносну вологість та температуру за наступними характеристиками
Діапазон температур: 0-50 ° C Точність температури: ± 2 ° C Діапазон вологості: 20-90% RH Точність вологості: ± 5%
Датчик DHT11 доступний як у формі модуля, так і у формі датчика. У цьому посібнику ми використовуємо модульну форму датчика, єдина відмінність між ними полягає в тому, що у модульній формі датчик має фільтруючий конденсатор та підтягуючий резистор, прикріплений до вихідного штифта датчика. Отже, якщо ви використовуєте лише датчик, обов’язково додайте ці два компоненти. Також навчіться взаємодії DHT11 з Arduino.
Як працює датчик DHT11:
Датчик DHT11 постачається з синім або білим кольоровим корпусом. Усередині цього кожуха є два важливі компоненти, які допомагають нам відчути відносну вологість та температуру. Перший компонент - пара електродів; електричний опір між цими двома електродами визначається вологоутримуючою основою. Отже, виміряний опір обернено пропорційний відносній вологості навколишнього середовища. Чим вище відносна вологість, тим нижчим буде значення опору і навпаки. Також зверніть увагу, що відносна вологість відрізняється від фактичної вологості. Відносна вологість вимірює вміст води в повітрі відносно температури в повітрі.
Іншим компонентом є наземний терморезистор NTC. Термін NTC означає негативний температурний коефіцієнт, для підвищення температури значення опору зменшиться
Передумови:
Передбачається, що ваш Raspberry Pi вже прошитий операційною системою і може підключатися до Інтернету. Якщо ні, дотримуйтесь підручника Початок роботи з Raspberry Pi, перш ніж продовжувати.
Також передбачається, що ви маєте доступ до свого pi або через вікна терміналів, або через іншу програму, за допомогою якої ви можете писати та виконувати програми на python та використовувати вікно терміналу.
Встановлення РК-бібліотеки Adafruit на Raspberry Pi:
Значення температури та вологості відображатимуться на РК-дисплеї 16 * 2. Adafruit надає нам бібліотеку для легкої роботи з цим РК-дисплеєм у 4-розрядному режимі, тому давайте додамо його до нашого Raspberry Pi, відкривши вікно терміналу Pi та виконавши наведені нижче дії.
Крок 1: Встановіть git на Raspberry Pi за допомогою рядка нижче. Git дозволяє клонувати будь-які файли проектів на Github та використовувати їх на вашому Raspberry pi. Наша бібліотека знаходиться на Github, тому ми повинні встановити git, щоб завантажити цю бібліотеку в pi.
apt-get install git
Крок 2: Наступний рядок посилається на сторінку GitHub, де присутня бібліотека, просто виконайте рядок, щоб клонувати файл проекту в домашній директорії Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Крок 3: Використовуйте команду нижче, щоб змінити рядок каталогу, щоб потрапити до файлу проекту, який ми щойно завантажили. Командний рядок наведено нижче
cd Adafruit_Python_CharLCD
Крок 4: Усередині каталогу буде файл з назвою setup.py , ми повинні його встановити, встановити бібліотеку. Використовуйте наступний код для встановлення бібліотеки
sudo python setup.py встановити
Тобто це бібліотека повинна була бути успішно встановлена. Тепер аналогічно приступимо до встановлення бібліотеки DHT, яка також від Adafruit.
Встановлення бібліотеки Adafruit DHT11 на Raspberry Pi:
Датчик DHT11 працює за принципом однопровідної системи. Значення температури та вологості вимірюється датчиком, а потім передається через вихідний штифт у вигляді послідовних даних. Потім ми можемо прочитати ці дані, використовуючи штифт вводу-виводу на MCU / MPU. Щоб зрозуміти, як зчитуються ці значення, вам доведеться прочитати таблицю даних датчика DHT11, але поки для спрощення ситуації ми будемо використовувати бібліотеку для розмови з датчиком DHT11.
Бібліотеку DHT11, яку надає Adafruit, можна також використовувати для DHT11, DHT22 та інших однопровідних датчиків температури. Процедура встановлення бібліотеки DHT11 також подібна до процедури встановлення бібліотеки РК. Єдиний рядок, який міг би змінитися, - це посилання на сторінку GitHub, на якій зберігається бібліотека DHT.
Введіть чотири командні рядки по одному на терміналі, щоб встановити бібліотеку DHT
клон git
cd Adafruit_Python_DHT sudo apt-get install build build-python-dev sudo python setup.py install
Після цього у вас буде успішно встановлено обидві бібліотеки на нашому Raspberry Pi. Тепер ми можемо продовжити апаратне підключення.
Кругова діаграма:
Повна електрична схема Взаємодія DH11 з Raspberry pi наведена нижче, вона була побудована за допомогою Fritzing. Слідкуйте за підключеннями і зробіть схему
І РК-датчик, і датчик DHT11 працюють із джерелом живлення + 5 В, тому ми використовуємо 5-контактні висновки на Raspberry Pi для живлення обох. На вихідному штифті датчика DHT11 використовується підтягувальний резистор значення 1k, якщо ви використовуєте модуль, цього резистора можна уникнути.
Для регулювання рівня контрастності РК-дисплея на штифт Vee РК-дисплея додається касета тримером 10k. Крім цього, всі зв’язки досить прямі. Але занотуйте, які штифти GPIO ви використовуєте для підключення штифтів, оскільки це буде потрібно в нашій програмі. Наведена нижче діаграма повинна дозволити вам з’ясувати номери штифтів GPIO.
Скористайтеся діаграмою та зробіть свої з’єднання відповідно до принципової схеми. Для встановлення з’єднань я використовував макетну плату та дроти для перемичок. Оскільки я використовував модуль DHT11, я підключив його безпосередньо до Raspberry Pi. Моє обладнання виглядало так нижче
Програмування на Python для датчика DHT11:
Ми повинні написати програму для зчитування значення температури та вологості з датчика DHT11, а потім відобразити те саме на РК-дисплеї. Оскільки ми завантажили бібліотеки як для РК-дисплея, так і для датчика DHT11, код повинен бути майже вперед. Повна програму пітона можна знайти в кінці цієї сторінки, але ви можете читати далі, щоб зрозуміти, як працює програма.
Для використання функцій, пов’язаних з нею, нам потрібно імпортувати бібліотеку LCD та бібліотеку DHT11. Оскільки ми вже завантажили та встановили їх на нашому Pi, ми можемо просто використати наступні рядки, щоб імпортувати їх. Ми також імпортуємо бібліотеку часу для використання функції затримки.
час імпорту # час імпорту для створення затримки імпорт Adafruit_CharLCD як РК-дисплей # Імпорт РК-бібліотеки імпорт Adafruit_DHT # Імпорт бібліотеки DHT для датчика
Далі ми повинні вказати, до яких контактів підключений датчик і який тип датчика температури використовується. Мінлива sensor_name присвоюється Adafruit_DHT.DHT11, так як ми використовуємо датчик DHT11 тут. Вихідний штифт датчика підключений до GPIO 17 Raspberry Pi, і, отже, ми призначаємо 17 для змінної sensor_pin, як показано нижче.
sensor_name = Adafruit_DHT.DHT11 # ми використовуємо датчик DHT11 sensor_pin = 17 # Датчик підключений до GPIO17 на Pi
Подібним чином ми також повинні визначити, до яких контактів GPIO підключений РК-дисплей. Тут ми використовуємо РК-дисплей у 4-розрядному режимі, отже ми матимемо чотири висновки для передачі даних та два висновки для керування для підключення до виводів GPIO пі. Крім того, ви можете підключити штифт підсвічування до штирка GPIO, якщо ми також хочемо керувати підсвічуванням. Але наразі я цим не користуюся, тому призначив йому 0.
lcd_rs = 7 #RS РК підключено до GPIO 7 на PI lcd_en = 8 #EN РК підключено до GPIO 8 на PI lcd_d4 = 25 # D4 РК підключено до GPIO 25 на PI lcd_d5 = 24 # D5 РК є підключено до GPIO 24 на PI lcd_d6 = 23 # D6 РК підключено до GPIO 23 на PI lcd_d7 = 18 # D7 РК підключено до GPIO 18 на PI lcd_backlight = 0 #LED не підключено, тому ми призначаємо 0
Ви також можете підключити РК-дисплей у 8-бітному режимі до Raspberry pi, але тоді вільні шпильки будуть зменшені.
Завантажену нами РК-бібліотеку від Adafruit можна використовувати для всіх типів характерних РК-дисплеїв. Тут у нашому проекті ми використовуємо РК-дисплей 16 * 2, тому ми згадуємо кількість рядків і стовпців до змінної, як показано нижче.
lcd_columns = 16 # для 16 * 2 РК-дисплея lcd_rows = 2 # для 16 * 2 РК-дисплея
Тепер, коли ми оголосили РК-шпильки та кількість рядків і стовпців для РК-дисплея, ми можемо ініціалізувати РК-дисплей, використовуючи наступний рядок, який надсилає всю необхідну інформацію до бібліотеки.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Надіслати всі деталі контактів у бібліотеку
Для запуску програми ми відображаємо невелике вступне повідомлення за допомогою функції lcd.message (), а потім даємо затримку на 2 секунди, щоб зробити повідомлення читабельним. Для друку на 2- му рядку можна використовувати команду \ n, як показано нижче
lcd .message ('DHT11 with Pi \ n -CircuitDigest') # Дайте вступне повідомлення time.sleep (2) # зачекайте 2 секунди
І, нарешті, всередині нашого в той час циклу ми повинні зчитувати значення температури і вологості від датчика і відображати його на екрані дисплея на кожні 2 секунди. Повна програма всередині циклу while показана нижче
в той час як 1: # нескінченна петля
вологість, температура = Adafruit_DHT.read_retry (ім'я датчика, датчик_шпильки) # прочитати з датчика та зберегти відповідні значення у варіації температури та вологості
lcd.clear () # Очистити рідкокристалічний екран lcd.message ('Temp =%.1f C'% temperature) # Відобразити значення температури lcd.message ('\ nHum =%.1f %%'% вологості) # Дисплей значення Humidity time.sleep (2) # Зачекайте 2 секунди, а потім оновіть значення
Ми можемо легко отримати значення температури і вологості з датчика, використовуючи цей рядок нижче. Як бачите, він повертає два значення, які зберігаються у змінних показниках вологості та температури. У sensor_name і sensor_pin деталі передаються в якості параметрів; ці значення були оновлені на початку програми
вологість, температура = Adafruit_DHT.read_retry (ім'я датчика, датчик_шпильки)
Для відображення імені змінної на РК-екрані ми можемо використовувати ідентифікатори типу & d,% c і т. Д. Тут, оскільки ми відображаємо число з плаваючою комою лише з однією цифрою після десяткової коми, ми використовуємо ідентифікатор%.1f для відображення значення в змінна температура і вологість
lcd .message ('Temp =%.1f C'% temperature) lcd .message ('\ nHum =%.1f %%'% вологості)
Вимірювання вологості та температури за допомогою Raspberry Pi:
Встановіть з'єднання відповідно до принципової схеми та встановіть необхідні бібліотеки. Потім запустіть програму python, вказану в кінці цієї сторінки. На РК-дисплеї повинно відображатися вступне повідомлення, а потім відображатися поточне значення температури та вологості, як показано на малюнку нижче.
Якщо ви не виявите, що на РК-дисплеї нічого не відображається, перевірте, чи не відображається помилка у вікні оболонки python, якщо не відображається помилка, перевірте з'єднання ще раз і відрегулюйте потенціометр, щоб варіювати рівень контрастності РК-дисплея, і перевірте, чи щось екран.
Сподіваємось, ви зрозуміли проект і сподобались його будувати, якщо зіткнулися з якоюсь проблемою при виконанні цього, повідомте про це в розділі коментарів або скористайтеся форумом для отримання технічної допомоги. Я спробую з усіх сил відповісти на всі коментарі.
Ви також можете перевірити інші наші проекти за допомогою DHT11 з іншим мікроконтролером.