- Oversikt over DHT11-sensor:
- Forutsetninger:
- Installere Adafruit LCD-bibliotek på Raspberry Pi:
- Installere Adafruit DHT11-biblioteket på Raspberry Pi:
- Kretsdiagram:
- Python-programmering for DHT11-sensor:
- Måle fuktighet og temperatur ved hjelp av Raspberry Pi:
Temperatur og fuktighet er de vanligste parametrene som overvåkes i ethvert miljø. Det er mange sensorer å velge mellom for å måle temperatur og fuktighet, men den mest brukte er DHT11 på grunn av det anstendige måleområdet og nøyaktigheten. Det fungerer også med en-pin-kommunikasjon og er derfor veldig enkelt å grensesnitt med mikrokontrollere eller mikroprosessorer. I denne opplæringen skal vi lære å koble den populære DHT11-sensoren til Raspberry Pi og vise verdien av temperatur og fuktighet på en 16x2 LCD-skjerm. Vi brukte den allerede til å bygge IoT Raspberry Pi Weather Station.
Oversikt over DHT11-sensor:
DHT11-sensoren kan måle relativ fuktighet og temperatur med følgende spesifikasjoner
Temperaturområde: 0-50 ° C Temperaturnøyaktighet: ± 2 ° C Fuktighetsområde: 20-90% RF Fuktighetsnøyaktighet: ± 5%
DHT11-sensoren er tilgjengelig enten i modulform eller i sensorform. I denne opplæringen bruker vi modulformen til sensoren, den eneste forskjellen mellom begge er at sensoren i modulform har en filtreringskondensator og en pull-up motstand festet til sensorens utgangsstift. Så hvis du bruker sensoren alene, må du legge til disse to komponentene. Lær også DHT11-grensesnitt med Arduino.
Hvordan fungerer DHT11-sensoren:
DHT11-sensoren kommer med et blått eller hvitt fargeskjerm. Inne i dette hylsteret har vi to viktige komponenter som hjelper oss å føle den relative fuktigheten og temperaturen. Den første komponenten er et par elektroder; den elektriske motstanden mellom disse to elektrodene bestemmes av et fuktighetsholdende substrat. Så den målte motstanden er omvendt proporsjonal med den relative fuktigheten i miljøet. Høyere den relative fuktigheten lavere vil være motstandsverdien og omvendt. Vær også oppmerksom på at relativ fuktighet er forskjellig fra faktisk fuktighet. Relativ fuktighet måler vanninnholdet i luft i forhold til temperaturen i luften.
Den andre komponenten er en overflatemontert NTC Thermistor. Begrepet NTC står for negativ temperaturkoeffisient, for økning i temperatur vil motstandsverdien synke
Forutsetninger:
Det antas at Raspberry Pi allerede har blinket med et operativsystem og er i stand til å koble til internett. Hvis ikke, følg veiledningen Komme i gang med Raspberry Pi før du fortsetter.
Det antas også at du har tilgang til pi-en din enten gjennom terminalvinduer eller gjennom andre applikasjoner som du kan skrive og utføre python-programmer gjennom og bruke terminalvinduet.
Installere Adafruit LCD-bibliotek på Raspberry Pi:
Verdien av temperatur og fuktighet vises på en 16 * 2 LCD-skjerm. Adafruit gir oss et bibliotek for å enkelt betjene denne LCD-skjermen i 4-biters modus, så la oss legge den til vår Raspberry Pi ved å åpne terminalvinduet Pi og følge trinnene nedenfor.
Trinn 1: Installer git på Raspberry Pi ved å bruke nedenstående linje. Git lar deg klone alle prosjektfiler på Github og bruke den på Raspberry pi. Biblioteket vårt er på Github, så vi må installere git for å laste ned biblioteket til pi.
apt-get install git
Trinn 2: Følgende linjekoblinger til GitHub-siden der biblioteket er til stede, bare kjør linjen for å klone prosjektfilen i Pi-hjemmekatalogen
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Trinn 3: Bruk kommandoen nedenfor for å endre kataloglinje, for å komme inn i prosjektfilen som vi nettopp lastet ned. Kommandolinjen er gitt nedenfor
cd Adafruit_Python_CharLCD
Trinn 4: Inne i katalogen vil det være en fil som heter setup.py , vi må installere den, for å installere biblioteket. Bruk følgende kode for å installere biblioteket
sudo python setup.py install
Det er det biblioteket burde vært installert. La oss nå på samme måte fortsette med å installere DHT-biblioteket som også er fra Adafruit.
Installere Adafruit DHT11-biblioteket på Raspberry Pi:
DHT11-sensoren fungerer med prinsippet om et-leder system. Verdien av temperatur og fuktighet registreres av sensoren og overføres deretter gjennom utgangspinnen som seriell data. Vi kan deretter lese disse dataene ved å bruke I / O-pinne på en MCU / MPU. For å forstå hvordan disse verdiene blir lest, må du lese gjennom databladet til DHT11-sensoren, men for nå å holde ting enkelt vil vi bruke et bibliotek til å snakke med DHT11-sensoren.
Den DHT11 bibliotek leveres av Adafruit kan brukes til DHT11, DHT22 og andre en ledning temperatursensorer i tillegg. Fremgangsmåten for å installere DHT11-biblioteket er også lik den som følges for installering av LCD-bibliotek. Den eneste linjen som ville endres er koblingen til GitHub-siden der DHT-biblioteket er lagret.
Skriv inn de fire kommandolinjene en etter en på terminalen for å installere DHT-biblioteket
git klon
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
Når det er gjort, vil begge bibliotekene være vellykket installert på vår Raspberry Pi. Nå kan vi fortsette med maskinvaretilkoblingen.
Kretsdiagram:
Det komplette kretsskjemaet Grensesnitt DH11 med Raspberry pi er gitt nedenfor, det ble bygget ved hjelp av Fritzing. Følg tilkoblingene og lag kretsen
Både LCD- og DHT11-sensoren fungerer med + 5V-forsyning, så vi bruker 5V-pinnene på Raspberry Pi til å drive begge deler. En opptrekksmotstand med verdi 1k brukes på utgangspinnen til DHT11-sensoren. Hvis du bruker en modul, kan du unngå denne motstanden.
En trimmerpotte på 10k er lagt til Vee-pinnen på LCD-skjermen for å kontrollere kontrastnivået på LCD-skjermen. Annet enn at alle forbindelsene er ganske rett frem. Men noter hvilke GPIO-pinner du bruker for å koble til pinnene siden vi trenger i programmet vårt. Tabellen nedenfor skal tillate deg å finne ut GPIO-pin-tallene.
Bruk diagrammet og koble til i henhold til kretsskjemaet. Jeg brukte et brødbrett og jumperledninger for å få forbindelse. Siden jeg brukte DHT11-modulen, koblet jeg den direkte til Raspberry Pi. Maskinvaren min så slik ut nedenfor
Python-programmering for DHT11-sensor:
Vi må skrive et program for å lese verdien av temperatur og fuktighet fra DHT11-sensoren og deretter vise det samme på LCD-skjermen. Siden vi har lastet ned biblioteker for både LCD- og DHT11-sensoren, bør koden være ganske rett frem. Det komplette python-programmet finner du på slutten av denne siden, men du kan lese videre for å forstå hvordan programmet fungerer.
Vi må importere LCD-biblioteket og DHT11-biblioteket til programmet vårt for å bruke funksjonene knyttet til det. Siden vi allerede har lastet ned og installert dem på Pi-en vår, kan vi ganske enkelt bruke følgende linjer for å importere dem. Vi importerer også tidsbiblioteket for å bruke forsinkelsesfunksjonen.
importtid #importtid for oppretting av forsinkelsesimport Adafruit_CharLCD som LCD #Import LCD-bibliotek import Adafruit_DHT #Import DHT Library for sensor
Deretter må vi spesifisere hvilke pinner sensoren er koblet til og hvilken type temperatursensor som brukes. Variabelen sensor_name er tildelt Adafruit_DHT.DHT11 siden vi bruker DHT11-sensoren her. Utgangstappen til sensoren er koblet til GPIO 17 på Raspberry Pi, og derfor tildeler vi 17 til sensor_pin-variabelen som vist nedenfor.
sensor_name = Adafruit_DHT.DHT11 # vi bruker DHT11-sensor sensor_pin = 17 # Sensoren er koblet til GPIO17 på Pi
På samme måte må vi også definere hvilke GPIO-pinner LCD-skjermen er koblet til. Her bruker vi LCD-skjermen i 4-biters modus, derfor vil vi ha fire datapinner og to kontrollpinner for å koble til GPIO-pinnene på pi. Du kan også koble bakgrunnslyspinnen til en GPIO-pinne hvis vi også ønsker å kontrollere bakgrunnsbelysningen. Men foreløpig bruker jeg ikke det, så jeg har tildelt 0 til det.
lcd_rs = 7 #RS av LCD er koblet til GPIO 7 på PI lcd_en = 8 # EN av LCD er koblet til GPIO 8 på PI lcd_d4 = 25 # D4 av LCD er koblet til GPIO 25 på PI lcd_d5 = 24 # D5 av LCD er koblet til GPIO 24 på PI lcd_d6 = 23 # D6 av LCD er koblet til GPIO 23 på PI lcd_d7 = 18 # D7 av LCD er koblet til GPIO 18 på PI lcd_backlight = 0 # LED er ikke koblet så vi tildeler til 0
Du kan også koble LCD i 8-biters modus med Raspberry pi, men gratis pinner reduseres.
LCD-biblioteket fra Adafruit som vi lastet ned kan brukes til alle typer karakteristiske LCD-skjermer. Her i prosjektet bruker vi en 16 * 2 LCD-skjerm, så vi nevner antall rader og kolonner til en variabel som vist nedenfor.
lcd_column = 16 #for 16 * 2 LCD lcd_rows = 2 # for 16 * 2 LCD
Nå som vi har erklært LCD-pinnene og antall rader og kolonner for LCD-skjermen, kan vi initialisere LCD-skjermen ved å bruke følgende linje som sender all nødvendig informasjon til biblioteket.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_column, lcd_rows, lcd_backlight) # Send alle pin-detaljene til biblioteket
For å starte programmet viser vi en liten intro-melding ved hjelp av lcd.message () -funksjonen og gir deretter en forsinkelse på 2 sekunder for å gjøre meldingen lesbar. For utskrift på to nd linje kommandoen \ n kan bli anvendt som vist nedenfor
lcd .message ('DHT11 with Pi \ n -CircuitDigest') # Gi en intro meldingstid. sleep (2) # vent i 2 sekunder
Til slutt, i vår mens sløyfe, bør vi lese verdien av temperatur og fuktighet fra sensoren og vise den på LCD-skjermen hvert 2. sekund. Det komplette programmet i mens loop er vist nedenfor
mens 1: #Infinite Loop
fuktighet, temperatur = Adafruit_DHT.read_retry (sensornavn, sensor_pin) #les fra sensor og lagre respektive verdier i temperatur- og fuktighetsvaribale
lcd.clear () #Rydd LCD-skjermen lcd.message ('Temp =%.1f C'% temperatur) # Vis verdien av temperatur lcd.message ('\ nHum =%.1f %%'% fuktighet) #Display verdien av fuktighetstid. sove (2) # Vent i 2 sekunder, og oppdater deretter verdiene
Vi kan enkelt få verdien av temperatur og fuktighet fra sensoren ved å bruke denne linjen nedenfor. Som du ser, returnerer det to verdier som er lagret i variabel fuktighet og temperatur. De sensor_name og sensor_pin informasjon sendes som parametere; disse verdiene ble oppdatert i begynnelsen av programmet
fuktighet, temperatur = Adafruit_DHT.read_retry (sensornavn, sensor_nål)
For å vise et variabelt navn på LCD-skjermen kan vi bruke identifikatorene som & d,% c osv. Her, siden vi viser et flytende nummer med bare ett siffer etter desimaltegnet, bruker vi identifikatoren%.1f for å vise verdien i variabel temperatur og fuktighet
LCD- melding ('Temp =%.1f C'% temperatur) LCD- melding ('\ nHum =%.1f %%'% fuktighet)
Måle fuktighet og temperatur ved hjelp av Raspberry Pi:
Opprett tilkoblingene i henhold til kretsskjemaet og installer de nødvendige bibliotekene. Start deretter python-programmet gitt på slutten av denne siden. LCD-skjermen din skal vise en intro-melding og deretter vise gjeldende temperatur- og fuktighetsverdi som vist på bildet nedenfor.
Hvis du ikke finner noe som vises på LCD-skjermen, må du sjekke om python-skallvinduet viser feil, hvis det ikke vises noen feil, sjekk tilkoblingene dine en gang til og juster potensiometeret for å variere kontrastnivået på LCD-skjermen og sjekk om du får noe på skjermen.
Håper du forsto prosjektet og likte å bygge det, hvis du har møtt noen problemer med å få dette gjort, rapporter det på kommentarseksjonen eller bruk forumet for teknisk hjelp. Jeg vil gjøre mitt beste for å svare på alle kommentarer.
Du kan også sjekke våre andre prosjekter ved hjelp av DHT11 med annen mikrokontroller.