Inhoudsopgave:
Video: Arduino Nano - HTS221 relatieve vochtigheid en temperatuursensor tutorial - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
HTS221 is een ultracompacte capacitieve digitale sensor voor relatieve vochtigheid en temperatuur. Het bevat een detectie-element en een mixed signal application specific integrated circuit (ASIC) om de meetinformatie te leveren via digitale seriële interfaces. Geïntegreerd met zoveel functies is dit een van de meest geschikte sensoren voor kritische vochtigheids- en temperatuurmetingen. Hier is de demonstratie met arduino nano.
Stap 1: Wat je nodig hebt.
1. Arduino Nano
2. HTS221
3. I²C-kabel
4. I²C-schild voor Arduino Nano
Stap 2: Aansluitingen:
Neem een I2C-schild voor Arduino Nano en duw het voorzichtig over de pinnen van Nano.
Sluit vervolgens het ene uiteinde van de I2C-kabel aan op de HTS221-sensor en het andere uiteinde op de I2C-afscherming.
De aansluitingen zijn weergegeven in de afbeelding hierboven.
Stap 3: Coderen:
De arduino-code voor HTS221 kan worden gedownload van onze github-repository - DCUBE Community.
Hier is de link voor hetzelfde:
github.com/DcubeTechVentures/HTS221/blob/master/Arduino/HTS221.ino
We nemen bibliotheek Wire.h op om de I2c-communicatie van de sensor met het Arduino-bord te vergemakkelijken.
U kunt de code ook hier kopiëren, deze wordt als volgt gegeven:
// Gedistribueerd met een vrije wilslicentie.
// Gebruik het zoals je wilt, winst of gratis, op voorwaarde dat het past in de licenties van de bijbehorende werken.
// HTS221
// Deze code is ontworpen om te werken met de HTS221_I2CS I2C Mini Module
#erbij betrekken
// HTS221 I2C-adres is 0x5F
#define Addr 0x5F
ongeldige setup()
{
// Initialiseer I2C-communicatie als MASTER
Draad.begin();
// Initialiseer seriële communicatie, stel baudrate in = 9600
Serieel.begin(9600);
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Selecteer gemiddeld configuratieregister
Draad.schrijven (0x10);
// Gemiddelde temperatuurmonsters = 256, gemiddelde vochtigheidsmonsters = 512
Draad.schrijven (0x1B);
// Stop I2C-verzending
Wire.endTransmission();
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Selecteer controleregister1
Draad.schrijven (0x20);
// Stroom AAN, continue update, gegevensuitvoersnelheid = 1 Hz
Draad.schrijven (0x85);
// Stop I2C-verzending
Wire.endTransmission();
vertraging (300);
}
lege lus()
{
niet-ondertekende int-gegevens[2];
niet-ondertekende int val[4];
niet ondertekend int H0, H1, H2, H3, T0, T1, T2, T3, onbewerkt;
// Vochtigheidskalibratiewaarden
for(int i = 0; i < 2; i++)
{
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Gegevensregister verzenden
Wire.write((48 + i));
// Stop I2C-verzending
Wire.endTransmission();
// Vraag 1 byte aan gegevens aan
Wire.requestFrom(Addr, 1);
// Lees 1 byte aan gegevens
if(Draad.beschikbaar() == 1)
{
data = Wire.read();
}
}
// Vochtigheidsgegevens converteren
H0 = gegevens[0] / 2;
H1 = gegevens[1] / 2;
for(int i = 0; i < 2; i++)
{
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Gegevensregister verzenden
Wire.write((54 + i));
// Stop I2C-verzending
Wire.endTransmission();
// Vraag 1 byte aan gegevens aan
Wire.requestFrom(Addr, 1);
// Lees 1 byte aan gegevens
if(Draad.beschikbaar() == 1)
{
data = Wire.read();
}
}
// Vochtigheidsgegevens converteren
H2 = (gegevens[1] * 256,0) + gegevens[0];
for(int i = 0; i < 2; i++)
{
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Gegevensregister verzenden
Wire.write((58 + i));
// Stop I2C-verzending
Wire.endTransmission();
// Vraag 1 byte aan gegevens aan
Wire.requestFrom(Addr, 1);
// Lees 1 byte aan gegevens
if(Draad.beschikbaar() == 1)
{
data = Wire.read();
}
}
// Vochtigheidsgegevens converteren
H3 = (gegevens[1] * 256,0) + gegevens[0];
// Temperatuur kalibratie waarden
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Gegevensregister verzenden
Draad.schrijven (0x32);
// Stop I2C-verzending
Wire.endTransmission();
// Vraag 1 byte aan gegevens aan
Wire.requestFrom(Addr, 1);
// Lees 1 byte aan gegevens
if(Draad.beschikbaar() == 1)
{
T0 = Draad.lezen();
}
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Gegevensregister verzenden
Draad.schrijven (0x33);
// Stop I2C-verzending
Wire.endTransmission();
// Vraag 1 byte aan gegevens aan
Wire.requestFrom(Addr, 1);
// Lees 1 byte aan gegevens
if(Draad.beschikbaar() == 1)
{
T1 = Draad.lezen();
}
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Gegevensregister verzenden
Draad.schrijven (0x35);
// Stop I2C-verzending
Wire.endTransmission();
// Vraag 1 byte aan gegevens aan
Wire.requestFrom(Addr, 1);
// Lees 1 byte aan gegevens
if(Draad.beschikbaar() == 1)
{
onbewerkt = Draad.lezen();
}
onbewerkt = onbewerkt & 0x0F;
// Converteer de temperatuurkalibratiewaarden naar 10-bits
T0 = ((ruwe & 0x03) * 256) + T0;
T1 = ((ruwe & 0x0C) * 64) + T1;
for(int i = 0; i < 2; i++)
{
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Gegevensregister verzenden
Wire.write((60 + i));
// Stop I2C-verzending
Wire.endTransmission();
// Vraag 1 byte aan gegevens aan
Wire.requestFrom(Addr, 1);
// Lees 1 byte aan gegevens
if(Draad.beschikbaar() == 1)
{
data = Wire.read();
}
}
// Converteer de gegevens
T2 = (gegevens[1] * 256,0) + gegevens[0];
for(int i = 0; i < 2; i++)
{
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Gegevensregister verzenden
Wire.write((62 + i));
// Stop I2C-verzending
Wire.endTransmission();
// Vraag 1 byte aan gegevens aan
Wire.requestFrom(Addr, 1);
// Lees 1 byte aan gegevens
if(Draad.beschikbaar() == 1)
{
data = Wire.read();
}
}
// Converteer de gegevens
T3 = (gegevens[1] * 256,0) + gegevens[0];
// Start I2C-verzending
Wire.beginTransmission (Addr);
// Gegevensregister verzenden
Draad.schrijven (0x28 | 0x80);
// Stop I2C-verzending
Wire.endTransmission();
// Vraag 4 bytes aan gegevens aan
Wire.requestFrom(Addr, 4);
// Lees 4 bytes aan gegevens
// vochtigheid msb, vochtigheid lsb, temp msb, temp lsb
if(Draad.beschikbaar() == 4)
{
val[0] = Draad.lezen();
val[1] = Draad.lezen();
val[2] = Draad.lezen();
val[3] = Draad.lezen();
}
// Converteer de gegevens
vlottervochtigheid = (val[1] * 256,0) + val[0];
vochtigheid = ((1,0 * H1) - (1,0 * H0)) * (1,0 * vochtigheid - 1,0 * H2) / (1,0 * H3 - 1,0 * H2) + (1,0 * H0);
int temp = (val[3] * 256) + val[2];
float cTemp = (((T1 - T0) / 8.0) * (temp - T2)) / (T3 - T2) + (T0 / 8.0);
float fTemp = (cTemp * 1.8) + 32;
// Gegevens uitvoeren naar seriële monitor
Serial.print("Relatieve vochtigheid: ");
Seriële.afdruk (vochtigheid);
Serial.println ("% RV");
Serial.print ("Temperatuur in Celsius: ");
Serieel.print(cTemp); Serieel.println("C");
Serial.print("Temperatuur in Fahrenheit: ");
Serieel.print(fTemp);
Serieel.println ("F");
vertraging (500);
}
Stap 4: Toepassingen:
HTS221 kan worden gebruikt in verschillende consumentenproducten zoals luchtbevochtigers en koelkasten enz. Deze sensor vindt ook zijn toepassing in een breder gebied, waaronder slimme domotica, industriële automatisering, beademingsapparatuur, het volgen van activa en goederen.
Aanbevolen:
Berekening van vochtigheid, druk en temperatuur met behulp van BME280 en Photon Interfacing: 6 stappen
Berekening van vochtigheid, druk en temperatuur met behulp van BME280 en Photon Interfacing. We komen verschillende projecten tegen die temperatuur-, druk- en vochtigheidsbewaking vereisen. We realiseren ons dus dat deze parameters eigenlijk een cruciale rol spelen bij het hebben van een schatting van de werkefficiëntie van een systeem bij verschillende atmosferische cond
Een kas automatiseren met LoRa! (Deel 1) -- Sensoren (temperatuur, vochtigheid, bodemvocht): 5 stappen
Een kas automatiseren met LoRa! (Deel 1) || Sensoren (Temperatuur, Vochtigheid, Bodemvocht): In dit project laat ik zien hoe ik een kas heb geautomatiseerd. Dat betekent dat ik je laat zien hoe ik de kas heb gebouwd en hoe ik de stroom- en automatiseringselektronica heb aangesloten. Ik zal je ook laten zien hoe je een Arduino-bord programmeert dat L
Meting van temperatuur en vochtigheid met HDC1000 en Arduino Nano: 4 stappen
Meting van temperatuur en vochtigheid met HDC1000 en Arduino Nano: De HDC1000 is een digitale vochtigheidssensor met geïntegreerde temperatuursensor die een uitstekende meetnauwkeurigheid biedt bij een zeer laag stroomverbruik. Het apparaat meet de vochtigheid op basis van een nieuwe capacitieve sensor. De vochtigheids- en temperatuursensoren zijn fa
THINGSPEAK TEMPERATUUR EN VOCHTIGHEID APP MET ESP8266: 9 stappen
THINGSPEAK TEMPERATUUR- EN VOCHTIGHEID-APP MET ESP8266: Terwijl ik aan mijn elektronische spullen sleutelde, kreeg ik het idee om een webgebaseerde weer-app te maken. Deze web-app gebruikt de SHT31-sensor voor het verkrijgen van de realtime temperatuur- en vochtigheidsgegevens. We hebben ons project geïmplementeerd op de ESP8266 WiFi-module. Online of offline
Arduino + temperatuur + vochtigheid: 4 stappen
Arduino + Temperatuur + Vochtigheid: Een eenvoudige temperatuursensor die gebruik maakt van één LM35 Precision Temperature Sensor, Vochtigheidssensor en Arduino, zodat u uw toekomstige projecten kunt aansluiten. Het circuit stuurt seriële informatie over de temperatuur en vochtigheid, zodat u deze kunt gebruiken op uw computer