- Oversigt over DHT11-sensor:
- Forudsætninger:
- Installation af Adafruit LCD-bibliotek på Raspberry Pi:
- Installation af Adafruit DHT11-biblioteket på Raspberry Pi:
- Kredsløbsdiagram:
- Python-programmering til DHT11-sensor:
- Måling af fugtighed og temperatur ved hjælp af Raspberry Pi:
Temperatur og fugtighed er de mest almindelige parametre, der overvåges i ethvert miljø. Der er masser af sensorer at vælge imellem til måling af temperatur og fugtighed, men den mest anvendte er DHT11 på grund af dens anstændige måleområde og nøjagtighed. Det fungerer også med en pin-kommunikation og er derfor meget let at interface med mikrocontrollere eller mikroprocessorer. I denne vejledning skal vi lære at interface den populære DHT11-sensor med Raspberry Pi og vise værdien af temperatur og fugtighed på en 16x2 LCD-skærm. Vi har allerede brugt det til at bygge IoT Raspberry Pi Vejrstation.
Oversigt over DHT11-sensor:
DHT11-sensoren kan måle relativ fugtighed og temperatur med følgende specifikationer
Temperaturområde: 0-50 ° C Temperaturnøjagtighed: ± 2 ° C Fugtighedsområde: 20-90% RH Fugtighedsnøjagtighed: ± 5%
DHT11-sensoren fås enten i modulform eller i sensorform. I denne vejledning bruger vi sensorens modulform, den eneste forskel mellem begge er, at sensoren i modulform har en filtreringskondensator og en pull-up-modstand fastgjort til sensorens udgangsstift. Så hvis du bruger sensoren alene, skal du sørge for at tilføje disse to komponenter. Lær også DHT11-grænseflade med Arduino.
Sådan fungerer DHT11-sensoren:
DHT11-sensoren leveres med en blå eller hvid farvetarme. Inde i dette hus har vi to vigtige komponenter, der hjælper os med at registrere den relative fugtighed og temperatur. Den første komponent er et par elektroder; den elektriske modstand mellem disse to elektroder bestemmes af et fugtighedsholdende substrat. Så den målte modstand er omvendt proportional med miljøets relative fugtighed. Højere den relative fugtighed lavere vil være værdien af modstand og omvendt. Bemærk også, at relativ fugtighed er forskellig fra den faktiske fugtighed. Relativ fugtighed måler vandindholdet i luft i forhold til temperaturen i luften.
Den anden komponent er en overflademonteret NTC Thermistor. Udtrykket NTC står for negativ temperaturkoefficient, for stigning i temperatur falder modstandsværdien
Forudsætninger:
Det antages, at din Raspberry Pi allerede har blinket med et operativsystem og er i stand til at oprette forbindelse til internettet. Hvis ikke, følg vejledningen Kom godt i gang med Raspberry Pi, inden du fortsætter.
Det antages også, at du har adgang til din pi enten gennem terminalvinduer eller gennem en anden applikation, hvorigennem du kan skrive og udføre pythonprogrammer og bruge terminalvinduet.
Installation af Adafruit LCD-bibliotek på Raspberry Pi:
Værdien af temperatur og fugtighed vises på et 16 * 2 LCD-display. Adafruit giver os et bibliotek, der nemt kan betjene denne LCD i 4-bit-tilstand, så lad os tilføje det til vores Raspberry Pi ved at åbne terminalvinduet Pi og følge nedenstående trin.
Trin 1: Installer git på din Raspberry Pi ved hjælp af nedenstående linje. Git giver dig mulighed for at klone alle projektfiler på Github og bruge det på din Raspberry pi. Vores bibliotek er på Github, så vi er nødt til at installere git for at downloade biblioteket til pi.
apt-get install git
Trin 2: Følgende linje linker til GitHub-siden, hvor biblioteket er til stede, udfør bare linjen for at klone projektfilen i Pi-hjemmekatalog
git klon git: //github.com/adafruit/Adafruit_Python_CharLCD
Trin 3: Brug nedenstående kommando til at ændre kataloglinje for at komme ind i projektfilen, som vi lige har downloadet. Kommandolinjen er angivet nedenfor
cd Adafruit_Python_CharLCD
Trin 4: Inde i biblioteket vil der være en fil kaldet setup.py , vi skal installere den for at installere biblioteket. Brug følgende kode til at installere biblioteket
sudo python setup.py installation
Det er det, biblioteket skulle have været installeret med succes. Lad os nu ligeledes fortsætte med at installere DHT-biblioteket, som også er fra Adafruit.
Installation af Adafruit DHT11-biblioteket på Raspberry Pi:
DHT11-sensoren fungerer med princippet om et-leder system. Værdien af temperatur og fugtighed registreres af sensoren og transmitteres derefter gennem udgangsstiften som serielle data. Vi kan derefter læse disse data ved hjælp af I / O-pin på en MCU / MPU. For at forstå hvordan disse værdier læses, bliver du nødt til at læse gennem databladet til DHT11-sensoren, men for at holde tingene enkle bruger vi et bibliotek til at tale med DHT11-sensoren.
Den DHT11 bibliotek tilvejebragt af Adafruit kan anvendes til DHT11, DHT22 og andre én ledning temperaturfølere samt. Proceduren for installation af DHT11-biblioteket ligner også den, der følges ved installation af LCD-bibliotek. Den eneste linje, der ville ændre sig, er linket til GitHub-siden, hvor DHT-biblioteket er gemt.
Indtast de fire kommandolinjer en efter en på terminalen for at installere DHT-biblioteket
git-klon
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py installation
Når det er gjort, har begge bibliotekerne succesfuldt installeret på vores Raspberry Pi. Nu kan vi fortsætte med hardwareforbindelsen.
Kredsløbsdiagram:
Det komplette kredsløbsdiagram Interfacing DH11 med Raspberry pi er angivet nedenfor, det blev bygget ved hjælp af Fritzing. Følg forbindelserne og lav kredsløbet
Både LCD- og DHT11-sensoren fungerer med + 5V-forsyning, så vi bruger 5V-stifterne på Raspberry Pi til at drive begge dele. En pull-up-modstand med værdi 1k bruges på udgangsstiften på DHT11-sensoren. Hvis du bruger et modul, kan du undgå denne modstand.
En trimmerpotte på 10k tilføjes til Vee-stiften på LCD'et for at kontrollere LCD'ets kontrastniveau. Bortset fra at alle forbindelser er ret ligetil. Men noter hvilke GPIO-ben, du bruger til at forbinde benene, da vi har brug for i vores program. Nedenstående diagram skal give dig mulighed for at finde ud af GPIO-pin-numrene.
Brug diagrammet og lav dine forbindelser i henhold til kredsløbsdiagrammet. Jeg brugte et brødbræt og jumpertråde til at skabe mine forbindelser. Da jeg brugte DHT11-modul, kablede jeg det direkte til Raspberry Pi. Min hardware så sådan ud nedenfor
Python-programmering til DHT11-sensor:
Vi er nødt til at skrive et program for at læse værdien af temperatur og fugtighed fra DHT11-sensoren og derefter vise det samme på LCD'et. Da vi har downloadet biblioteker til både LCD- og DHT11-sensoren, skal koden være ret ligetil. Det komplette python-program findes i slutningen af denne side, men du kan læse videre for at forstå, hvordan programmet fungerer.
Vi er nødt til at importere LCD-biblioteket og DHT11-biblioteket til vores program for at bruge de funktioner, der er relateret til det. Da vi allerede har downloadet og installeret dem på vores Pi, kan vi ganske enkelt bruge følgende linjer til at importere dem. Vi importerer også tidsbiblioteket for at bruge forsinkelsesfunktionen.
importtid #importtid til oprettelse af forsinkelsesimport Adafruit_CharLCD som LCD #Import LCD-bibliotek import Adafruit_DHT #Import DHT-bibliotek til sensor
Derefter skal vi specificere, hvilke stifter sensoren er tilsluttet, og hvilken type temperatursensor der bruges. Den variable sensor_name er tildelt Adafruit_DHT.DHT11, da vi bruger DHT11-sensoren her. Sensorens udgangsstift er forbundet med GPIO 17 på Raspberry Pi, og derfor tildeler vi 17 til sensor_pin-variablen som vist nedenfor.
sensor_name = Adafruit_DHT.DHT11 # vi bruger DHT11-sensoren sensor_pin = 17 # Sensoren er forbundet til GPIO17 på Pi
På samme måde skal vi også definere, hvilke GPIO-ben LCD-skærmen er tilsluttet. Her bruger vi LCD'et i 4-bit-tilstand, derfor har vi fire datapinde og to kontrolpinde til at forbinde til GPIO-benene på pi'en. Du kan også tilslutte baggrundsbelysningspinden til en GPIO-pin, hvis vi også ønsker at kontrollere baggrundsbelysningen. Men for nu bruger jeg ikke det, så jeg har tildelt 0 til det.
lcd_rs = 7 #RS af LCD er tilsluttet GPIO 7 på PI lcd_en = 8 #EN af LCD er forbundet til GPIO 8 på PI lcd_d4 = 25 # D4 af LCD er tilsluttet til GPIO 25 på PI lcd_d5 = 24 # D5 af LCD er tilsluttet GPIO 24 på PI lcd_d6 = 23 # D6 på LCD er forbundet til GPIO 23 på PI lcd_d7 = 18 # D7 på LCD er forbundet til GPIO 18 på PI lcd_backlight = 0 # LED er ikke tilsluttet, så vi tildeler til 0
Du kan også tilslutte LCD i 8-bit-tilstand med Raspberry pi, men så reduceres gratis pins.
LCD-biblioteket fra Adafruit, som vi downloadede, kan bruges til alle typer karakteristiske LCD-skærme. Her i vores projekt bruger vi en 16 * 2 LCD-skærm, så vi nævner antallet af rækker og kolonner til en variabel som vist nedenfor.
lcd_column = 16 #for 16 * 2 LCD lcd_rows = 2 # for 16 * 2 LCD
Nu hvor vi har erklæret LCD-benene og antallet af rækker og kolonner til LCD'et, kan vi initialisere LCD-skærmen ved hjælp af følgende linje, der sender alle de nødvendige oplysninger 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-oplysningerne til biblioteket
For at starte programmet viser vi en lille introduktionsmeddelelse ved hjælp af lcd.message () -funktionen og giver derefter en forsinkelse på 2 sekunder for at gøre meddelelsen læsbar. Til udskrivning på 2. linje kan kommandoen \ n bruges som vist nedenfor
lcd .message ('DHT11 med Pi \ n -CircuitDigest') # Giv en intro besked tid. sove (2) # vent i 2 sekunder
Endelig inde i vores mens løkke skal vi læse værdien af temperatur og fugtighed fra sensoren og vise det på LCD-skærmen for hver 2 sekunder. Det komplette program inde i mens løkken er vist nedenfor
mens 1: #Infinite Loop
fugtighed, temperatur = Adafruit_DHT.read_retry (sensornavn, sensor_pin) #læs fra sensor og gem de respektive værdier i temperatur- og fugtighedsvaribale
lcd.clear () #Ryd LCD-skærmen lcd.message ('Temp =%.1f C'% temperatur) # Vis værdien af temperatur lcd.message ('\ nHum =%.1f %%'% fugtighed) #Display værdien af fugtighedstid. sove (2) # Vent i 2 sekunder, og opdater derefter værdierne
Vi kan nemt få værdien af temperatur og fugtighed fra sensoren ved hjælp af denne enkelt linje nedenfor. Som du kan se returnerer det to værdier, der er gemt i den variable fugtighed og temperatur. De sensor_name og sensor_pin detaljer er gået som parametre; disse værdier blev opdateret i starten af programmet
fugtighed, temperatur = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
For at vise et variabelt navn på LCD-skærmen kan vi bruge identifikatorerne som & d,% c osv. Her, da vi viser et flydende nummer med kun et ciffer efter decimaltegnet, bruger vi identifikatoren%.1f til at vise værdien i den variable temperatur og fugtighed
lcd. besked ('Temp =%.1f C'% temperatur) lcd. besked ('\ nHum =%.1f %%'% fugtighed)
Måling af fugtighed og temperatur ved hjælp af Raspberry Pi:
Foretag forbindelserne i henhold til kredsløbsdiagrammet, og installer de nødvendige biblioteker. Start derefter python-programmet, der er givet i slutningen af denne side. Din LCD skal vise en introduktionsmeddelelse og derefter vise den aktuelle temperatur og fugtighedsværdi som vist på billedet nedenfor.
Hvis du finder ud af, at der ikke vises noget på LCD-skærmen, skal du kontrollere, om python-shell-vinduet viser fejl, hvis der ikke vises nogen fejl, skal du kontrollere dine forbindelser igen og justere potentiometeret for at variere kontrastniveauet på LCD'et og kontrollere, om du får noget skærmen.
Håber du forstod projektet og nød at bygge det, hvis du har haft problemer med at få dette gjort, rapporter det i kommentarsektionen eller brug forummet til teknisk hjælp. Jeg vil gøre mit bedste for at svare på alle kommentarer.
Du kan også tjekke vores andre projekter ved hjælp af DHT11 med en anden mikrocontroller.