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

DHT Tiny Breakout voor de Raspberry Pi

Hardwarecomponenten: Atmel ATTiny85×1DHT22 Temperatuursensor×1DHT11 Temperatuur- en vochtigheidssensor×1SparkFun Tiny AVR Programmer×1Adafruit 4.7K Ω Weerstand×3Adafruit 10K Ω Weerstand×1Adafruit 100 Ω Weerstand×1Adafruit Diffuus blauw 3mm LED×1Adafruit Tactiele Break-away×1 0.1A ″ 36-pins strip mannelijke header1 stuk @ lengte 6, 1 stuk @ lengte 2 (totaal 8 pinnen)×1Generic Jumper (0,1″)×1Arduino UNO &Genuino UNOOptioneel – gebruikt voor debuggen en testen.×1Software apps en online diensten: Microsoft Visual Studio 2015Microsoft Windows 10 IoT CoreArduino IDE

VERHAAL

Inleiding

De DHT11 en DHT22 zijn populaire temperatuur- en vochtigheidssensoren vanwege hun nauwkeurigheid tegen zeer lage kosten. Een probleem met hen is echter dat ze werken via een eigen eendraadsprotocol dat nauwkeurige timing vereist. Deze sensoren zijn moeilijk te lezen op borden met niet-realtime besturingssystemen.

Een tijdje geleden plaatste ik een artikel met de titel "DHT11 /DHT22-temperatuursensor ” demonstreert hoe u de Microsoft C++-voorbeeldcode uit C# kunt gebruiken om deze sensoren te lezen. De bibliotheek kon een meting krijgen, maar ik moest logica voor opnieuw proberen toevoegen om het betrouwbaarder te maken. Dit bleek voor de meesten succesvol te zijn, maar sommige mensen hadden problemen om dit consistent te laten werken.

Gezien de mate van interesse in het gebruik van deze sensoren op de Raspberry Pi terwijl Windows 10 IoT Core wordt uitgevoerd, heb ik besloten om een ​​tweede optie te maken die een zeer betrouwbare methode biedt om deze sensoren te lezen, terwijl de kosten laag blijven.

Overzicht

De hier gepresenteerde benadering is om de DHT-sensor aan een goedkope ATtiny85 te bevestigen en deze in te stellen als een I2C-slave-apparaat. Dit wordt bereikt met behulp van de TinyWireS-bibliotheek en het creëren van een reeks registers die kunnen worden gelezen van en geschreven voor interactie met het apparaat.

Het apparaat ondersteunt de volgende functies:

  • Een configureerbaar leesinterval om aan te geven hoe vaak de DHT-sensor moet worden gelezen. De standaardwaarde is om elke 2 seconden te lezen.
  • Een handmatige modus die het interval uitschakelt en een meting op aanvraag doet.
  • Een configureerbare bovenste en onderste temperatuurdrempel die de onderbrekingspin activeert wanneer de huidige temperatuurmeting boven of onder de drempel ligt.
  • Configuratie-opslagmodus waarmee geconfigureerde instellingen kunnen worden hersteld bij het opstarten of na een reset.
  • Configuratie-reset waardoor de opgeslagen configuratie kan worden gereset naar de standaardwaarden.
  • Sensorvermogensregeling waarmee de stroom naar de sensor kan worden in- en uitgeschakeld om stroom te besparen.
  • Programmeerbaar i2c-apparaatadres. Het standaardadres van dit apparaat is 0x26, maar het kan via een commando worden gewijzigd. Het apparaat onthoudt het adres. Bij reset keert het adres terug naar 0x26. De C#-bibliotheek bevat ook code om naar het apparaat op de i2c-bus te zoeken, zodat u het adres niet hoeft te weten om verbinding te maken.
  • Programmeerbare DHT-modelselectie. De firmware is standaard ingesteld op de DHT22, maar dit kan worden gewijzigd door een opdracht naar het apparaat te sturen om een ​​ander model te gebruiken. Het model wordt zo opgeslagen dat het na elke herstart of power cycle het te gebruiken modeltype behoudt.

De broncode

Er zijn drie sets code in dit project. De belangrijkste firmware voor het bord, een Arduino-masterschets die wordt gebruikt om het bord te testen en te demonstreren terwijl het is aangesloten op een Arduino Uno en de Window 10 IoT Code-toepassing die laat zien hoe het apparaat van de Raspberry Pi moet worden gebruikt. Alle code is beschikbaar in de gekoppelde GitHub-repository.

Het apparaat/circuit

De schakeling is klein en gebruikt slechts enkele goedkope componenten. De ATtiny85 kan bij verschillende leveranciers worden gekocht. Ik raad aan om er een paar op te pikken, omdat ze veel nuttige doeleinden hebben.

Het circuit heeft een zes-pins header waarmee het via een ether op een ander circuit of rechtstreeks op de Raspberry Pi kan worden aangesloten. De pinnen zijn als volgt gedefinieerd:

  • GND -> Sluit deze aan op aarde op je circuit of op de massapin op je Raspberry Pi.
  • RST -> Deze pin wordt gebruikt om het apparaat te resetten of opnieuw op te starten. Deze pin moet bij normaal gebruik worden aangesloten op 5V. Activeer een kortstondige LAGE puls op deze pin om het apparaat te resetten.
  • INT -> Deze pin heeft twee doelen. Wanneer de drempels zijn ingeschakeld, is deze pin HOOG wanneer een drempel wordt overschreden en anders LAAG. Bij gebruik van de energiebesparende modus wordt deze pin gebruikt om het apparaat wakker te maken door een kortstondige hoge puls te activeren.
  • SDA -> I2C SDA-lijn.
  • SCL -> I2C SCL-lijn.
  • 5V -> 5V voeding.

Er is ook een header met twee pinnen waar een jumper kan worden toegevoegd om de ingebouwde LED in te schakelen of te verwijderen om uit te schakelen.

Wanneer dit in een groter project wordt gebruikt, kan het circuit voor de DHT Tiny worden samengevoegd of ingebed in het bestaande circuit van het project. In dit geval zijn de header-pinnen en LED optioneel.

Het circuit kan ook op een apart bord worden gebouwd en met een paar draden of een verbindingskabel op je Raspberry Pi worden aangesloten.

De ATtiny85 programmeren

Laad de schets genaamd DHT_Tiny_Breakout.ino op de ATtiny85 met behulp van uw AVR-programmer. Als je geen programmeur hebt, kun je een Arduino Uno (of vergelijkbaar bord) gebruiken. Bekijk een of meer van de onderstaande artikelen voor hulp.

  • ATtiny85 programmeren met Arduino Uno op Hackster.io
  • Virtuele workshop:programmeer een ATTiny85 met Arduino
  • Een ATtiny programmeren met Arduino 1.6 (of 1.0)
  • Een ATtiny programmeren met Arduino 0022

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

Ik draai mijn chip op 16 MHz. Zie mijn artikel getiteld "ATtiny @ 16MHz ” voor instructies over hoe u dit kunt doen.

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

Breadboard het circuit

De eerste stap is om de DHT Tiny op een breadboard aan de praat te krijgen. Gebruik een breadboard van halve grootte om het circuit te bouwen door het schema en de breadboard-diagrammen te volgen die in het project zijn opgenomen.

Hier zijn een paar tips om het gemakkelijker te maken:

  • Bouw de DHT Tiny op zijn breadboard en gebruik dan een ander breadboard voor de verbinding tussen de DHT Tiny en de Uno of Raspberry Pi.
  • Het wordt aanbevolen om header-pinnen te gebruiken omdat dit het gemakkelijker maakt om de DHT Tiny als een enkele eenheid aan te sluiten en los te koppelen.
  • Als je van plan bent om de standaard uitbreekbare mannelijke headers op het breadboard te gebruiken, moet je de zwarte plastic rand aanpassen aan het midden van de pinnen zodat het in het breadboard past (zie onderstaande afbeeldingen). Gebruik een punttang om de aanpassingen te maken.
  • Als je extra lange break-away 0.1″ mannelijke headers hebt, gebruik deze dan op je breadboard. Blijf bij de headers van normale grootte als u van plan bent componenten op een PCB te solderen. De extra lange worden niet aanbevolen voor PCB's.
  • Je hebt vrouwelijke-vrouwelijke jumperdraden nodig als je de header-pinnen op het breadboard gebruikt. Als je deze niet hebt, laat dan de header-pinnen weg en gebruik mannelijk-mannelijke jumperdraden tussen de twee kaarten.
  • Houd de draden zo veel mogelijk uit de buurt van de chip, zodat u uw vingers er gemakkelijker in kunt steken en de chip eruit kunt trekken om te programmeren.

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

De Arduino Uno aansluiten

Als je geïnteresseerd bent in een snelle test, een demonstratie, of als je problemen hebt om dit werkend te krijgen met je Raspberry Pi, kun je de DHT Tiny aansluiten op een Arduino Uno (of vergelijkbaar apparaat).

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

Laad en voer de schets met de naam DHT_Tiny_Master.ino . uit . Deze schets geeft de uitvoer weer in de Seriële Monitor .

Bij het aansluiten van de I2C tussen de twee kaarten is het belangrijk om pull-up weerstanden op de SDA- en SCL-lijnen te hebben. In dit circuit zijn er twee 4.7K Ω aangesloten tussen de pinnen en 5V.

Hieronder staan ​​enkele afbeeldingen van het DHT Tiny breadboard aangesloten op de Arduino Uno.

Verbinding maken met de Raspberry Pi

Als je geïnteresseerd bent in een snelle test, een demonstratie, of als je problemen hebt om dit werkend te krijgen met je Raspberry Pi, kun je de DHT Tiny aansluiten op een Arduino Uno (of soortgelijk apparaat).

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

Bij het aansluiten van de I2C tussen de twee kaarten is het belangrijk om pull-up weerstanden op de SDA- en SCL-lijnen te hebben. In dit circuit zijn er twee 4.7K Ω aangesloten 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 worden aangesloten op de 3V3-pin op de Raspberry Pi (3V3 zit op pin 1 en 17).

Hieronder staan ​​enkele afbeeldingen van het DHT Tiny breadboard aangesloten op de Raspberry Pi 3.

De Windows 10-toepassing uitvoeren

Haal de code uit de GitHub-repository-link onder aan het project en pak deze uit op uw computer. Open de Universal Application-broncode in Visual Studio 2015 en implementeer het op de Raspberry Pi en start het vanaf de beheerdersconsole of voer het uit in debug-modus vanuit Visual Studio.

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

  • Een app implementeren met Visual Studio
  • Windows-apparaatportaal

Bekijk de videodemonstratie hieronder om te zien hoe de applicatie draait op een Raspberry Pi 3 terwijl deze is verbonden met de DHT Tiny.

Hoogtepunten van de applicatie

De Windows 10 UWP-toepassing is een demonstratietoepassing die alle functies van de DHT Tiny laat zien. De code geeft de huidige temperatuur, vochtigheid en andere registerwaarden van het apparaat weer. De gebruikersinterface biedt ook een manier om de configuratie van het apparaat te wijzigen, inclusief het apparaatadres.

DHT Tiny-bibliotheek

De voorbeeldcode maakt gebruik van een bibliotheek die is geschreven voor interactie met de DHT Tiny. Deze bibliotheek is klaar voor gebruik en kan direct in al uw applicaties worden opgenomen.

De bibliotheek ophalen van NuGet

Als u het project niet rechtstreeks in uw toepassing wilt opnemen, downloadt u gewoon de DHT Tiny-bibliotheek van NuGet met behulp van de onderstaande opdracht. Open de Package Manager Console in Visual Studio en typ de opdracht.

PM> Installatiepakket IoT.DhtTiny 

De i2c-bus voor het apparaat scannen

De DHT Tiny-bibliotheek bevat een methode die de i2c-bus doorzoekt naar alle DHT Tiny-apparaten en een lijst met adressen retourneert. Deze lijst kan worden gebruikt om een ​​of meer van de gevonden apparaten te initialiseren. Dit is vooral handig als u het adres van het apparaat hebt gewijzigd, maar niet meer weet waarop u het adres hebt ingesteld. Merk op dat de callback-methode optioneel is.

// ***// *** Noem de DHT Tiny-apparaten op de i2c-bus.// ***IEnumerable-adres =wacht op DhtTiny.FindAllDhtTinyAsync(this. FindAllDhtTinyCallback);// ***// *** Terugbelmethode// ***private void FindAllDhtTinyCallback(I2cScanEventArgs e) {int percentComplete =(int)((double)e.CurrentIndex / (double)e.Total * 100,0d); this.Status =string.Format("Apparaten zoeken [0x{0:X2}] [{1}%] [Gevonden ={2:##0}]...", e.CurrentAddress, percentComplete, e.Items .Count());}  

Schema's van DHT Tiny Breakout voor de Raspberry Pi

Softwaredemonstratie

Deze video demonstreert zowel de universele applicatie die draait op een Raspberry Pi 3 die is aangesloten op de DHT Tiny op een breadboard.

[VIDEO BINNENKORT]

Het uiteindelijke apparaat maken

De eenvoudigste en meest kosteneffectieve manier om het bord te maken, is door een PCB-prototypebord te gebruiken, zoals de Perma-Proto Quarter-sized Breadboard PCB van Adafruit. De onderstaande afbeelding toont de uitbraak met dit prototypebord. Opmerking:ik heb een dremel gebruikt om de stroomrailsecties van het bord te verwijderen.

Bekijk meer: DHT Tiny Breakout voor de Raspberry Pi


Productieproces

  1. Temperatuurbewaking op de Raspberry Pi
  2. Raspberry Pi 2 weerstation
  3. Analoge sensoren zonder analoge ingangen op de Raspberry Pi
  4. HC-SR04 ultrasone bereiksensor op de Raspberry Pi
  5. De beste accessoires voor je Raspberry Pi
  6. Analoge sensoren op de Raspberry Pi met een MCP3008
  7. SIGHT:For the Blind
  8. Qwiic HAT voor Raspberry Pi Hookup Guide
  9. Windows 10 IoT Core voor Raspberry Pi 3 Model B+
  10. De MonkMakes Raspberry Pi Robot Kit bouwen
  11. PiCy – De kleine Raspberry Pi-aangedreven robot!