- Prezentare generală a senzorului DHT11:
- Precondiții:
- Instalarea bibliotecii LCD Adafruit pe Raspberry Pi:
- Instalarea bibliotecii Adafruit DHT11 pe Raspberry Pi:
- Diagrama circuitului:
- Programare Python pentru senzorul DHT11:
- Măsurarea umidității și temperaturii folosind Raspberry Pi:
Temperatura și umiditatea sunt cei mai comuni parametri care sunt monitorizați în orice mediu. Există o mulțime de senzori dintre care puteți alege pentru măsurarea temperaturii și umidității, dar cel mai utilizat este DHT11 datorită domeniului și preciziei sale de măsurare decente. De asemenea, funcționează cu o comunicare cu un singur pin și, prin urmare, este foarte ușor de interfațat cu microcontrolere sau microprocesoare. În acest tutorial vom învăța cum să interfațăm popularul senzor DHT11 cu Raspberry Pi și să afișăm valoarea temperaturii și umidității pe un ecran LCD de 16x2. L-am folosit deja pentru a construi stația meteo IoT Raspberry Pi.
Prezentare generală a senzorului DHT11:
Senzorul DHT11 poate măsura umiditatea relativă și temperatura cu următoarele specificații
Gama de temperatură: 0-50 ° C Precizia temperaturii: ± 2 ° C Gama de umiditate: 20-90% HR Precizia umidității: ± 5%
Senzorul DHT11 este disponibil fie sub formă de modul, fie sub formă de senzor. În acest tutorial folosim forma de modul a senzorului, singura diferență dintre ambele este că în forma de modul senzorul are un condensator de filtrare și un rezistor de tracțiune atașat pinului de ieșire al senzorului. Deci, dacă utilizați senzorul singur, asigurați-vă că adăugați aceste două componente. Aflați și interfața DHT11 cu Arduino.
Cum funcționează senzorul DHT11:
Senzorul DHT11 vine cu o carcasă albastră sau albă. În interiorul acestei carcase avem două componente importante care ne ajută să simțim umiditatea relativă și temperatura. Prima componentă este o pereche de electrozi; rezistența electrică dintre acești doi electrozi este decisă de un substrat de reținere a umezelii. Deci rezistența măsurată este invers proporțională cu umiditatea relativă a mediului. Cu cât este mai mare umiditatea relativă mai mică va fi valoarea rezistenței și invers. De asemenea, rețineți că umiditatea relativă este diferită de umiditatea reală. Umiditatea relativă măsoară conținutul de apă din aer în raport cu temperatura din aer.
Cealaltă componentă este un termistor NTC montat la suprafață. Termenul NTC înseamnă coeficient de temperatură negativ, pentru creșterea temperaturii valoarea rezistenței va scădea
Precondiții:
Se presupune că Raspberry Pi este deja intermitent cu un sistem de operare și se poate conecta la internet. Dacă nu, urmați tutorialul Noțiuni introductive despre Raspberry Pi înainte de a continua.
Se presupune, de asemenea, că aveți acces la pi-ul dvs. fie prin ferestrele terminalului, fie prin alte aplicații prin care puteți scrie și executa programe python și utiliza fereastra terminalului.
Instalarea bibliotecii LCD Adafruit pe Raspberry Pi:
Valoarea temperaturii și umidității va fi afișată pe un ecran LCD de 16 * 2. Adafruit ne oferă o bibliotecă pentru a opera cu ușurință acest LCD în modul pe 4 biți, așa că permiteți-ne să îl adăugăm la Raspberry Pi deschizând fereastra terminalului Pi și urmând pașii de mai jos.
Pasul 1: Instalați git pe Raspberry Pi utilizând linia de mai jos. Git vă permite să clonați orice fișiere de proiect de pe Github și să le utilizați pe Raspberry pi. Biblioteca noastră este pe Github, deci trebuie să instalăm git pentru a descărca acea bibliotecă în pi.
apt-get install git
Pasul 2: Următoarea linie se leagă de pagina GitHub în care biblioteca este prezentă, pur și simplu executați linia pentru a clona fișierul de proiect în directorul principal Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Pasul 3: Utilizați comanda de mai jos pentru a schimba linia de director, pentru a intra în fișierul de proiect pe care tocmai l-am descărcat. Linia de comandă este dată mai jos
cd Adafruit_Python_CharLCD
Pasul 4: În interiorul directorului va exista un fișier numit setup.py , trebuie să-l instalăm, pentru a instala biblioteca. Utilizați următorul cod pentru a instala biblioteca
sudo python setup.py instalare
Aceasta este biblioteca ar fi trebuit să fie instalată cu succes. Acum, în mod similar, să continuăm cu instalarea bibliotecii DHT, care este, de asemenea, de la Adafruit.
Instalarea bibliotecii Adafruit DHT11 pe Raspberry Pi:
Senzorul DHT11 funcționează cu principiul sistemului cu un singur fir. Valoarea temperaturii și umidității este detectată de senzor și apoi transmisă prin pinul de ieșire ca date seriale. Apoi putem citi aceste date folosind pinul I / O pe un MCU / MPU. Pentru a înțelege cum sunt citite aceste valori, ar trebui să citiți fișa tehnică a senzorului DHT11, dar pentru a simplifica lucrurile, vom folosi o bibliotecă pentru a vorbi cu senzorul DHT11.
Biblioteca DHT11 oferit de Adafruit pot fi utilizate pentru DHT11, DHT22 și alți senzori de temperatură un singur fir, de asemenea. Procedura de instalare a bibliotecii DHT11 este, de asemenea, similară cu cea urmată pentru instalarea bibliotecii LCD. Singura linie care s-ar schimba este linkul paginii GitHub pe care este salvată biblioteca DHT.
Introduceți cele patru linii de comandă una câte una pe terminal pentru a instala biblioteca DHT
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Odată ce ați terminat, veți avea ambele biblioteci instalate cu succes pe Raspberry Pi. Acum putem continua cu conexiunea hardware.
Diagrama circuitului:
Schema completă de circuite Interfațarea DH11 cu Raspberry pi este prezentată mai jos, a fost construită folosind Fritzing. Urmați conexiunile și faceți circuitul
Atât senzorul LCD, cât și senzorul DHT11 funcționează cu o sursă de + 5V, astfel încât să folosim pinii de 5V de pe Raspberry Pi pentru a le alimenta pe amândoi. Pe rezerva de ieșire a senzorului DHT11 se folosește un rezistor de tracțiune de valoare 1k, dacă utilizați un modul puteți evita acest rezistor.
Un pot de tundere de 10k este adăugat la pinul Vee al LCD-ului pentru a controla nivelul de contrast al LCD-ului. În afară de asta, toate conexiunile sunt destul de simple. Dar notați care sunt pinii GPIO pe care îi utilizați pentru a conecta pinii, deoarece vom avea nevoie în programul nostru. Graficul de mai jos ar trebui să vă permită să aflați numerele PIN GPIO.
Utilizați graficul și faceți conexiunile conform schemei de circuit. Am folosit o panou și fire jumper pentru a-mi face conexiunile. De când am folosit modulul DHT11, l-am conectat direct la Raspberry Pi. Hardware-ul meu arăta așa mai jos
Programare Python pentru senzorul DHT11:
Trebuie să scriem un program pentru a citi valoarea temperaturii și umidității din senzorul DHT11 și apoi să afișăm același lucru pe LCD. Deoarece am descărcat biblioteci atât pentru senzorul LCD cât și pentru senzorul DHT11, codul ar trebui să fie destul de simplu. Programul complet Python poate fi găsit la sfârșitul acestei pagini, dar puteți citi mai departe pentru a înțelege cum funcționează programul.
Trebuie să importăm biblioteca LCD și biblioteca DHT11 în programul nostru pentru a utiliza funcțiile legate de aceasta. Deoarece le-am descărcat și instalat deja pe Pi, putem folosi pur și simplu următoarele linii pentru a le importa. De asemenea, importăm biblioteca de timp pentru a utiliza funcția de întârziere.
timp de import # timp de import pentru crearea întârzierii import Adafruit_CharLCD ca LCD #Importare bibliotecă LCD import Adafruit_DHT #Importare bibliotecă DHT pentru senzor
Apoi, trebuie să specificăm la ce pini este conectat senzorul și la ce tip de senzor de temperatură este utilizat. Variabila senzor_nume este atribuită Adafruit_DHT.DHT11 deoarece utilizăm senzorul DHT11 aici. Pinul de ieșire al senzorului este conectat la GPIO 17 al Raspberry Pi și, prin urmare, atribuim 17 variabilei sensor_pin așa cum se arată mai jos.
sensor_name = Adafruit_DHT.DHT11 #utilizăm senzorul DHT11 sensor_pin = 17 # Senzorul este conectat la GPIO17 pe Pi
În mod similar, trebuie să definim și la ce pini GPIO este conectat LCD-ul. Aici folosim LCD-ul în modul 4 biți, prin urmare vom avea patru pini de date și doi pini de control pentru a ne conecta la pinii GPIO ai pi. De asemenea, puteți conecta pinul de lumină de fundal la un pin GPIO dacă dorim să controlăm și lumina de fundal. Dar deocamdată nu folosesc asta, așa că i-am atribuit 0.
lcd_rs = 7 #RS LCD este conectat la GPIO 7 pe PI lcd_en = 8 #EN LCD este conectat la GPIO 8 pe PI lcd_d4 = 25 # D4 LCD este conectat la GPIO 25 pe PI lcd_d5 = 24 # D5 LCD este conectat la GPIO 24 pe PI lcd_d6 = 23 # D6 de LCD este conectat la GPIO 23 pe PI lcd_d7 = 18 # D7 de LCD este conectat la GPIO 18 pe PI lcd_backlight = 0 #LED nu este conectat așa că atribuim la 0
De asemenea, puteți conecta ecranul LCD în modul 8 biți cu Raspberry pi, dar pinii liberi vor fi reduși.
Biblioteca LCD de la Adafruit pe care am descărcat-o poate fi utilizată pentru toate tipurile de afișaje LCD caracteristice. Aici, în proiectul nostru, folosim un afișaj LCD de 16 * 2, deci menționăm numărul de rânduri și coloane la o variabilă așa cum se arată mai jos.
lcd_columns = 16 #pentru 16 * 2 LCD lcd_rows = 2 #pentru 16 * 2 LCD
Acum, după ce am declarat pinii LCD și numărul de rânduri și coloane pentru LCD, putem inițializa afișajul LCD utilizând următoarea linie care trimite toate informațiile necesare bibliotecii.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Trimiteți toate detaliile pinului în bibliotecă
Pentru a porni programul, afișăm un mic mesaj introductiv folosind funcția lcd.message () și apoi acordăm o întârziere de 2 secunde pentru ca mesajul să poată fi citit. Pentru imprimarea pe a doua linie, comanda \ n poate fi utilizată așa cum se arată mai jos
lcd .message ('DHT11 cu Pi \ n -CircuitDigest') #Dă un mesaj introductiv time.sleep (2) # așteptați 2 secunde
În cele din urmă, în interiorul buclei noastre timp ar trebui să citim valoarea senzorului de temperatură și umiditate și să o afișăm pe ecranul LCD la fiecare 2 secunde. Programul complet din bucla while este prezentat mai jos
în timp ce 1: # Buclă infinită
umiditate, temperatură = Adafruit_DHT.read_retry (senzor_nume, senzor_pin) #citiți din senzor și salvați valorile respective în temperatură și umiditate varibale
lcd.clear () #Clear the LCD screen lcd.message ('Temp =%.1f C'% temperature) # Afișează valoarea temperaturii lcd.message ('\ nHum =%.1f %%'% umiditate) #Display valoarea Umidității timp.sleep (2) # Așteptați 2 secunde, apoi actualizați valorile
Putem obține cu ușurință valoarea temperaturii și umidității de la senzor folosind această singură linie de mai jos. După cum puteți vedea, returnează două valori care sunt stocate în umiditatea și temperatura variabile. De sensor_name și sensor_pin detaliile sunt transmise ca parametri; aceste valori au fost actualizate la începutul programului
umiditate, temperatură = Adafruit_DHT.read_retry (senzor_nume, senzor_pin)
Pentru a afișa un nume de variabilă pe ecranul LCD putem folosi identificatorii ca și d,% c etc Aici din moment ce afișați un număr în virgulă mobilă cu o singură cifră după virgulă vom folosi identificatorul%.1f pentru afișarea valorii în temperatura și umiditatea variabile
lcd .message ('Temp =%.1f C'% temperature) lcd .message ('\ nHum =%.1f %%'% umiditate)
Măsurarea umidității și temperaturii folosind Raspberry Pi:
Faceți conexiunile conform schemei de circuit și instalați bibliotecile necesare. Apoi lansați programul python dat la sfârșitul acestei pagini. LCD-ul dvs. ar trebui să afișeze un mesaj introductiv și apoi să afișeze valoarea curentă a temperaturii și umidității, așa cum se arată în imaginea de mai jos.
Dacă nu găsiți nimic afișat pe ecranul LCD, verificați dacă fereastra shell-ului Python afișează erori, dacă nu este afișată nicio eroare, verificați din nou conexiunile și reglați potențiometrul pentru a varia nivelul de contrast al LCD-ului și verificați dacă aveți Monitorul.
Sper că ați înțeles proiectul și v-a plăcut să îl construiți, dacă ați întâmpinat vreo problemă în realizarea acestui lucru, raportați-l în secțiunea de comentarii sau folosiți forumul pentru ajutor tehnic. Voi încerca tot posibilul să răspund la toate comentariile.
De asemenea, puteți verifica celelalte proiecte folosind DHT11 cu alt microcontroler.