Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

DHT11 /DHT22 temperatuursensor

Componenten en benodigdheden

DHT11 temperatuur- en vochtigheidssensor (4 pinnen)
× 1
Raspberry Pi 2 Model B
× 1
Arduino UNO
× 1
Male to Male doorverbindingsdraad
× 3
Broodplank (algemeen)
× 1
4.7K Ω Weerstand
× 1
Cobbler Breakout Kit
× 1

Apps en online services

Microsoft Windows 10 IoT Core
Arduino IDE
Raspberry Pi Raspbian
Microsoft Visual Studio 2015
WinSCP
PuTTY

Over dit project

Inleiding

Achtergrond

De DHT11 is een 4-pins (één pin is ongebruikt) temperatuur- en vochtigheidssensor die 20% - 90% relatieve vochtigheid en 0 tot 50 °C kan meten. De sensor kan werken tussen 3 en 5,5 V DC en communiceert met behulp van zijn eigen gepatenteerde OneWire-protocol. Dit protocol vereist een zeer nauwkeurige timing om de gegevens van de sensor te krijgen. De LOW en HIGH bits worden op de draad gecodeerd door de tijdsduur dat het signaal HOOG is. De totale tijd om een ​​meting uit te voeren is maximaal 23,4 ms. Dit omvat een vertraging van 18 ms die nodig is om de gegevensoverdracht te starten en een periode van maximaal 5,4 ms voor de gegevens. Individuele signalen kunnen zo kort zijn als 20 s en zo lang als 80 μs.

Toen Windows 10 IoT Core voor het eerst beschikbaar kwam, pakte ik mijn Raspberry Pi 2 en mijn DHT11-sensor en probeerde het uit in C#. Ik kwam er al snel achter dat het niet ging werken. Het probleem met C# in de Windows 10 IoT Core is dat het gewoon niet snel genoeg zal zijn (althans niet nu).

Ik plaatste een bericht op het Microsoft-forum en had een paar uitwisselingen met andere ontwikkelaars die dezelfde worsteling hadden. Ik kwam uiteindelijk een Microsoft-reactie tegen op het OneWire-protocol in Windows 10 IoT Core met de tekst:

Na een tijdje kreeg ik een reactie op mijn bericht met de volgende tekst:

Nou, dat zal geweldig zijn en ik ben echt enthousiast over de aankomende mogelijkheid, maar wie kan wachten? Ik heb onlangs gezien dat Microsoft een voorbeeld heeft gepost over hoe het een OneWire-protocol kan worden ondersteund met de DHT11 als voorbeeldsensor en met C++ op Windows 10 IoT Core. Ik zag dit als een kans om het naar C# te brengen.

Dit project gaat over het omzetten van dat monster in een bibliotheek die kan worden gebruikt in C#. Ik ben dankbaar voor de persoon die de bibliotheek heeft geschreven om deze populaire sensor bruikbaar te maken in Windows 10 IoT Core, en hopelijk zal deze bibliotheek met deze bibliotheek nog nuttiger zijn.

Bibliotheek

De bibliotheek die ik heb gemaakt, is een eenvoudige refactoring van de code die oorspronkelijk door Microsoft is gepost, dus ik neem geen eer voor het werk dat is gedaan om de sensor te lezen.

De bibliotheek presenteert een eenvoudige klasse genaamd Dht11 in de naamruimte Sensors.Dht . Een nieuw object maken in C# is eenvoudig.

Open eerst de GPIO-pin waarop de DHT11-sensorpin is aangesloten.

met behulp van Sensors.Dht;GpioPin pin =GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive); 

Geef deze pin vervolgens door aan de constructor van de Dht11 class en specificeer de GPIO Pin Drive Mode. Hiermee kunt u beslissen of u uw eigen pull-up-weerstand wilt toevoegen.

Dht11 dht11 =nieuwe Dht11(_pin, GpioPinDriveMode.Input); 

Om een ​​meting van het apparaat te krijgen, gebruikt u de GetReadingAsync methode.

DhtReading lezen =wachten op dht11.GetReadingAsync().AsTask(); 

Er is een overbelasting waardoor de maximale waarde voor opnieuw proberen kan worden opgegeven. De standaardwaarde is 20. Dit geeft aan hoeveel pogingen er moeten worden ondernomen om de sensor uit te lezen voordat de meting wordt opgegeven en geretourneerd.

De DhtReading structuur wordt gedefinieerd als:

public value struct DhtReading{  bool TimedOut; bool Is Geldig; dubbele temperatuur; dubbele vochtigheid; int RetryCount;}; 

Observaties

Hoewel de sensor in C++ werkt, wordt hij nog steeds niet elke keer uitgelezen. Dus de noodzaak voor een nieuwe poging in de klas (dit maakt eigenlijk deel uit van het Microsoft-voorbeeld). Ik dacht dat het het beste zou zijn om dit te vergelijken met andere platforms om te zien hoe het presteert. Ik heb code geprobeerd op de Raspberry Pi 2 met Raspbian en op een Arduino Uno. De code die ik voor beide heb gebruikt, is opgenomen in de GitHub-repository.

De video in dit project demonstreert en vergelijkt de output van elk van deze platforms.

Aan de slag

Monteer het circuit voor de Raspberry Pi 2

Gebruik deze handleiding om het circuit samen te stellen en gebruik het diagram onderaan de pagina als richtlijn (merk op dat de kleur van de draden optioneel is en is gekozen om het circuit gemakkelijk te volgen te maken wanneer het is gebouwd).

  • Plaats de T-vormige schoenmaker aan de linkerkant van het bord met halve maat+ (waar de cijfers beginnen bij 1). De twee meest linkse pinnen bevinden zich in E1 en F1 op het bord. De twee meest rechtse pinnen bevinden zich op E20 en F20
  • Plaats de weerstand van 4,7K Ω tussen A4 en 3V3
  • Sluit een oranje mannetje op een mannetje aan tussen B4 en F28
  • Sluit een rode mannelijke op mannelijke verbindingsdraad aan tussen F29 en 3V3
  • Sluit een zwarte mannelijke op mannelijke verbindingsdraad aan tussen F30 en GND
  • Plaats de DHT11-sensoren in J30 (-), J29 (+) en J28 (en)
  • Steek de lintkabel in de schoenmaker en de Raspberry Pi

Monteer het circuit voor de Arduino

Gebruik deze handleiding om het circuit samen te stellen en gebruik het diagram onderaan de pagina als richtlijn (merk op dat de kleur van de draden optioneel is en is gekozen om het circuit gemakkelijk te volgen te maken wanneer het is gebouwd).

  • Plaats de weerstand van 4,7K Ω tussen E12 en E13
  • Sluit een witte mannelijke op mannelijke verbindingsdraad aan tussen D13 en Pin 5 in de Arduino
  • Sluit een rode mannelijke op mannelijke verbindingsdraad aan tussen D12 en de 5V pin in de Arduino
  • Sluit een zwarte mannelijke op mannelijke verbindingsdraad aan tussen D11 en GND op de Arduino
  • Plaats de DHT11-sensoren in A11 (-), A12 (+) en A13 (en)
  • Sluit de USB-kabel van uw computer aan op uw Arduino

Hieronder staan ​​foto's van de circuits die ik heb gebouwd.

De applicatie voor de Raspberry Pi starten

Kies Foutopsporing, ARM-configuratie en Externe machine. Klik nu met de rechtermuisknop op het project en selecteer Eigenschap en klik vervolgens op Debug-tag. Plaats vervolgens het IP-adres van de Raspberry Pi 2 in het veld Externe machine en verwijder het vinkje bij Gebruik authenticatie.

Druk op F5 . De applicatie wordt op het apparaat geïmplementeerd, wat de eerste keer een paar minuten kan duren.

De applicatie voor de Arduino starten

De schets voor dit project is beschikbaar in GitHub in een bestand met de naam Dht11_Speed . Start de Arduino IDE en open de schets. Upload de schets naar de Arduino (Ctrl U ) en start vervolgens de seriële monitor (Ctrl Shift M )

Als je niet zeker weet hoe je dit moet doen of nieuw bent in deze omgeving, zal de onderstaande video laten zien hoe je dit moet doen.

De applicatie voor Raspbian starten

De C-code voor de Raspberry Pi is beschikbaar in GitHub voor dit project in een bestand met de naam Dht11.c . De bron moet naar de Raspberry Pi worden gekopieerd en daar vervolgens worden gecompileerd. Ik gebruik WinSCP graag om bestanden te kopiëren. Als u deze applicatie niet heeft, raad ik u aan deze nu te downloaden en te installeren. De broncode maakt gebruik van bedradingPi die moet worden geïnstalleerd voordat de applicatie wordt gecompileerd.

Het commando om de code op de Raspberry Pi te compileren is:

gcc -oDht11_Speed ​​Dht11_Speed.c -L/usr/local/lib -lwiringPi -std=c99 -lm 

Voer de volgende opdracht in om de toepassing uit te voeren:

sudo ./Dht11_Speed ​​1000 10 

Waarbij 1000 een vertraging van 1000 ms (1 sec) aangeeft en 10 het aantal te lezen samples is.

De video laat in meer detail zien hoe je de code kopieert en compileert op de Raspberry Pi met Raspbian. Om te leren hoe u Raspbian op uw Raspberry Pi laadt, gaat u naar https://www.raspberrypi.org/downloads/raspbian/.

Video

De onderstaande video is een demonstratie van de toepassing:

Bekijk deze video op YouTube in de Theatermodus voor de beste kwaliteit.

Code

Visual Studio 2015 C#/C++ broncode
https://github.com/porrey/dht.git

Schema's

Dht11_RPi2.fzz Dht11_Arduino.fzz

Productieproces

  1. DS18B20-temperatuursensor
  2. Raspberry Pi Temperature Logger
  3. TMP006 Temperature Sensor Python Library met Raspberry pi,
  4. Python- en Raspberry Pi-temperatuursensor
  5. 1-draads temperatuursensor DS1820 op Raspberry Pi (direct GPIO)
  6. Raspberry Pi 1-draads digitale thermometersensor (DS18B20)
  7. Raspberry Pi temperatuur- en lichtsensor
  8. Raspberry Pi-temperatuursensor
  9. Raspberry PI-gebaseerd IoT-project dat DHT11-sensor verbindt
  10. Lagertemperatuursensor | detector
  11. Temperatuurmetingen met infraroodsensor