- Översikt av DHT11-sensor:
- Förutsättningar:
- Installera Adafruit LCD-bibliotek på Raspberry Pi:
- Installera Adafruit DHT11-biblioteket på Raspberry Pi:
- Kretsschema:
- Python-programmering för DHT11-sensor:
- Mäta luftfuktighet och temperatur med Raspberry Pi:
Temperatur och luftfuktighet är de vanligaste parametrarna som övervakas i alla miljöer. Det finns massor av sensorer att välja mellan för att mäta temperatur och luftfuktighet, men den mest använda är DHT11 på grund av dess anständiga mätområde och noggrannhet. Det fungerar också med en stiftkommunikation och är därför mycket lätt att gränssnitt med mikrokontroller eller mikroprocessorer. I den här handledningen ska vi lära oss hur man kopplar ihop den populära DHT11-sensorn med Raspberry Pi och visar värdet på temperatur och fuktighet på en 16x2 LCD-skärm. Vi använde den redan för att bygga IoT Raspberry Pi Weather Station.
Översikt av DHT11-sensor:
DHT11-sensorn kan mäta relativ fuktighet och temperatur med följande specifikationer
Temperaturområde: 0-50 ° C Temperaturprecision: ± 2 ° C Luftfuktighet: 20-90% RH Luftfuktighet Exakthet : ± 5%
DHT11-sensorn finns antingen i modulform eller i sensorform. I denna handledning använder vi sensorns modulform, den enda skillnaden mellan båda är att sensorn i modulform har en filtreringskondensator och ett uppdragningsmotstånd fäst vid sensorns utgångsstift. Så om du använder sensorn ensam, se till att du lägger till dessa två komponenter. Lär dig också DHT11-gränssnitt med Arduino.
Hur DHT11-sensorn fungerar:
DHT11-sensorn har ett blått eller vitt hölje. Inuti detta hölje har vi två viktiga komponenter som hjälper oss att känna av den relativa fuktigheten och temperaturen. Den första komponenten är ett par elektroder; det elektriska motståndet mellan dessa två elektroder bestäms av ett fukthållande substrat. Så det uppmätta motståndet är omvänt proportionellt mot den relativa fuktigheten i miljön. Högre relativ luftfuktighet lägre blir värdet på motståndet och tvärtom. Observera också att relativ luftfuktighet skiljer sig från faktisk luftfuktighet. Relativ luftfuktighet mäter vattenhalten i luft i förhållande till temperaturen i luften.
Den andra komponenten är en ytmonterad NTC Thermistor. Termen NTC står för negativ temperaturkoefficient, för temperaturökning ökar motståndets värde
Förutsättningar:
Det antas att din Raspberry Pi redan har blinkat med ett operativsystem och kan ansluta till internet. Om inte, följ guiden Komma igång med Raspberry Pi innan du fortsätter.
Det antas också att du har tillgång till din pi antingen via terminalfönster eller genom andra applikationer genom vilka du kan skriva och köra pythonprogram och använda terminalfönstret.
Installera Adafruit LCD-bibliotek på Raspberry Pi:
Värdet på temperatur och luftfuktighet visas på en 16 * 2 LCD-skärm. Adafruit ger oss ett bibliotek för att enkelt hantera denna LCD i 4-bitars läge, så låt oss lägga till den i vår Raspberry Pi genom att öppna terminalfönstret Pi och följa nedanstående steg.
Steg 1: Installera git på din Raspberry Pi genom att använda nedanstående rad. Med Git kan du klona alla projektfiler på Github och använda den på din Raspberry pi. Vårt bibliotek finns på Github så vi måste installera git för att ladda ner det biblioteket till pi.
apt-get install git
Steg 2: Följande rad länkar till GitHub-sidan där biblioteket finns, kör bara raden för att klona projektfilen i Pi-hemkatalogen
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Steg 3: Använd kommandot nedan för att ändra katalograden, för att komma in i projektfilen som vi just laddade ner. Kommandoraden ges nedan
cd Adafruit_Python_CharLCD
Steg 4: Inne i katalogen finns en fil som heter setup.py , vi måste installera den för att installera biblioteket. Använd följande kod för att installera biblioteket
sudo python setup.py installera
Det är det biblioteket borde ha installerats med framgång. Nu ska vi på samma sätt fortsätta med installationen av DHT-biblioteket som också kommer från Adafruit.
Installera Adafruit DHT11-biblioteket på Raspberry Pi:
DHT11-sensorn fungerar med principen om ett trådsystem. Värdena på temperatur och fuktighet avkänns av sensorn och överförs sedan via utgångsstiftet som seriell data. Vi kan sedan läsa dessa data med hjälp av I / O-stift på en MCU / MPU. För att förstå hur dessa värden läses måste du läsa igenom databladet för DHT11-sensorn, men för att hålla sakerna enkla använder vi ett bibliotek för att prata med DHT11-sensorn.
Den DHT11 bibliotek som tillhandahålls av Adafruit kan användas för DHT11, DHT22 och andra sensorer en tråd temperatur samt. Proceduren för installation av DHT11-biblioteket liknar också den som följs för installation av LCD-bibliotek. Den enda raden som skulle kunna ändras är länken till GitHub-sidan där DHT-biblioteket sparas.
Ange de fyra kommandoraderna en efter en på terminalen för att installera DHT-biblioteket
git-klon
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py install
När det är gjort kommer båda biblioteken att installeras på vår Raspberry Pi. Nu kan vi fortsätta med hårdvaruanslutningen.
Kretsschema:
Det fullständiga kretsschemat Interfacing DH11 med Raspberry pi ges nedan, det byggdes med Fritzing. Följ anslutningarna och gör kretsen
Både LCD- och DHT11-sensorn fungerar med + 5V-matning så vi använder 5V-stiften på Raspberry Pi för att driva båda. Ett dragmotstånd med värdet 1k används på utgångsstiftet på DHT11-sensorn. Om du använder en modul kan du undvika detta motstånd.
En trimmerpott på 10k läggs till Vee-stiftet på LCD-skärmen för att styra LCD-skärmens kontrastnivå. Annat än att alla anslutningar är ganska rakt framåt. Men notera vilka GPIO-stift du använder för att ansluta stiften eftersom vi behöver i vårt program. Nedanstående diagram bör låta dig räkna ut GPIO-stiftnumren.
Använd diagrammet och gör dina anslutningar enligt kretsschemat. Jag använde ett brödbräda och bygelkablar för att skapa mina kontakter. Eftersom jag använde DHT11-modulen kopplade jag den direkt till Raspberry Pi. Min hårdvara såg ut så här nedan
Python-programmering för DHT11-sensor:
Vi måste skriva ett program för att läsa av temperaturen och luftfuktigheten från DHT11-sensorn och sedan visa detsamma på LCD-skärmen. Eftersom vi har laddat ner bibliotek för både LCD- och DHT11-sensorer bör koden vara ganska rakt framåt. Det kompletta programmet för python finns i slutet av denna sida, men du kan läsa vidare för att förstå hur programmet fungerar.
Vi måste importera LCD-biblioteket och DHT11-biblioteket till vårt program för att använda funktionerna relaterade till det. Eftersom vi redan har laddat ner och installerat dem på vår Pi kan vi helt enkelt använda följande rader för att importera dem. Vi importerar också tidsbiblioteket för att använda fördröjningsfunktionen.
importtid #importtid för att skapa fördröjning import Adafruit_CharLCD som LCD #Import LCD-bibliotek import Adafruit_DHT #Import DHT-bibliotek för sensor
Därefter måste vi specificera till vilka stift sensorn är ansluten till och vilken typ av temperaturgivare som används. Variabeln sensor_name tilldelas Adafruit_DHT.DHT11 eftersom vi använder DHT11-sensorn här. Givarens utgångsstift är ansluten till GPIO 17 på Raspberry Pi och därför tilldelar vi 17 till sensor_pin-variabeln som visas nedan.
sensor_name = Adafruit_DHT.DHT11 # vi använder DHT11-sensorn sensor_pin = 17 # Sensorn är ansluten till GPIO17 på Pi
På samma sätt måste vi också definiera till vilka GPIO-stift LCD-skärmen är ansluten till. Här använder vi LCD-skärmen i 4-bitars läge, därför kommer vi att ha fyra datapinnar och två kontrollpinnar för att ansluta till GPIO-pinnarna på pi. Du kan också ansluta bakgrundsbelysningsstiftet till ett GPIO-stift om vi också vill kontrollera bakgrundsbelysningen. Men för tillfället använder jag inte det så jag har tilldelat 0 det.
lcd_rs = 7 #RS på LCD är ansluten till GPIO 7 på PI lcd_en = 8 # EN på LCD är ansluten till GPIO 8 på PI lcd_d4 = 25 # D4 på LCD är ansluten till GPIO 25 på PI lcd_d5 = 24 # D5 på LCD är ansluten till GPIO 24 på PI lcd_d6 = 23 # D6 på LCD är ansluten till GPIO 23 på PI lcd_d7 = 18 # D7 på LCD är ansluten till GPIO 18 på PI lcd_backlight = 0 # LED är inte ansluten så vi tilldelar till 0
Du kan också ansluta LCD i 8-bitarsläge med Raspberry pi men då minskar fria stift.
LCD-biblioteket från Adafruit som vi laddade ner kan användas för alla typer av karakteristiska LCD-skärmar. Här i vårt projekt använder vi en 16 * 2 LCD-skärm så vi nämner antalet rader och kolumner till en variabel som visas nedan.
lcd_column = 16 # för 16 * 2 LCD lcd_rows = 2 # för 16 * 2 LCD
Nu när vi har deklarerat LCD-stiften och antalet rader och kolumner för LCD-skärmen kan vi initialisera LCD-skärmen genom att använda följande rad som skickar all nödvändig information till biblioteket.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_column, lcd_rows, lcd_backlight) # Skicka alla stiftdetaljer till biblioteket
För att starta programmet, vi visa ett litet intro meddelande med hjälp av lcd.message () funktion och sedan ge en fördröjning på 2 sekunder för att göra meddelandet läsbar. För utskrift på andra raden kan kommandot \ n användas enligt nedan
lcd .message ('DHT11 med Pi \ n -CircuitDigest') #Give en intro -meddelande time.sleep (2) #wait under 2 sek
Slutligen i vår medan loop bör vi läsa värdet av temperatur och fuktighet från sensorn och visa den på LCD-skärmen för varje 2 sekunder. Det fullständiga programmet inuti while-loop visas nedan
medan 1: #Infinite Loop
luftfuktighet, temperatur = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #läs från sensorn och spara respektive värden i temperatur- och fuktighetsvaribalen
lcd.clear () # Rensa LCD-skärmen lcd.message ('Temp =%.1f C'% temperatur) # Visa värdet på temperatur lcd.message ('\ nHum =%.1f %%'% fuktighet) #Display värdet på luftfuktighetstid. sömn (2) # Vänta i 2 sekunder och uppdatera sedan värdena
Vi kan enkelt få värdet av temperatur och luftfuktighet från sensorn med hjälp av denna enda rad nedan. Som du kan se returnerar det två värden som lagras i variabel luftfuktighet och temperatur. De sensor_name och sensor_pin detaljer skickas som parametrar; dessa värden uppdaterades i början av programmet
fuktighet, temperatur = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
För att visa ett variabelt namn på LCD-skärmen kan vi använda identifierarna som & d,% c etc. Här eftersom vi visar ett flytpunktsnummer med bara en siffra efter decimaltecken använder vi identifieraren%.1f för att visa värdet i variabel temperatur och luftfuktighet
LCD- meddelande ('Temp =%.1f C'% temperatur) LCD- meddelande ('\ nHum =%.1f %%'% fuktighet)
Mäta luftfuktighet och temperatur med Raspberry Pi:
Gör anslutningarna enligt kretsschemat och installera de bibliotek som krävs. Starta sedan python-programmet som ges i slutet av den här sidan. Din LCD-skärm ska visa ett introduktionsmeddelande och sedan visa det aktuella temperatur- och luftfuktighetsvärdet enligt bilden nedan.
Om du inte hittar något som visas på LCD-skärmen, kontrollera om fönstret för pythonskal visar några fel, om inget fel visas kan du kontrollera dina anslutningar en gång till och justera potentiometern för att variera kontrastnivån på LCD-skärmen och kontrollera om du får något på skärmen.
Hoppas att du förstod projektet och tyckte om att bygga det, om du har haft problem med att få det gjort rapportera det i kommentarsektionen eller använd forumet för teknisk hjälp. Jag kommer att göra mitt bästa för att svara på alla kommentarer.
Du kan också kontrollera våra andra projekt med DHT11 med annan mikrokontroller.