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

Compacte DHT temperatuur- en vochtigheidsbreakout voor Raspberry Pi – ATtiny85 & DHT22/DHT11

Hardwarecomponenten: Atmel ATTiny85 × 1, DHT22 Temperatuursensor × 1, DHT11 Temperatuur- & Vochtigheidssensor × 1, SparkFun Tiny AVR Programmeerder × 1, Adafruit 4,7K Ω Weerstand × 3, Adafruit 10K Ω Weerstand × 1, Adafruit 100 Ω Weerstand × 1, Adafruit Diffused Blue 3mm LED × 1, Adafruit Tactile Button Switch × 1, Adafruit Break-away 0,1″ 36-pin strip male header 1 stuk @ lengte 6, 1 stuk @ lengte 2 (totaal 8 pins) × 1, Generic Jumper (0,1″) × 1, Arduino UNO & Genuino UNO Optioneel – gebruikt voor debugging en testen. × 1 Software-apps en online diensten: Microsoft Visual Studio 2015, Microsoft Windows 10 IoT Core, Arduino IDE

VERHAAL

Inleiding

De DHT11 en DHT22 zijn populaire temperatuur- en vochtigheidssensoren vanwege hun nauwkeurigheid tegen een zeer lage prijs. Een probleem met hen is dat ze werken via een proprietair one-wire-protocol dat nauwkeurige timing vereist. Deze sensoren hebben zich als moeilijk te lezen op boards met non-realtime besturingssystemen bewezen.

Een tijd geleden postte ik een artikel getiteld "DHT11 /DHT22 Temperatuursensor" waarin werd gedemonstreerd hoe de Microsoft C++-voorbeeldcode vanuit C# te gebruiken om deze sensoren uit te lezen. De bibliotheek kon een meting krijgen, maar ik moest herhaallogica toevoegen om het betrouwbaarder te maken. Dit bleek succesvol voor de meeste, maar sommige mensen hadden problemen om dit consistent werkend te krijgen.

Gegeven het belangstelling in het gebruik van deze sensoren op de Raspberry Pi met Windows 10 IoT Core, besloot ik een tweede optie te creëren die een zeer betrouwbare methode biedt om deze sensoren uit te lezen, terwijl de lage kosten behouden blijven.

Overzicht

Het apparaat ondersteunt de volgende functies:

  • Een configureerbaar leesinterval om op te geven hoe vaak de DHT-sensor gelezen moet worden. De standaard is om elke 2 seconden te lezen.
  • Een handmatige modus die het interval uitschakelt en een meting op verzoek uitvoert.
  • Een configureerbare boven- en ondergrens voor temperatuur die de interrupt-pin activeert wanneer de huidige temperatuurmeting boven of onder de drempel ligt.
  • Configuratie-opslagmodus die geconfigureerde instellingen herstelt na opstart of na een reset.
  • Configuratiereset waardoor de opgeslagen configuratie teruggezet wordt naar standaardwaarden.
  • Sensorvoedingscontrole die toestaat de voeding naar de sensor in- en uit te schakelen om stroom te besparen.
  • Programmeerbaar I2C-apparaatadres. Het standaardadres van dit apparaat is 0x26, maar dit kan via een commando worden gewijzigd. Het apparaat onthoudt het adres. Na reset keert het adres terug naar 0x26. De C#-bibliotheek bevat ook code om het apparaat op de I2C-bus te zoeken, zodat u het adres niet hoeft te weten om te verbinden.
  • Programmeerbare DHT-modelselectie. De firmware staat standaard op de DHT22, maar dit kan worden gewijzigd door een commando naar het apparaat te sturen om een ander model te gebruiken. Het model wordt opgeslagen, zodat het na elke herstart of power-cycle het modeltype onthoudt.

De broncode

Er zijn drie sets code in dit project. De hoofd-firmware voor het bord, een Arduino-master-schetch gebruikt om het bord te testen en te demonstreren terwijl het verbonden is met een Arduino Uno, en de Windows 10 IoT Code-applicatie die demonstreert hoe het apparaat vanaf de Raspberry Pi te gebruiken. Alle code is beschikbaar in de gelinkte GitHub-repository.

Het apparaat/schakeling

Het circuit is klein en gebruikt slechts een paar goedkope componenten. De ATtiny85 kan bij verschillende leveranciers gekocht worden. Ik raad aan om er een paar aan te schaffen omdat ze veel nuttige doeleinden dienen.

Het circuit heeft een zestig-pins-header waarmee het verbonden kan worden met een ander circuit of direct met de Raspberry Pi. De pinnen zijn als volgt gedefinieerd:

  • GND → Verbind dit met ground op uw circuit of met de ground-pin op uw Raspberry Pi.
  • RST → Deze pin wordt gebruikt om het apparaat te resetten of te herstarten. Deze pin moet onder normale werking verbonden zijn met 5V. Om het apparaat te resetten, trigger een momentane LOW-puls op deze pin.
  • INT → Deze pin heeft twee doeleinden. Wanneer de drempels ingeschakeld zijn, zal deze pin HIGH zijn wanneer een drempel wordt overschreden en LOW anders. Bij gebruik van power-save-modus wordt deze pin gebruikt om het apparaat te wekken door een momentane hoge puls te triggeren.
  • SDA → I2C SDA-lijn.
  • SCL → I2C SCL-lijn.
  • 5V → 5V-voeding.

Er is ook een twee-pins-header waar een jumper kan worden toegevoegd om de on-board LED in te schakelen, of verwijderd om uit te schakelen.

Bij gebruik in een groter project kan het circuit voor de DHT Tiny samengevoegd of ingebed worden in het bestaande circuit van het project. In dat geval zijn de header-pins en LED optioneel.

Het circuit kan ook op een apart bord gebouwd worden en met een paar draden of een verbindingskabel aan uw Raspberry Pi worden gekoppeld.

De ATtiny85 programmeren

Laad de schets genaamd DHT_Tiny_Breakout.ino op de ATtiny85 met uw AVR-programmeerder. Als u geen programmeerder heeft, kunt u een Arduino Uno (of vergelijkbaar bord) gebruiken. Bekijk een of meer van de onderstaande artikelen voor hulp.

  • Programming ATtiny85 with Arduino Uno op Hackster.io
  • Virtual Workshop: Program an ATTiny85 with Arduino
  • Programming an ATtiny w/ Arduino 1.6 (or 1.0)
  • Programming an ATtiny w/ Arduino 0022

Ik gebruik de SparkFun Tiny AVR Programmeerder om mijn ATtiny85 te laden.

Ik draai mijn chip op 16 MHz. Zie mijn artikel getiteld "ATtiny @ 16MHz" voor instructies hoe dit te doen.

Bij gebruik van de ATtiny85 vereist de slave-schets de TinyWireS-bibliotheek geïnstalleerd in uw bibliothekenmap. Deze bibliotheek kan gedownload worden van https://github.com/rambo/TinyWire.

Het circuit op breadboard bouwen

De eerste stap is om de DHT Tiny op een breadboard werkend te krijgen. Met een half-size breadboard, bouw het circuit door het schema en breadboard-diagrammen in het project te volgen.

Hier zijn een paar tips om het makkelijker te maken:

  • Bouw de DHT Tiny op een eigen breadboard en gebruik dan een ander breadboard voor de verbinding tussen de DHT Tiny en de Uno of Raspberry Pi.
  • Het gebruik van header-pins wordt aanbevolen omdat het makkelijker maakt om de DHT Tiny als een enkele eenheid te verbinden en te ontkoppelen.
  • Als u van plan bent de standaard break-away male headers op het breadboard te gebruiken, moet u de zwarte plastic rand naar het midden van de pins aanpassen zodat het in het breadboard past (zie afbeeldingen hieronder). Gebruik een tang om de aanpassingen te maken.
  • Als u extra-lange break-away 0,1″ male headers heeft, gebruik deze op uw breadboard. Blijf bij de normale grootte headers als u van plan bent componenten op een PCB te solderen. De extra lange worden niet aanbevolen voor PCB's.
  • U hebt female-female jumper wires nodig als u de header-pins op het breadboard gebruikt. Als u die niet heeft, laat de header-pins weg en gebruik male-male jumper wires tussen de twee borden.
  • Houd de draden zoveel mogelijk van de chip af, zodat het makkelijker is om uw vingers ertussen te krijgen en de chip te halen voor programmeren.

Hieronder zijn enkele afbeeldingen van de breadboard-versie van mijn DHT Tiny.

Verbinden met de Arduino Uno

Als u geïnteresseerd bent in een snelle test, een demonstratie, of problemen heeft om dit werkend te krijgen met uw Raspberry Pi, kunt u de DHT Tiny aan een Arduino Uno (of vergelijkbaar apparaat) verbinden.

  • Verbind de GND-pin met de GND in op de Uno.
  • Verbind de 5V-pin met de 5V in op de Uno.
  • Verbind de RST-pin met D4 op de Uno.
  • Verbind de SDA-pin met A4 op de Uno.
  • Verbind de SCL-pin met A5 op de Uno.
  • Verbind de INT-pin met D3 op de Uno en schakel de LED in via de jumper.

Laad en voer de schets genaamd DHT_Tiny_Master.ino uit. Deze schets toont output in de Serial Monitor.

Bij het verbinden van de I2C tussen de twee borden is het belangrijk om pull-up-weerstanden op de SDA- en SCL-lijnen te hebben. In dit circuit zitten twee 4,7K Ω verbonden tussen de pinnen en 5V.

Hieronder zijn enkele afbeeldingen van de DHT Tiny breadboard verbonden met de Arduino Uno.

Verbinden met de Raspberry Pi

Als u geïnteresseerd bent in een snelle test, een demonstratie, of problemen heeft om dit werkend te krijgen met uw Raspberry Pi, kunt u de DHT Tiny aan een Arduino Uno (of vergelijkbaar apparaat) verbinden.

  • Verbind de GND-pin met GND (pin 9) op de Raspberry Pi 2/3.
  • Verbind de 5V-pin met 5V (pin 2) op de Raspberry Pi 2/3.
  • Verbind de RST-pin met GPIO4 (pin 7) op de Raspberry Pi 2/3.
  • Verbind de SDA-pin met SDA (pin 3) op de Raspberry Pi 2/3.
  • Verbind de SCL-pin met SCL (pin 5) op de Raspberry Pi 2/3.
  • Verbind de INT-pin met GPIO17 (pin 11) en schakel de LED in.

Bij het verbinden van de I2C tussen de twee borden is het belangrijk om pull-up-weerstanden op de SDA- en SCL-lijnen te hebben. In dit circuit zitten twee 4,7K Ω verbonden tussen de pinnen en 3V3.

HEEL BELANGRIJK! Het DHT Tiny-bord wordt gevoed door de 5V-pin op de Raspberry Pi, maar de pull-up-weerstanden moeten verbonden zijn met de 3V3-pin op de Raspberry Pi (3V3 zit op pinnen 1 en 17).

Hieronder zijn enkele afbeeldingen van de DHT Tiny breadboard verbonden met de Raspberry Pi 3.

De Windows 10-applicatie uitvoeren

Haal de code uit de GitHub-repository-link onderaan het project en pak het uit op uw computer. Open de Universal Application-broncode in Visual Studio 2015 en deploy het naar de Raspberry Pi en start het vanaf de admin-console of draai het in debug-modus vanuit Visual Studio.

Als dit de eerste keer is dat u code vanuit Visual Studio voor een Windows 10 IoT Core-applicatie draait, bekijk dan deze artikelen van Microsoft:

  • Deploying an App with Visual Studio
  • Windows Device Portal

Bekijk de videodemonstratie hieronder om de applicatie draaiend te zien op een Raspberry Pi 3 terwijl verbonden met de DHT Tiny.

Applicatie-highlights

De Windows 10 UWP-applicatie is een demonstratie-applicatie die alle functies van de DHT Tiny toont. De code toont de huidige temperatuur, vochtigheid en andere registerwaarden van het apparaat. De UI biedt ook een manier om de configuratie van het apparaat te wijzigen, inclusief het apparaatadres.

DHT Tiny-bibliotheek

De voorbeeldcode gebruikt een bibliotheek geschreven om te interacteren met de DHT Tiny. Deze bibliotheek is klaar voor gebruik en kan direct in al uw applicaties opgenomen worden.

De bibliotheek van NuGet halen

Als u het project niet direct in uw applicatie wilt opnemen, download dan de DHT Tiny-bibliotheek van NuGet met het onderstaande commando. Open de Package Manager Console in Visual Studio en typ het commando.

PM> Install-Package IoT.DhtTiny

De I2C-bus scannen op het apparaat

De DHT Tiny-bibliotheek bevat een methode die de I2C-bus scant op eventuele DHT Tiny-apparaten en een lijst met adressen retourneert. Deze lijst kan gebruikt worden om een of meer van de gevonden apparaten te initialiseren. Dit is vooral handig als u het adres van het apparaat heeft gewijzigd maar niet kunt onthouden wat u ingesteld hebt. Let op dat de callback-methode optioneel is.

// ***
// *** De DHT Tiny-apparaten op de i2c-bus opsommen.
// ***
IEnumerable<byte> address = await DhtTiny.FindAllDhtTinyAsync(this.FindAllDhtTinyCallback);
// ***
// *** Callback-methode
// ***
private void FindAllDhtTinyCallback(I2cScanEventArgs e) {
    int percentComplete = (int)((double)e.CurrentIndex / (double)e.Total * 100.0d);
    this.Status = string.Format("Locating devices [0x{0:X2}] [{1}%] [Found = {2:##0}]...", e.CurrentAddress, percentComplete, e.Items.Count());
}

Schema's van DHT Tiny Breakout voor de Raspberry Pi

Software-demonstratie

Deze video demonstreert zowel de Universal Application draaiend op een Raspberry Pi 3 verbonden met de DHT Tiny op een breadboard.

[VIDEO KOMT BINNENKORT]

Het finale apparaat maken

De makkelijkste en meest kosteneffectieve manier om het bord te maken is een PCB-prototypebord te gebruiken zoals het Perma-Proto Quarter-sized Breadboard PCB van Adafruit. De afbeelding hieronder toont de breakout met dit prototypebord. Let op: ik gebruikte een dremel om de voedingsrail-secties van het bord te verwijderen.

Zie Meer: DHT Tiny Breakout voor de Raspberry Pi

Productieproces

  1. Professionele temperatuurbewaking met Raspberry Pi en DS18B20
  2. Een buitenweerstation bouwen met Raspberry Pi 2 en ADS-WS1
  3. Analoge Sensoren Meten op Raspberry Pi Zonder Native ADC
  4. Een HC-SR04 ultrasone sensor verbinden met een Raspberry Pi – Een praktische gids
  5. Top accessoires om het volledige potentieel van je Raspberry Pi te ontgrendelen
  6. Een MCP3008 ADC gebruiken om analoge sensoren met Raspberry Pi uit te lezen
  7. SIGHT: Slimme Bril die Blinden Sterker Maakt
  8. SparkFun Qwiic HAT voor Raspberry Pi – Complete Aansluithandleiding
  9. Windows 10 IoT Core Installeren op Raspberry Pi 3 Model B+: Stap-voor-stap Handleiding
  10. Bouw Je Eigen Raspberry Pi Robot met de MonkMakes RRB2 Kit – Een Gedetailleerde Gids
  11. PiCy: Bouw Je Eigen Kleine Raspberry Pi-aangedreven Robot