- Преглед на сензора DHT11:
- Предварителни условия:
- Инсталиране на LCD библиотеката Adafruit на Raspberry Pi:
- Инсталиране на библиотеката Adafruit DHT11 на Raspberry Pi:
- Електрическа схема:
- Програмиране на Python за DHT11 сензор:
- Измерване на влажност и температура с помощта на Raspberry Pi:
Температурата и влажността са най-често срещаните параметри, които се наблюдават във всяка среда. Има тонове сензори, от които можете да избирате за измерване на температура и влажност, но най-използваният е DHT11 поради неговия приличен обхват на измерване и точност. Той също така работи с една пинова комуникация и следователно е много лесен за взаимодействие с микроконтролери или микропроцесори. В този урок ще научим как да свързваме популярния сензор DHT11 с Raspberry Pi и да показваме стойността на температурата и влажността на LCD екран 16x2. Вече го използвахме за изграждането на IoT Raspberry Pi Weather Station.
Преглед на сензора DHT11:
DHT11 сензорът може да измерва относителната влажност и температура със следните спецификации
Температурен диапазон: 0-50 ° C Температурна точност: ± 2 ° C Диапазон на влажност: 20-90% RH Точност на влажност: ± 5%
Сензорът DHT11 се предлага или под формата на модул, или под формата на сензор. В този урок използваме модулната форма на сензора, единствената разлика между двете е, че в модулната форма сензорът има филтриращ кондензатор и издърпващ резистор, прикрепен към изходния щифт на сензора. Така че, ако използвате само сензора, не забравяйте да добавите тези два компонента. Научете също DHT11 взаимодействие с Arduino.
Как работи сензорът DHT11:
Сензорът DHT11 се доставя със син или бял цветен корпус. Вътре в тази обвивка имаме два важни компонента, които ни помагат да усетим относителната влажност и температура. Първият компонент е чифт електроди; електрическото съпротивление между тези два електрода се определя от влагозадържащ субстрат. Така измереното съпротивление е обратно пропорционално на относителната влажност на околната среда. Колкото по-висока е относителната влажност, толкова по-ниска ще бъде стойността на съпротивлението и обратно. Също така имайте предвид, че относителната влажност се различава от действителната влажност. Относителната влажност измерва съдържанието на вода във въздуха спрямо температурата във въздуха.
Другият компонент е NTC термистор, монтиран на повърхността. Терминът NTC означава отрицателен температурен коефициент, за повишаване на температурата стойността на съпротивлението ще намалее
Предварителни условия:
Предполага се, че вашият Raspberry Pi вече е флаширан с операционна система и е в състояние да се свърже с интернет. Ако не, следвайте урока Първи стъпки с Raspberry Pi, преди да продължите.
Също така се предполага, че имате достъп до вашия pi или през терминални прозорци, или чрез друго приложение, чрез което можете да пишете и изпълнявате програми на python и да използвате терминалния прозорец.
Инсталиране на LCD библиотеката Adafruit на Raspberry Pi:
Стойността на температурата и влажността ще се покаже на 16 * 2 LCD дисплей. Adafruit ни предоставя библиотека за лесно управление на този LCD в 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 Sensor работи на принципа на едножилна система. Стойността на температурата и влажността се усеща от сензора и след това се предава през изходния щифт като серийни данни. След това можем да четем тези данни, като използваме I / O pin на MCU / MPU. За да разберете как се четат тези стойности, ще трябва да прочетете листа с данни на сензора DHT11, но засега, за да улесним нещата, ще използваме библиотека, за да говорим със сензора DHT11.
В библиотеката DHT11 предоставена от Adafruit може да се използва за DHT11, DHT22 и други температурни сензори един проводник, както и. Процедурата за инсталиране на библиотека DHT11 също е подобна на тази, следвана за инсталиране на LCD библиотека. Единственият ред, който би се променил, е връзката към страницата на GitHub, на която е запазена DHT библиотеката.
Въведете четирите командни реда един по един на терминала, за да инсталирате DHT библиотеката
git clone
cd Adafruit_Python_DHT sudo apt-get install build build-python-dev sudo python setup.py install
След като приключите, ще имате и двете библиотеки успешно инсталирани на нашата Raspberry Pi. Сега можем да продължим с хардуерната връзка.
Електрическа схема:
Пълната схема на взаимодействието на DH11 с Raspberry pi е дадена по-долу, тя е изградена с помощта на Fritzing. Следвайте връзките и направете веригата
Както LCD, така и DHT11 сензорът работят с + 5V захранване, така че ние използваме 5V щифтовете на Raspberry Pi за захранване и на двете. На изходния щифт на сензора DHT11 се използва издърпващ резистор на стойност 1k, ако използвате модул, можете да избегнете този резистор.
А подстригване пот на 10k се добавя към Vee щифт на дисплея да се контролира нивото на контраста на дисплея. Освен това всички връзки са доста прави. Но отбележете кои GPIO щифтове използвате за свързване на щифтовете, тъй като ние ще се нуждаем от нашата програма. Графиката по-долу трябва да ви позволи да разберете GPIO номерата на пиновете.
Използвайте диаграмата и направете връзките си според схемата. Използвах макет и кабелни джипове, за да направя връзките си. Тъй като използвах модул DHT11, го свързах директно към Raspberry Pi. Хардуерът ми изглеждаше така по-долу
Програмиране на Python за DHT11 сензор:
Трябва да напишем програма за отчитане на стойността на температурата и влажността от сензора DHT11 и след това да я покажем на LCD. Тъй като сме изтеглили библиотеки както за LCD, така и за DHT11 сензор, кодът трябва да е доста прав. В пълна програма питон може да се намери в края на тази страница, но можете да прочетете по-нататък, за да се разбере как работи програмата.
Трябва да импортираме LCD библиотеката и библиотеката DHT11 в нашата програма, за да използваме функциите, свързани с нея. Тъй като вече сме ги изтеглили и инсталирали на нашия Pi, можем просто да използваме следните редове, за да ги импортираме. Също така импортираме библиотеката за време, за да използваме функцията за забавяне.
Време за внос #import за създаване на забавяне Adafruit_CharLCD внос като LCD #import LCD библиотека внос Adafruit_DHT #import DHT Библиотека за датчик
След това трябва да посочим към кои щифтове е свързан сензорът и какъв тип температурен сензор се използва. Променливата sensor_name е присвоена на Adafruit_DHT.DHT11, тъй като тук използваме сензора DHT11. Изходният щифт на сензора е свързан с GPIO 17 на Raspberry Pi и по този начин ние присвояваме 17 на променливата сензор_пин, както е показано по-долу.
sensor_name = Adafruit_DHT.DHT11 # използваме сензора DHT11 sensor_pin = 17 # Сензорът е свързан към GPIO17 на Pi
По същия начин, ние също трябва да дефинираме към кои GPIO пинове е свързан LCD дисплеят. Тук използваме LCD в 4-битов режим, следователно ще имаме четири пина за данни и два контролни щифта, за да се свържем с GPIO пиновете на pi. Също така, можете да свържете щифта за подсветка към щифт GPIO, ако искаме да контролираме и подсветката. Но засега не го използвам, така че съм му задал 0.
lcd_rs = 7 #RS на LCD е свързан към GPIO 7 на PI lcd_en = 8 #EN на LCD е свързан към GPIO 8 на PI lcd_d4 = 25 # D4 на LCD е свързан към GPIO 25 на PI lcd_d5 = 24 # D5 на LCD е свързан към GPIO 24 на PI lcd_d6 = 23 # D6 на LCD е свързан към GPIO 23 на PI lcd_d7 = 18 # D7 на LCD е свързан към GPIO 18 на PI lcd_backlight = 0 #LED не е свързан, така че присвояваме на 0
Можете също да свържете LCD в 8-битов режим с Raspberry pi, но тогава безплатните щифтове ще бъдат намалени.
LCD библиотеката от Adafruit, която изтеглихме, може да се използва за всички видове характерни LCD дисплеи. Тук в нашия проект използваме 16 * 2 LCD дисплей, така че споменаваме броя на редовете и колоните до променлива, както е показано по-долу.
lcd_columns = 16 # за 16 * 2 LCD lcd_rows = 2 # за 16 * 2 LCD
Сега, след като декларирахме LCD щифтовете и броя на редовете и колоните за LCD, можем да инициализираме LCD дисплея, като използваме следния ред, който изпраща цялата необходима информация към библиотеката.
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 с Pi \ н -CircuitDigest") #Give на интро съобщение time.sleep (2) #wait за 2 секунди
И накрая, в нашия цикъл while трябва да прочетем стойността на температурата и влажността от сензора и да го показваме на LCD екрана на всеки 2 секунди. Пълната програма в цикъл while е показана по-долу
докато 1: # Безкраен цикъл
влажност, температура = Adafruit_DHT.read_retry (сензор_име, сензор_пин) # четете от сензора и запишете съответните стойности в вариация на температурата и влажността
lcd.clear () # Изчистване на LCD екрана lcd.message ('Temp =%.1f C'% temperature) # Показване на стойността на температурата lcd.message ('\ nHum =%.1f %%'% влажност) # Показване стойността на времето за влажност.sleep (2) # Изчакайте 2 секунди, след което актуализирайте стойностите
Можем лесно да получим стойността на температурата и влажността от сензора, като използваме този единствен ред по-долу. Както можете да видите, той връща две стойности, които се съхраняват в променливата влажност и температура. Подробностите за името на сензора и сензора за контакт се предават като параметри; тези стойности бяха актуализирани в началото на програмата
влажност, температура = Adafruit_DHT.read_retry (сензор_име, сензор_пин)
За да покажем име на променлива на LCD екрана, можем да използваме идентификатори като & d,% c и т.н. Тук, тъй като показваме число с плаваща запетая само с една цифра след десетичната запетая, използваме идентификатора%.1f за показване на стойността в променливата температура и влажност
lcd .message ('Temp =%.1f C'% temperature) lcd .message ('\ nHum =%.1f %%'% влажност)
Измерване на влажност и температура с помощта на Raspberry Pi:
Направете връзките според схемата и инсталирайте необходимите библиотеки. След това стартирайте програмата python, дадена в края на тази страница. Вашият LCD трябва да покаже встъпително съобщение и след това да покаже текущата стойност на температурата и влажността, както е показано на изображението по-долу.
Ако откриете, че нищо не се показва на LCD, проверете дали прозорецът на обвивката на python показва грешки, ако не се покаже грешка, проверете още веднъж връзките си и регулирайте потенциометъра, за да променяте нивото на контраста на LCD и проверете дали има нещо включено на екрана.
Надявам се, че сте разбрали проекта и сте се радвали да го изградите, ако сте се сблъскали с някакъв проблем при извършването на това, докладвайте го в раздела за коментари или използвайте форума за техническа помощ. Ще се постарая да отговоря на всички коментари.
Можете също така да проверите другите ни проекти, използвайки DHT11 с друг микроконтролер.