- Pangkalahatang-ideya ng DHT11 Sensor:
- Mga Paunang Kinakailangan:
- Pag-install ng Adafruit LCD library sa Raspberry Pi:
- Pag-install ng Adafruit DHT11 library sa Raspberry Pi:
- Diagram ng Circuit:
- Python Programming para sa sensor ng DHT11:
- Pagsukat sa Humidity at Temperatura gamit ang Raspberry Pi:
Ang Temperatura at Humidity ay ang pinaka-karaniwang mga parameter na sinusubaybayan sa anumang kapaligiran. Mayroong mga tone-toneladang sensor na mapagpipilian para sa pagsukat ng temperatura at halumigmig, ngunit ang pinaka ginagamit na isa ay ang DHT11 dahil sa disenteng saklaw ng pagsukat at kawastuhan nito. Gumagawa din ito sa isang komunikasyon sa pin at samakatuwid ay napakadaling mag-interface sa Microcontrollers o Microprocessors. Sa tutorial na ito matututunan namin kung paano i-interface ang sikat na sensor ng DHT11 sa Raspberry Pi at ipakita ang halaga ng temperatura at halumigmig sa isang 16x2 LCD screen. Ginamit na namin ito upang itayo ang IoT Raspberry Pi Weather Station.
Pangkalahatang-ideya ng DHT11 Sensor:
Maaaring sukatin ng sensor ng DHT11 ang kamag-anak na kahalumigmigan at temperatura sa mga sumusunod na pagtutukoy
Saklaw ng Temperatura: 0-50 ° C Ganap na Kawastuhan ng Temperatura: ± 2 ° C Saklaw ng Humidity: 20-90% Ganap na Katumpakan ng Humihinto ng Temperatura : ± 5%
Ang sensor ng DHT11 ay magagamit alinman sa form na module o sa form ng sensor. Sa tutorial na ito ginagamit namin ang form ng module ng sensor, ang pagkakaiba lamang sa pareho ay ang form ng module na ang sensor ay may capacitor ng pagsala at isang pull up risistor na nakakabit sa output pin ng sensor. Kaya't kung gumagamit ka lamang ng sensor tiyaking idagdag mo ang dalawang sangkap na ito. Alamin din ang pakikipag-interfaces ng DHT11 kay Arduino.
Paano gumagana ang DHT11 Sensor:
Ang sensor ng DHT11 ay may kasamang asul o puting kulay na pambalot. Sa loob ng pambalot na ito mayroon kaming dalawang mahahalagang bahagi na makakatulong sa amin na maunawaan ang kamag-anak na kahalumigmigan at temperatura. Ang unang sangkap ay isang pares ng mga electrode; ang paglaban ng elektrisidad sa pagitan ng dalawang electrode na ito ay napagpasyahan ng isang substrate na may hawak na kahalumigmigan. Kaya't ang sinusukat na paglaban ay baligtad na proporsyonal sa kamag-anak na kahalumigmigan ng kapaligiran. Mas mataas ang kamag-anak na kahalumigmigan na mas mababa ang magiging halaga ng paglaban at kabaliktaran. Tandaan din na ang Kamag-anak na kahalumigmigan ay naiiba mula sa aktwal na kahalumigmigan. Sinusukat ng kamag-anak na kahalumigmigan ang nilalaman ng tubig sa hangin na may kaugnayan sa temperatura sa hangin.
Ang iba pang mga sangkap ay isang naka-mount sa NTC Thermistor. Ang katagang NTC ay nangangahulugang Negatibong temperatura coefficient, para sa pagtaas sa temperatura ang halaga ng paglaban ay bababa
Mga Paunang Kinakailangan:
Ipinapalagay na ang iyong Raspberry Pi ay na-flash na gamit ang isang operating system at nakakonekta sa internet. Kung hindi, sundin ang Pagsisimula sa tutorial ng Raspberry Pi bago magpatuloy.
Ipinapalagay din na mayroon kang access sa iyong pi alinman sa pamamagitan ng mga windows windows o sa pamamagitan ng iba pang application kung saan maaari kang magsulat at magpatupad ng mga programang sawa at gamitin ang window ng terminal.
Pag-install ng Adafruit LCD library sa Raspberry Pi:
Ang halaga ng temperatura at halumigmig ay ipapakita sa isang 16 * 2 LCD display. Nagbibigay sa amin ang Adafruit ng isang library upang madaling mapatakbo ang LCD na ito sa 4-bit mode, kaya idagdag namin ito sa aming Raspberry Pi sa pamamagitan ng pagbubukas sa terminal window Pi at pagsunod sa mga hakbang sa ibaba.
Hakbang 1: I-install ang git sa iyong Raspberry Pi sa pamamagitan ng paggamit sa linya sa ibaba. Pinapayagan ka ng Git na i-clone ang anumang mga file ng proyekto sa Github at gamitin ito sa iyong Raspberry pi. Ang aming library ay nasa Github kaya kailangan naming mag-install ng git upang i-download ang library na iyon sa pi.
apt-get install git
Hakbang 2: Ang mga sumusunod na linya ay nagli-link sa pahina ng GitHub kung saan naroroon ang silid-aklatan isagawa lamang ang linya upang ma-clone ang file ng proyekto sa Pi direktoryo ng bahay
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Hakbang 3: Gamitin ang utos sa ibaba upang baguhin ang linya ng direktoryo, upang makapasok sa file ng proyekto na na-download lamang namin. Ang linya ng utos ay ibinibigay sa ibaba
cd Adafruit_Python_CharLCD
Hakbang 4: Sa loob ng direktoryo magkakaroon ng isang file na tinatawag na setup.py , kailangan naming i-install ito, upang mai-install ang library. Gamitin ang sumusunod na code upang mai-install ang library
sudo python setup.py install
Iyon lamang ang aklatan ay dapat na matagumpay na na-install. Ngayon din na magpatuloy sa pag-install ng library ng DHT na nagmula rin sa Adafruit.
Pag-install ng Adafruit DHT11 library sa Raspberry Pi:
Gumagana ang DHT11 Sensor sa prinsipyo ng one-wire system. Ang halaga ng temperatura at halumigmig ay nadarama ng sensor at pagkatapos ay nailipat sa pamamagitan ng output pin bilang serial data. Maaari naming basahin ang data na ito sa pamamagitan ng paggamit ng I / O pin sa isang MCU / MPU. Upang maunawaan kung paano nabasa ang mga halagang ito kailangan mong basahin sa pamamagitan ng datasheet ng sensor ng DHT11, ngunit sa ngayon upang mapanatili ang mga bagay na simple gagamitin namin ang isang silid-aklatan upang makipag-usap sa sensor ng DHT11.
Ang DHT11 library na ibinigay ng Adafruit ay maaaring magamit para sa DHT11, DHT22 at iba pang isang sensor ng temperatura ng kawad din. Ang pamamaraan upang mai-install ang DHT11 library ay katulad din sa sinusundan para sa pag-install ng LCD library. Ang tanging linya na magbabago ay ang link ng pahina ng GitHub kung saan nai-save ang library ng DHT.
Ipasok isa-isa ang apat na linya ng utos sa terminal upang mai - install ang DHT library
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Kapag tapos na ito magkakaroon ka ng parehong mga aklatan na matagumpay na na-install sa aming Raspberry Pi. Ngayon ay maaari kaming magpatuloy sa koneksyon sa hardware.
Diagram ng Circuit:
Ang kumpletong circuit diagram na Interfacing DH11 na may Raspberry pi ay ibinibigay sa ibaba, itinayo ito gamit ang Fritzing. Sundin ang mga koneksyon at gawin ang circuit
Parehong gumagana ang sensor ng LCD at DHT11 na may supply na + 5V kaya ginagamit namin ang mga 5V na pin sa Raspberry Pi upang mapagana ang pareho. Ang isang pull up risistor ng halagang 1k ay ginagamit sa output pin ng sensor ng DHT11, kung gumagamit ka ng isang module maaari mong maiwasan ang risistor na ito.
Ang isang pampaligo na palayok na 10k ay idinagdag sa pin ng Vee ng LCD upang makontrol ang antas ng kaibahan ng LCD. Maliban dito ang lahat ng mga koneksyon ay medyo tuwid na pasulong. Ngunit gumawa ng isang tala kung aling mga GPIO pin ang iyong ginagamit upang ikonekta ang mga pin dahil kakailanganin namin sa aming programa. Dapat payagan ka ng tsart sa ibaba na malaman ang mga numero ng GPIO pin.
Gamitin ang tsart at gawin ang iyong mga koneksyon alinsunod sa diagram ng circuit. Gumamit ako ng isang breadboard at jumper wires upang makakonekta. Dahil ginamit ko ang module na DHT11 ay direkta kong na-wire ito sa Raspberry Pi. Ganito ang hitsura ng aking hardware sa ibaba
Python Programming para sa sensor ng DHT11:
Kailangan naming magsulat ng isang programa upang basahin ang halaga ng temperatura at halumigmig mula sa sensor ng DHT11 at pagkatapos ay ipakita ang pareho sa LCD. Dahil nag-download kami ng mga aklatan para sa parehong sensor ng LCD at DHT11 ang code ay dapat na medyo tuwid pasulong. Ang kumpletong programa ng sawa ay matatagpuan sa dulo ng pahinang ito, ngunit maaari mong basahin nang higit pa upang maunawaan kung paano gumagana ang programa.
Kailangan nating i- import ang LCD library at DHT11 library sa aming programa upang magamit ang mga pagpapaandar na nauugnay dito. Dahil na-download at na-install na namin ang mga ito sa aming Pi maaari naming simpleng gamitin ang mga sumusunod na linya upang mai-import ang mga ito. Ina- import din namin ang time library upang magamit ang pagpapaandar na pagpapaandar.
oras ng pag-import # oras ng pag-import para sa paglikha ng pagkaantala sa pag- import ng Adafruit_CharLCD bilang LCD # I- import ang LCD library na pag- import ng Adafruit_DHT # I-import ang DHT Library para sa sensor
Susunod, kailangan naming tukuyin kung aling mga pin ang konektado sa sensor at anong uri ng sensor ng temperatura ang ginagamit. Ang variable sensor_name ay nakatalaga sa Adafruit_DHT.DHT11 dahil ginagamit namin ang sensor na DHT11 dito. Ang output pin ng sensor ay konektado sa GPIO 17 ng Raspberry Pi at samakatuwid ay nagtatalaga kami ng 17 sa variable ng sensor_pin tulad ng ipinakita sa ibaba.
sensor_name = Adafruit_DHT.DHT11 #nagagamit namin ang DHT11 sensor sensor_pin = 17 #Ang sensor ay konektado sa GPIO17 sa Pi
Katulad nito, kailangan din nating tukuyin kung aling mga GPIO ang pin na konektado sa LCD. Narito ginagamit namin ang LCD sa 4-bit mode kaya't magkakaroon kami ng apat na mga data pin at dalawang control pin upang kumonekta sa mga GPIO pin ng pi. Gayundin, maaari mong ikonekta ang backlight pin sa isang GPIO pin kung nais naming kontrolin ang backlight din. Ngunit sa ngayon hindi ko ginagamit iyon kaya't nakatalaga ako ng 0 dito.
lcd_rs = 7 #RS ng LCD ay konektado sa GPIO 7 sa PI lcd_en = 8 #EN ng LCD ay konektado sa GPIO 8 sa PI lcd_d4 = 25 # D4 ng LCD ay konektado sa GPIO 25 sa PI lcd_d5 = 24 # D5 ng LCD ay konektado sa GPIO 24 sa PI lcd_d6 = 23 # D6 ng LCD ay konektado sa GPIO 23 sa PI lcd_d7 = 18 # D7 ng LCD ay konektado sa GPIO 18 sa PI lcd_backlight = 0 #LED ay hindi nakakonekta kaya nagtatalaga kami sa 0
Maaari mo ring ikonekta ang LCD sa 8-bit mode sa Raspberry pi ngunit pagkatapos ay mabawasan ang mga libreng pin.
Ang LCD library mula sa Adafruit na na-download namin ay maaaring magamit para sa lahat ng mga uri ng katangian ng LCD display. Dito sa aming proyekto ay gumagamit kami ng isang 16 * 2 LCD display kaya binabanggit namin ang bilang ng mga Rows at Column sa isang variable tulad ng ipinakita sa ibaba.
lcd_columns = 16 #for 16 * 2 LCD lcd_rows = 2 #para sa 16 * 2 LCD
Ngayon, na idineklara namin ang mga LCD pin at ang bilang ng mga Rows at Columns para sa LCD maaari nating gawing una ang LCD display sa pamamagitan ng paggamit ng sumusunod na linya na nagpapadala ng lahat ng kinakailangang impormasyon sa silid-aklatan.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Ipadala ang lahat ng mga detalye ng pin sa library
Upang simulan ang programa, nagpapakita kami ng isang maliit na mensahe ng intro gamit ang pagpapaandar ng lcd.message () at pagkatapos ay magbigay ng isang pagkaantala ng 2 segundo upang mabasa ang mensahe. Para sa pag-print sa linya ng 2 nd ang utos \ n ay maaaring magamit tulad ng ipinakita sa ibaba
lcd .message ('DHT11 with Pi \ n -CircuitDigest') #Give a intro message time. sleep (2) # wait for 2 secs
Sa wakas, sa loob ng aming habang loop dapat nating basahin ang halaga ng temperatura at halumigmig mula sa sensor at ipakita ito sa LCD screen para sa bawat 2 segundo. Ang kumpletong programa sa loob ng habang loop ay ipinapakita sa ibaba
habang 1: #Infinite Loop
halumigmig, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #read mula sa sensor at i-save ang kani-kanilang mga halaga sa temperatura at halumigmig na varibale
lcd.clear () #Clear the LCD screen lcd.message ('Temp =%.1f C'% temperatura) # Ipakita ang halaga ng temperatura lcd.message ('\ nHum =%.1f %%'% halumigmig) #Display ang halaga ng oras ng Humidity.tulog (2) # Maghintay para sa 2 sec pagkatapos ay i-update ang mga halaga
Madali naming makukuha ang halaga ng temperatura at halumigmig mula sa sensor gamit ang solong linya sa ibaba. Tulad ng nakikita mong ibabalik ang dalawang halaga na nakaimbak sa variable na halumigmig at temperatura. Ang mga detalye ng sensor_name at sensor_pin ay ipinapasa bilang mga parameter; ang mga halagang ito ay na-update sa simula ng programa
halumigmig, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
Upang maipakita ang isang variable na pangalan sa screen ng LCD maaari naming gamitin ang mga identifier tulad ng & d,% c atbp Dito dahil nagpapakita kami ng isang lumulutang point number na may isang digit lamang pagkatapos ng decimal point na ginagamit namin ang identifier%.1f para sa pagpapakita ng halaga sa ang variable na temperatura at halumigmig
lcd .message ('Temp =%.1f C'% temperatura) lcd .message ('\ nHum =%.1f %%'% halumigmig)
Pagsukat sa Humidity at Temperatura gamit ang Raspberry Pi:
Gawin ang mga koneksyon alinsunod sa diagram ng circuit at i-install ang kinakailangang mga aklatan. Pagkatapos ay ilunsad ang programang sawa na ibinigay sa dulo ng pahinang ito. Dapat ipakita ng iyong LCD ang isang intro message at pagkatapos ay ipakita ang kasalukuyang temperatura at halagang halumigmig tulad ng ipinakita sa imahe sa ibaba.
Kung wala kang makitang ipinapakita sa LCD, suriin kung ang window ng python shell ay nagpapakita ng anumang erros, kung walang error na ipinakita pagkatapos suriin ang iyong mga koneksyon nang higit pa at ayusin ang potensyomiter upang maiiba ang antas ng kaibahan ng LCD at suriin kung may nakuha ka. ang screen.
Inaasahan kong naintindihan mo ang proyekto at nasiyahan sa pagbuo nito, kung naharap mo ang anumang problema sa pagwawakas na ito iulat ito sa seksyon ng komento o gamitin ang forum para sa tulong na panteknikal. Susubukan ko ang aking makakaya upang tumugon sa lahat ng mga puna.
Maaari mo ring suriin ang aming iba pang mga proyekto gamit ang DHT11 sa iba pang microcontroller.