- Overzicht van DHT11-sensor:
- Vereisten:
- De Adafruit LCD-bibliotheek op Raspberry Pi installeren:
- De Adafruit DHT11-bibliotheek op Raspberry Pi installeren:
- Schakelschema:
- Python-programmering voor DHT11-sensor:
- Vochtigheid en temperatuur meten met Raspberry Pi:
Temperatuur en vochtigheid zijn de meest voorkomende parameters die in elke omgeving worden bewaakt. Er zijn talloze sensoren om uit te kiezen voor het meten van temperatuur en vochtigheid, maar de meest gebruikte is de DHT11 vanwege zijn behoorlijke meetbereik en nauwkeurigheid. Het werkt ook met communicatie via één pin en is daarom zeer eenvoudig te koppelen met microcontrollers of microprocessors. In deze tutorial gaan we leren hoe we de populaire DHT11-sensor kunnen koppelen aan Raspberry Pi en de waarde van temperatuur en vochtigheid kunnen weergeven op een 16x2 LCD-scherm. We hebben het al gebruikt om een IoT Raspberry Pi-weerstation te bouwen.
Overzicht van DHT11-sensor:
De DHT11-sensor kan relatieve vochtigheid en temperatuur meten met de volgende specificaties
Temperatuurbereik: 0-50 ° C Temperatuurnauwkeurigheid: ± 2 ° C Vochtigheidsbereik: 20-90% RV Vochtigheidsnauwkeurigheid: ± 5%
De DHT11-sensor is verkrijgbaar in module- of sensorvorm. In deze tutorial gebruiken we de module-vorm van de sensor, het enige verschil tussen beide is dat de sensor in modulevorm een filtercondensator en een pull-up-weerstand heeft die is bevestigd aan de uitgangspen van de sensor. Dus als u de sensor alleen gebruikt, zorg er dan voor dat u deze twee componenten toevoegt. Leer ook de interface van DHT11 met Arduino.
Hoe de DHT11-sensor werkt:
De DHT11-sensor wordt geleverd met een blauwe of witte kleurbehuizing. In deze behuizing hebben we twee belangrijke componenten die ons helpen de relatieve vochtigheid en temperatuur te voelen. De eerste component is een paar elektroden; de elektrische weerstand tussen deze twee elektroden wordt bepaald door een vochthoudend substraat. De gemeten weerstand is dus omgekeerd evenredig met de relatieve vochtigheid van de omgeving. Hoe hoger de relatieve luchtvochtigheid, hoe lager de waarde van de weerstand en vice versa. Merk ook op dat de relatieve vochtigheid verschilt van de werkelijke vochtigheid. Relatieve vochtigheid meet het watergehalte in de lucht ten opzichte van de temperatuur in de lucht.
Het andere onderdeel is een op het oppervlak gemonteerde NTC-thermistor. De term NTC staat voor Negatieve temperatuurcoëfficiënt, voor temperatuurstijging zal de weerstandswaarde afnemen
Vereisten:
Aangenomen wordt dat uw Raspberry Pi al is geflasht met een besturingssysteem en verbinding kan maken met internet. Als dit niet het geval is, volgt u de handleiding Aan de slag met Raspberry Pi voordat u verder gaat.
Er wordt ook aangenomen dat je toegang hebt tot je pi via terminalvensters of via een andere applicatie waarmee je Python-programma's kunt schrijven en uitvoeren en het terminalvenster kunt gebruiken.
De Adafruit LCD-bibliotheek op Raspberry Pi installeren:
De waarde van de temperatuur en vochtigheid wordt weergegeven op een 16 * 2 LCD-scherm. Adafruit biedt ons een bibliotheek om dit LCD-scherm gemakkelijk in 4-bits modus te bedienen, dus laten we het aan onze Raspberry Pi toevoegen door het terminalvenster Pi te openen en de onderstaande stappen te volgen.
Stap 1: Installeer git op je Raspberry Pi met behulp van de onderstaande regel. Met Git kun je alle projectbestanden op Github klonen en deze op je Raspberry pi gebruiken. Onze bibliotheek staat op Github, dus we moeten git installeren om die bibliotheek naar pi te downloaden.
apt-get install git
Stap 2: De volgende regel linkt naar de GitHub-pagina waar de bibliotheek aanwezig is, voer gewoon de regel uit om het projectbestand in de Pi-homedirectory te klonen
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Stap 3: Gebruik de onderstaande opdracht om de directorylijn te wijzigen, om in het projectbestand te komen dat we zojuist hebben gedownload. De opdrachtregel wordt hieronder gegeven
cd Adafruit_Python_CharLCD
Stap 4: In de directory zal er een bestand zijn met de naam setup.py , we moeten het installeren om de bibliotheek te installeren. Gebruik de volgende code om de bibliotheek te installeren
sudo python setup.py installeren
Dat is het, de bibliotheek had met succes moeten zijn geïnstalleerd. Laten we nu op dezelfde manier doorgaan met het installeren van de DHT-bibliotheek die ook van Adafruit is.
De Adafruit DHT11-bibliotheek op Raspberry Pi installeren:
De DHT11-sensor werkt volgens het principe van een enkeldraads systeem. De waarde van temperatuur en vochtigheid wordt door de sensor gedetecteerd en vervolgens als seriële gegevens via de outputpin verzonden. We kunnen deze gegevens vervolgens lezen met behulp van de I / O-pin op een MCU / MPU. Om te begrijpen hoe deze waarden worden gelezen, zou je de datasheet van de DHT11-sensor moeten doorlezen, maar om het simpel te houden zullen we een bibliotheek gebruiken om met de DHT11-sensor te praten.
De DHT11-bibliotheek van Adafruit kan ook worden gebruikt voor DHT11, DHT22 en andere ééndraads temperatuursensoren. De procedure voor het installeren van de DHT11-bibliotheek is ook vergelijkbaar met die voor het installeren van de LCD-bibliotheek. De enige regel die zou veranderen, is de link van de GitHub-pagina waarop de DHT-bibliotheek is opgeslagen.
Voer de vier opdrachtregels een voor een in op de terminal om de DHT-bibliotheek te installeren
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py installeren
Als het klaar is, zijn beide bibliotheken met succes geïnstalleerd op onze Raspberry Pi. Nu kunnen we doorgaan met de hardwareverbinding.
Schakelschema:
Het volledige schakelschema Interfacing DH11 met Raspberry pi wordt hieronder gegeven, het werd gebouwd met behulp van Fritzing. Volg de verbindingen en maak het circuit
Zowel de LCD- als de DHT11-sensor werken met + 5V-voeding, dus we gebruiken de 5V-pinnen op de Raspberry Pi om beide van stroom te voorzien. Een pull-up weerstand van waarde 1k wordt gebruikt op de output pin van de DHT11 sensor, als je een module gebruikt kun je deze weerstand vermijden.
Een trimmerpot van 10k is toegevoegd aan de Vee-pin van het LCD-scherm om het contrastniveau van het LCD-scherm te regelen. Verder zijn alle verbindingen vrij ongecompliceerd. Maar noteer welke GPIO-pinnen u gebruikt om de pinnen aan te sluiten, aangezien we deze nodig hebben in ons programma. De onderstaande tabel zou u in staat moeten stellen om de GPIO-pincodes te achterhalen.
Gebruik het schema en maak uw aansluitingen volgens het schakelschema. Ik heb een breadboard en jumperdraden gebruikt om mijn verbindingen te maken. Sinds ik de DHT11-module heb gebruikt, heb ik deze rechtstreeks op Raspberry Pi aangesloten. Mijn hardware zag er hieronder als volgt uit
Python-programmering voor DHT11-sensor:
We moeten een programma schrijven om de waarde van temperatuur en vochtigheid van de DHT11-sensor af te lezen en deze vervolgens op het LCD-scherm weer te geven. Omdat we bibliotheken hebben gedownload voor zowel LCD- als DHT11-sensoren, zou de code vrij eenvoudig moeten zijn. Het volledige programma van Python is te vinden aan het einde van deze pagina, maar je kunt verder lezen om te begrijpen hoe het programma werkt.
We moeten de LCD-bibliotheek en DHT11-bibliotheek in ons programma importeren om de bijbehorende functies te gebruiken. Omdat we ze al hebben gedownload en op onze Pi hebben geïnstalleerd, kunnen we eenvoudig de volgende regels gebruiken om ze te importeren. We importeren ook de tijdbibliotheek om de vertragingsfunctie te gebruiken.
importeer tijd #importeer tijd voor het aanmaken van vertraging importeer Adafruit_CharLCD als LCD # Importeer LCD-bibliotheek import Adafruit_DHT #Import DHT-bibliotheek voor sensor
Vervolgens moeten we specificeren op welke pinnen de sensor is aangesloten en welk type temperatuursensor wordt gebruikt. De variabele sensor_name wordt toegewezen aan Adafruit_DHT.DHT11 omdat we hier de DHT11-sensor gebruiken. De outputpin van de sensor is verbonden met GPIO 17 van de Raspberry Pi en daarom wijzen we 17 toe aan de sensor_pin-variabele zoals hieronder getoond.
sensor_name = Adafruit_DHT.DHT11 # we gebruiken de DHT11 sensor sensor_pin = 17 # De sensor is verbonden met GPIO17 op Pi
Evenzo moeten we ook bepalen op welke GPIO-pinnen het LCD-scherm is aangesloten. Hier gebruiken we het LCD-scherm in 4-bit-modus, dus we hebben vier datapinnen en twee controlepennen om verbinding te maken met de GPIO-pinnen van de pi. U kunt ook de achtergrondverlichtingspin aansluiten op een GPIO-pin als we ook de achtergrondverlichting willen regelen. Maar voorlopig gebruik ik dat niet, dus heb ik er 0 aan toegewezen.
lcd_rs = 7 #RS van LCD is verbonden met GPIO 7 op PI lcd_en = 8 #EN van LCD is verbonden met GPIO 8 op PI lcd_d4 = 25 # D4 van LCD is verbonden met GPIO 25 op PI lcd_d5 = 24 # D5 van LCD is verbonden met GPIO 24 op PI lcd_d6 = 23 # D6 van LCD is verbonden met GPIO 23 op PI lcd_d7 = 18 # D7 van LCD is verbonden met GPIO 18 op PI lcd_backlight = 0 #LED is niet aangesloten, dus wijzen we toe op 0
Je kunt ook een LCD in 8-bit-modus verbinden met Raspberry pi, maar dan worden vrije pinnen verminderd.
De lcd-bibliotheek van Adafruit die we hebben gedownload, kan worden gebruikt voor alle soorten karakteristieke lcd-schermen. Hier in ons project gebruiken we een 16 * 2 LCD-scherm, dus we vermelden het aantal rijen en kolommen voor een variabele zoals hieronder weergegeven.
lcd_columns = 16 # voor 16 * 2 LCD lcd_rows = 2 # voor 16 * 2 LCD
Nu we de LCD-pinnen en het aantal rijen en kolommen voor het LCD-scherm hebben aangegeven, kunnen we het LCD-scherm initialiseren door de volgende regel te gebruiken die alle vereiste informatie naar de bibliotheek stuurt.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Stuur alle pin-details naar de bibliotheek
Om het programma te starten, laten we een klein introbericht zien met de functie lcd.message () en geven we een vertraging van 2 seconden om het bericht leesbaar te maken. Voor afdrukken op de 2 e regel kan het commando \ n worden gebruikt zoals hieronder weergegeven
lcd .message (DHT11 met Pi \ n -CircuitDigest) #Give een intro bericht time.sleep (2) #wait 2 seconden
Ten slotte moeten we in onze while- lus de waarde van temperatuur en vochtigheid van de sensor aflezen en deze elke 2 seconden op het LCD-scherm weergeven. Het volledige programma in de while-lus wordt hieronder weergegeven
while 1: #Infinite Loop
vochtigheid, temperatuur = Adafruit_DHT.read_retry (sensor_naam, sensor_pin) #lees van sensor en sla respectieve waarden op in temperatuur en vochtigheid varibale
lcd.clear () #Clear the LCD screen lcd.message ('Temp =%.1f C'% temperature) # Geef de waarde van temperatuur lcd.message ('\ nHum =%.1f %%'% vochtigheid) #Display de waarde van Vochtigheid time.sleep (2) #Wacht 2 sec en werk dan de waarden bij
We kunnen eenvoudig de waarde van temperatuur en vochtigheid uit de sensor halen met behulp van deze enkele regel hieronder. Zoals je kunt zien, retourneert het twee waarden die zijn opgeslagen in de variabele vochtigheid en temperatuur. De sensor_name en sensor_pin details worden als parameters doorgegeven; deze waarden zijn aan het begin van het programma bijgewerkt
vochtigheid, temperatuur = Adafruit_DHT.read_retry (sensor_name, sensor_pin)
Om een variabelenaam op het LCD-scherm weer te geven, kunnen we de identificaties gebruiken zoals & d,% c enz. Omdat we hier een drijvende-kommagetal weergeven met slechts één cijfer achter de komma, gebruiken we de identifier%.1f voor het weergeven van de waarde in de variabele temperatuur en vochtigheid
lcd .message ('Temp =%.1f C'% temperatuur) lcd .message ('\ nHum =%.1f %%'% vochtigheid)
Vochtigheid en temperatuur meten met Raspberry Pi:
Maak de aansluitingen volgens het schakelschema en installeer de vereiste bibliotheken. Start vervolgens het python-programma aan het einde van deze pagina. Uw LCD-scherm moet een introbericht weergeven en vervolgens de huidige temperatuur- en vochtigheidswaarde weergeven, zoals weergegeven in de onderstaande afbeelding.
Als u merkt dat er niets op het LCD-scherm wordt weergegeven, controleer dan of het Python-shell-venster fouten vertoont, als er geen fout wordt weergegeven, controleer dan nogmaals uw aansluitingen en pas de potentiometer aan om het contrastniveau van het LCD-scherm te variëren en controleer of u iets op het scherm krijgt het scherm.
Ik hoop dat je het project hebt begrepen en met plezier hebt gebouwd, als je problemen hebt ondervonden om dit voor elkaar te krijgen, meld het dan in het commentaargedeelte of gebruik het forum voor technische hulp. Ik zal mijn best doen om op alle opmerkingen te reageren.
U kunt ook onze andere projecten bekijken met DHT11 met andere microcontrollers.