- Visió general del sensor DHT11:
- Prerequisits:
- Instal·lació de la biblioteca LCD Adafruit a Raspberry Pi:
- Instal·lació de la biblioteca Adafruit DHT11 a Raspberry Pi:
- Esquema de connexions:
- Programació Python per al sensor DHT11:
- Mesurament de la humitat i la temperatura amb Raspberry Pi:
La temperatura i la humitat són els paràmetres més habituals que es controlen en qualsevol entorn. Hi ha un munt de sensors entre els quals es pot triar per mesurar la temperatura i la humitat, però el més utilitzat és el DHT11 per la seva precisió i abast de mesura. També funciona amb comunicació d'un pin i, per tant, és molt fàcil d'interfície amb microcontroladors o microprocessadors. En aquest tutorial aprendrem a relacionar el popular sensor DHT11 amb Raspberry Pi i a mostrar el valor de la temperatura i la humitat en una pantalla LCD de 16x2. Ja l’hem utilitzat per construir l’estació meteorològica Raspberry Pi de l’IoT.
Visió general del sensor DHT11:
El sensor DHT11 pot mesurar la humitat relativa i la temperatura amb les següents especificacions
Rang de temperatura: 0-50 ° C Precisió de la temperatura: ± 2 ° C Rang d’humitat: 20-90% HR Precisió de la humitat: ± 5%

El sensor DHT11 està disponible en forma de mòdul o en forma de sensor. En aquest tutorial estem utilitzant la forma de mòdul del sensor, l'única diferència entre tots dos és que, en forma de mòdul, el sensor té un condensador de filtratge i una resistència de tracció connectada al pin de sortida del sensor. Per tant, si utilitzeu el sensor sol, assegureu-vos d’afegir aquests dos components. Apreneu també la interfície DHT11 amb Arduino.
Com funciona el sensor DHT11:
El sensor DHT11 inclou una carcassa de color blau o blanc. Dins d’aquesta carcassa tenim dos components importants que ens ajuden a percebre la humitat relativa i la temperatura. El primer component és un parell d’elèctrodes; la resistència elèctrica entre aquests dos elèctrodes la decideix un substrat que reté la humitat. Per tant, la resistència mesurada és inversament proporcional a la humitat relativa de l’ambient. Com més alta sigui la humitat relativa més baixa serà el valor de la resistència i viceversa. Tingueu en compte també que la humitat relativa és diferent de la humitat real. La humitat relativa mesura el contingut d’aigua de l’aire en relació amb la temperatura de l’aire.
L’altre component és un termistor NTC muntat a la superfície. El terme NTC significa coeficient de temperatura negatiu, per augmentar la temperatura el valor de la resistència disminuirà
Prerequisits:
Se suposa que el vostre Raspberry Pi ja està llampat amb un sistema operatiu i es pot connectar a Internet. Si no, seguiu el tutorial Introducció a Raspberry Pi abans de continuar.
També se suposa que teniu accés al vostre pi a través de les finestres del terminal o mitjançant una altra aplicació mitjançant la qual podeu escriure i executar programes Python i utilitzar la finestra del terminal.
Instal·lació de la biblioteca LCD Adafruit a Raspberry Pi:
El valor de la temperatura i la humitat es mostrarà en una pantalla LCD de 16 * 2. Adafruit ens proporciona una biblioteca per operar fàcilment aquesta pantalla LCD en mode de 4 bits, així que anem a afegir-la al nostre Raspberry Pi obrint la finestra del terminal Pi i seguint els passos següents.
Pas 1: instal·leu git al vostre Raspberry Pi mitjançant la línia següent. Git us permet clonar qualsevol fitxer de projecte a Github i utilitzar-lo al vostre Raspberry pi. La nostra biblioteca es troba a Github, de manera que hem d’instal·lar git per descarregar aquesta biblioteca a pi.
apt-get install git
Pas 2: la línia següent enllaça a la pàgina de GitHub on hi ha la biblioteca, simplement executeu la línia per clonar el fitxer de projecte al directori inicial de Pi
git clonar git: //github.com/adafruit/Adafruit_Python_CharLCD
Pas 3: utilitzeu l'ordre següent per canviar la línia de directori i entrar al fitxer de projecte que acabem de descarregar. A continuació es mostra la línia d’ordres
cd Adafruit_Python_CharLCD
Pas 4: dins del directori hi haurà un fitxer anomenat setup.py , l’hem d’instal·lar, per instal·lar la biblioteca. Utilitzeu el codi següent per instal·lar la biblioteca
sudo python setup.py install
És a dir, la biblioteca s'hauria d'haver instal·lat correctament. Ara, de manera similar, procedim a instal·lar la biblioteca DHT, que també prové d'Adafruit.
Instal·lació de la biblioteca Adafruit DHT11 a Raspberry Pi:
El sensor DHT11 funciona amb el principi d’un sistema d’un fil. El sensor detecta el valor de la temperatura i la humitat i es transmet a través del pin de sortida com a dades de sèrie. A continuació, podem llegir aquestes dades utilitzant el pin d'E / S en una MCU / MPU. Per entendre com es llegeixen aquests valors, hauríeu de llegir el full de dades del sensor DHT11, però per ara per simplificar les coses, utilitzarem una biblioteca per parlar amb el sensor DHT11.
La biblioteca DHT11 proporcionada per Adafruit també es pot utilitzar per a sensors DHT11, DHT22 i altres sensors de temperatura d’un fil. El procediment per instal·lar la biblioteca DHT11 també és similar al seguit per instal·lar la biblioteca LCD. L'única línia que canviaria és l'enllaç de la pàgina de GitHub on es guarda la biblioteca DHT.
Introduïu les quatre línies d'ordres una per una al terminal per instal·lar la biblioteca DHT
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Un cop fet això, tindreu les dues biblioteques instal·lades correctament al nostre Raspberry Pi. Ara podem continuar amb la connexió de maquinari.
Esquema de connexions:
A continuació es mostra el diagrama complet del circuit Interfacing DH11 amb Raspberry pi, que es va construir amb Fritzing. Seguiu les connexions i feu el circuit

Tant el sensor LCD com el DHT11 funcionen amb subministrament de + 5V, de manera que fem servir els pins de 5V del Raspberry Pi per alimentar tots dos. Al pin de sortida del sensor DHT11 s’utilitza una resistència pull up de valor 1k, si utilitzeu un mòdul podeu evitar aquesta resistència.
S'afegeix un pot de tall de 10 k al pin Vee de la pantalla LCD per controlar el nivell de contrast de la pantalla LCD. A part d'això, totes les connexions són bastant senzilles. Però anoteu els pins GPIO que esteu utilitzant per connectar-los, ja que necessitarem al nostre programa. El gràfic següent us permetrà esbrinar els números de pin GPIO.

Utilitzeu el gràfic i feu les vostres connexions segons el diagrama del circuit. Vaig utilitzar una placa de connexió i cables de pont per fer les meves connexions. Com que vaig utilitzar el mòdul DHT11, el vaig connectar directament a Raspberry Pi. El meu maquinari semblava a continuació

Programació Python per al sensor DHT11:
Hem d’escriure un programa per llegir el valor de la temperatura i la humitat del sensor DHT11 i després mostrar-lo a la pantalla LCD. Com que hem descarregat biblioteques per al sensor LCD i DHT11, el codi hauria de ser pràcticament senzill. El programa complet de Python es troba al final d’aquesta pàgina, però podeu llegir-ne més per entendre com funciona el programa.
Hem d’ importar la biblioteca LCD i la biblioteca DHT11 al nostre programa per utilitzar les funcions que s’hi relacionen. Com que ja els hem descarregat i instal·lat al nostre Pi, podem utilitzar les línies següents per importar-los. També importem la biblioteca de temps per utilitzar la funció de retard.
temps import temps d'importació per a la creació de retard Adafruit_CharLCD importació com LCD import biblioteca LCD importació import Adafruit_DHT Biblioteca DHT per al sensor
A continuació, hem d’ especificar a quins pins està connectat el sensor i a quin tipus de sensor de temperatura s’utilitza. La variable sensor_name s’assigna a Adafruit_DHT.DHT11 ja que aquí estem utilitzant el sensor DHT11. El pin de sortida del sensor està connectat a GPIO 17 del Raspberry Pi i, per tant, assignem 17 a la variable sensor_pin com es mostra a continuació.
sensor_name = Adafruit_DHT.DHT11 # estem utilitzant el sensor DHT11 sensor_pin = 17 # El sensor està connectat a GPIO17 a Pi
De la mateixa manera, també hem de definir a quins pins GPIO està connectat el LCD. Aquí estem utilitzant la pantalla LCD en mode de 4 bits, per tant, tindrem quatre pins de dades i dos pins de control per connectar-nos als pins GPIO del pi. A més, podeu connectar el pin de llum de fons a un pin GPIO si volem controlar també la llum de fons. Però ara per ara no ho faig servir, així que hi he assignat 0.
lcd_rs = 7 #RS de LCD està connectat a GPIO 7 a PI lcd_en = 8 #EN de LCD està connectat a GPIO 8 a PI lcd_d4 = 25 # D4 de LCD està connectat a GPIO 25 a PI lcd_d5 = 24 # D5 de LCD és connectat a GPIO 24 a PI lcd_d6 = 23 # D6 de LCD està connectat a GPIO 23 a PI lcd_d7 = 18 # D7 de LCD està connectat a GPIO 18 a PI lcd_backlight = 0 #LED no està connectat de manera que assignem a 0
També podeu connectar LCD en mode de 8 bits amb Raspberry pi, però es reduiran els pins lliures.
La biblioteca LCD d’Adafruit que hem descarregat es pot utilitzar per a tot tipus de pantalles LCD característiques. Aquí, en el nostre projecte, fem servir una pantalla LCD de 16 * 2, de manera que mencionem el nombre de files i columnes a una variable tal com es mostra a continuació.
lcd_columns = 16 #per 16 * 2 LCD lcd_rows = 2 #per 16 * 2 LCD
Ara, ja que hem declarat els pins LCD i el nombre de files i columnes per al LCD, podem inicialitzar la pantalla LCD mitjançant la línia següent que envia tota la informació necessària a la biblioteca.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) #Envia tots els detalls dels pins a la biblioteca
Per iniciar el programa, mostrem un petit missatge d'introducció mitjançant la funció lcd.message () i donem un retard de 2 segons perquè el missatge sigui llegible. Per imprimir a la segona línia, es pot utilitzar l'ordre \ n tal com es mostra a continuació
lcd .message ('DHT11 amb Pi \ n -CircuitDigest') #Doneu un missatge d' introducció time.sleep (2) #wait durant 2 segons
Finalment, dins del nostre temps de bucle hem de llegir el valor de la temperatura i la humitat de l'sensor i el mostrarà a la pantalla LCD per cada 2 segons. A continuació es mostra el programa complet dins del bucle while
mentre que 1: #Infinite Loop
humitat, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #read del sensor i deseu els valors respectius en temperatura i humitat varibale
lcd.clear () #Clear la pantalla LCD lcd.message ('Temp =%.1f C'% temperature) # Mostra el valor de la temperatura lcd.message ('\ nHum =%.1f %%'% humity) #Display el valor de Humidity time.sleep (2) # Espereu 2 segons i actualitzeu els valors
Podem obtenir fàcilment el valor de la temperatura i la humitat del sensor mitjançant aquesta única línia següent. Com podeu veure, retorna dos valors que s’emmagatzemen a la humitat i la temperatura variables. Els detalls sensor_name i sensor_pin es passen com a paràmetres; aquests valors es van actualitzar al començament del programa
humitat, temperatura = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
Per mostrar un nom de variable a la pantalla LCD podem utilitzar els identificadors com & d,% c, etc. Aquí, ja que mostrem un número de coma flotant amb només un dígit després del punt decimal, utilitzem l'identificador%.1f per mostrar el valor a la temperatura i la humitat variables
lcd .message ('Temp =%.1f C'% temperature) lcd .message ('\ nHum =%.1f %%'% humity)
Mesurament de la humitat i la temperatura amb Raspberry Pi:
Feu les connexions segons el diagrama del circuit i instal·leu les biblioteques necessàries. A continuació, inicieu el programa python que es dóna al final d'aquesta pàgina. El vostre LCD hauria de mostrar un missatge d'introducció i, a continuació, mostrarà el valor actual de temperatura i humitat tal com es mostra a la imatge següent.

Si no apareix res a la pantalla LCD, comproveu si la finestra de l'intèrpret d'ordres de Python mostra errors, si no es mostra cap error, comproveu les connexions una vegada més i ajusteu el potenciòmetre per variar el nivell de contrast de la pantalla LCD i comproveu si teniu alguna cosa activada la pantalla.
Espero que hàgiu entès el projecte i us hagi agradat construir-lo, si heu tingut algun problema en aconseguir-ho, informeu-lo a la secció de comentaris o utilitzeu el fòrum per obtenir ajuda tècnica. Faré tot el possible per respondre a tots els comentaris.
També podeu consultar els nostres altres projectes mitjançant DHT11 amb altres microcontroladors.
