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 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino

Onderdelen en benodigdheden

Onderdeel Aantal Opmerkingen
DHT11 Temperatuur & Vochtigheid Sensor (4 pinnen) 1 Meet 20-90% RH, 0-50°C, 3-5.5V DC, OneWire protocol
Raspberry Pi 2 Model B 1 Voor Windows 10 IoT Core / Raspbian tests
Arduino UNO 1 Vergelijkingstest platform
Man-naar-Man Jumper Draad 3 Voor breadboard verbindingen
Breadboard (standaard) 1 Half-size aanbevolen
4,7 kΩ Weerstand 1 Pull-up voor data lijn
Cobbler Breakout Kit 1 Voor Raspberry Pi GPIO toegang op breadboard

Software en online diensten

  • Microsoft Windows 10 IoT Core – OS voor Raspberry Pi
  • Arduino IDE – Voor Arduino sketch upload
  • Raspberry Pi Raspbian – Linux OS voor Pi
  • Microsoft Visual Studio 2015 – C#/C++ development voor IoT Core
  • WinSCP – SFTP client voor bestandsoverdracht naar Pi
  • PuTTY – SSH client voor Pi toegang

Over dit project

Inleiding

De DHT11 is een 4-pins (één pin ongebruikt) temperatuur- en vochtigheidsensor die 20-90% relatieve vochtigheid en 0-50°C meet. De sensor werkt op 3-5.5V DC en communiceert via een eigen OneWire protocol dat zeer nauwkeurige timing vereist. LOW en HIGH bits worden gecodeerd door de duur dat het signaal HIGH is. Een complete meting duurt maximaal 23,4 ms (inclusief 18 ms startvertraging en 5,4 ms data venster). Individuele signalen variëren van 20 μs tot 80 μs.

Achtergrond: Windows 10 IoT Core uitdaging

Toen Windows 10 IoT Core beschikbaar kwam, probeerde ik de DHT11 in C# uit te lezen. Snel bleek dat C# op IoT Core niet snel genoeg is voor het OneWire protocol. Op het Microsoft forum hadden meerdere ontwikkelaars hetzelfde probleem. Microsoft reageerde dat ze aan een oplossing werkten, maar wie kan wachten?

Toen Microsoft een C++ voorbeeld publiceerde voor OneWire met de DHT11 op IoT Core, zag ik de kans om dit naar C# te porteren. Dit project maakt van dat voorbeeld een herbruikbare C# bibliotheek.

Bibliotheek

De bibliotheek is een herstructurering van Microsoft's originele code – ik claim geen crediet voor de kernimplementatie.

De bibliotheek biedt een eenvoudige Dht11 klasse in de namespace Sensors.Dht.

Gebruik in C#

using Sensors.Dht;
GpioPin pin = GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive);
Dht11 dht11 = new Dht11(pin, GpioPinDriveMode.Input); // Input = externe pull-up gebruiken
DhtReading reading = await dht11.GetReadingAsync().AsTask();

Er is een overload voor maximale pogingen (standaard 20).

DhtReading structuur

public value struct DhtReading {
    bool TimedOut;
    bool IsValid;
    double Temperature; // in °C
    double Humidity;    // in % RH
    int RetryCount;
};

Observaties

Zelfs in C++ lukt niet elke meting – daarom de retry optie (ook in Microsoft's voorbeeld). Ik vergeleek prestaties op drie platforms:

  • Raspberry Pi 2 met Windows 10 IoT Core (C#)
  • Raspberry Pi 2 met Raspbian (C met wiringPi)
  • Arduino Uno (C++)

De bijbehorende code voor alle drie platforms staat in de GitHub repository. De video demonstreert en vergelijkt de uitvoer.

Aan de slag

Schakeling voor Raspberry Pi 2 bouwen

Gebruik het schema onderaan de pagina als referentie (draadkleuren zijn optioneel, gekozen voor duidelijkheid).

  1. Plaats de T-vormige cobbler aan de linkerkant van het half-size breadboard (nummers beginnen bij 1). Linker twee pinnen in E1 en F1, rechter twee in E20 en F20.
  2. Plaats de 4,7 kΩ weerstand tussen A4 en 3V3.
  3. Verbind oranje jumper tussen B4 en F28 (data lijn).
  4. Verbind rode jumper tussen F29 en 3V3 (voeding +).
  5. Verbind zwarte jumper tussen F30 en GND (voeding -).
  6. Plaats DHT11 sensor in J30 (-), J29 (+), J28 (data).
  7. Sluit lintkabel aan op cobbler en Raspberry Pi.

Schakeling voor Arduino bouwen

  1. Plaats 4,7 kΩ weerstand tussen E12 en E13.
  2. Verbind witte jumper tussen D13 en Arduino Pin 5 (data).
  3. Verbind rode jumper tussen D12 en Arduino 5V.
  4. Verbind zwarte jumper tussen D11 en Arduino GND.
  5. Plaats DHT11 sensor in A11 (-), A12 (+), A13 (data).
  6. Sluit USB kabel aan op computer en Arduino.
DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino
DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino
DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino
DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino
DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino
DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino
DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino
DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino
DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino

Applicatie starten op Raspberry Pi (Windows 10 IoT Core)

  1. Kies Debug, ARM configuratie, Remote Machine
  2. Rechtermuisklik project → Properties → Debug tab
  3. Vul Raspberry Pi 2 IP-adres in bij "Remote machine", vink "Use authentication" uit
  4. Druk F5 – eerste deploy kan enkele minuten duren

Applicatie starten op Arduino

  1. Open sketch Dht11_Speed uit GitHub in Arduino IDE
  2. Upload naar Arduino (Ctrl+U)
  3. Open Serial Monitor (Ctrl+Shift+M)

De video demonstreert dit proces stap voor stap.

Applicatie starten op Raspbian

  1. Kopieer Dht11.c naar de Raspberry Pi (bijv. met WinSCP)
  2. Installeer wiringPi: sudo apt-get install wiringpi
  3. Compileer: gcc -o Dht11_Speed Dht11_Speed.c -L/usr/local/lib -lwiringPi -std=c99 -lm
  4. Draai: sudo ./Dht11_Speed 1000 10 (1000ms delay, 10 samples)

De video toont gedetailleerd hoe je de code kopieert en compileert op Raspbian. Voor Raspbian installatie: raspberrypi.org.

Video

De video demonstreert de applicatie op alle drie platforms. Bekijk op YouTube in Theater-modus voor beste kwaliteit.

Broncode

Visual Studio 2015 C#/C++ Broncode op GitHub

Schema's

Dht11_RPi2.fzz – Fritzing bestand voor Raspberry Pi schakeling

DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino

Dht11_Arduino.fzz – Fritzing bestand voor Arduino schakeling

DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino DHT11 & DHT22 Temperatuur & Vochtigheid Sensor Kit voor Raspberry Pi & Arduino

Productieproces

  1. Bouw Een Raspberry Pi Temperatuur Logger Met Een $5 I2C Sensor
  2. TMP006 Infrarood temperatuursensor met Raspberry Pi: Python bibliotheek & installatiegids
  3. Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
  4. Hoe een DS1820 One-Wire temperatuursensor aan te sluiten op een Raspberry Pi via GPIO
  5. Hoe een DS18B20 One-Wire Digitale Thermometer aan te Sluiten op een Raspberry Pi – Stapsgewijze Handleiding
  6. Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
  7. Een Raspberry Pi thuistemperatuurmonitor bouwen met MCP9808, InfluxDB & Grafana
  8. Raspberry Pi 3 verbinden met DHT11-sensor en data uploaden naar ThingsIo.ai-cloud
  9. Precieze infrarood temperatuurmeting voor kleurgevoelige processen
  10. Precisie lager temperatuursensor – Nauwkeurige detectie & monitoring
  11. DS18B20 Temperatuursensor – Precieze 1-Wire Digitale Thermometer voor Industriëel & Consumptief Gebruik