Inhoudsopgave:
- Stap 1: BME280-verkenning
- Stap 2: Lijst met hardwarevereisten
- Stap 3: Interfacing
- Stap 4: Temperatuur-, druk- en vochtigheidsbewakingscode
- Stap 5: Toepassingen:
- Stap 6: Video-tutorial
Video: Berekening van vochtigheid, druk en temperatuur met behulp van BME280 en Photon Interfacing: 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
We komen verschillende projecten tegen waarbij temperatuur-, druk- en vochtigheidsbewaking nodig is. 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 omstandigheden. Zowel op industrieel niveau als persoonlijke systemen is een optimaal temperatuur-, vochtigheids- en luchtdrukniveau vereist voor het adequaat functioneren van het systeem.
Daarom geven we een complete tutorial over deze sensor, in deze tutorial gaan we de werking van de BME280 vochtigheids-, druk- en temperatuursensor met deeltjesfoton uitleggen.
Stap 1: BME280-verkenning
De elektronische sector heeft hun spel opgevoerd met de BME280-sensor, een omgevingssensor met temperatuur, luchtdruk en vochtigheid! Deze sensor is geweldig voor alle soorten weers-/omgevingsdetectie en kan zelfs worden gebruikt in I2C.
Deze precisiesensor BME280 is de beste meetoplossing voor het meten van vochtigheid met een nauwkeurigheid van ±3%, barometrische druk met een absolute nauwkeurigheid van ±1 hPa en temperatuur met een nauwkeurigheid van ±1,0°C. Omdat de druk verandert met de hoogte en de drukmetingen zo goed zijn, kun je hem ook gebruiken als hoogtemeter met een nauwkeurigheid van ±1 meter of beter! De temperatuursensor is geoptimaliseerd voor de laagste ruis en hoogste resolutie en wordt gebruikt voor temperatuurcompensatie van de druksensor en kan ook worden gebruikt voor het schatten van de omgevingstemperatuur. Metingen met de BME280 kunnen door de gebruiker of met regelmatige tussenpozen worden uitgevoerd.
Gegevensblad: Klik om een voorbeeld te bekijken of het gegevensblad van de BME280-sensor te downloaden.
Stap 2: Lijst met hardwarevereisten
We hebben volledig Dcube Store Parts gebruikt omdat ze gemakkelijk te gebruiken zijn, en iets aan alles dat mooi op een centimeterraster past, brengt ons echt op gang. U kunt gebruiken wat u maar wilt, maar het bedradingsschema gaat ervan uit dat u deze onderdelen gebruikt.
- BME280 Sensor I²C Mini Module
- I²C-schild voor deeltjesfoton
- Deeltjesfoton
- I²C-kabel
- Oplader
Stap 3: Interfacing
Het gedeelte over de interface legt in feite de bedradingsverbindingen uit die nodig zijn tussen de sensor en het deeltjesfoton. Zorgen voor correcte verbindingen is de basisbehoefte bij het werken aan elk systeem voor de gewenste output. De vereiste verbindingen zijn dus als volgt:
De BME280 werkt via I2C. Hier is het voorbeeldbedradingsschema, dat laat zien hoe elke interface van de sensor moet worden aangesloten. Out-of-the-box, het bord is geconfigureerd voor een I2C-interface, daarom raden we aan om deze interface te gebruiken als je verder agnostisch bent. Alles wat je nodig hebt zijn vier draden! Er zijn slechts vier aansluitingen nodig Vcc, Gnd, SCL en SDA-pinnen en deze worden verbonden met behulp van I2C-kabel. Deze verbindingen worden gedemonstreerd in de bovenstaande afbeeldingen.
Stap 4: Temperatuur-, druk- en vochtigheidsbewakingscode
De schone versie van de code die we zullen gebruiken om dit uit te voeren, is HIER beschikbaar.
Bij het gebruik van de sensormodule met de Arduino nemen we de library application.h en spark_wiring_i2c.h op. "application.h" en spark_wiring_i2c.h bibliotheek bevat de functies die de i2c-communicatie tussen de sensor en het deeltje vergemakkelijken.
Klik HIER om de webpagina voor apparaatbewaking te openen
Upload de code naar je bord en het zou moeten beginnen te werken! Alle gegevens kunnen worden verkregen op de webpagina zoals weergegeven in de afbeelding.
Code staat hieronder:
// Gedistribueerd met een vrije licentie.// Gebruik het zoals je wilt, winst of gratis, op voorwaarde dat het past in de licenties van de bijbehorende werken. // BME280 // Deze code is ontworpen om te werken met de BME280_I2CS I2C Mini Module die verkrijgbaar is bij ControlEverything.com. #include #include // BME280 I2C-adres is 0x76(108) #define Addr 0x76 dubbele cTemp = 0, fTemp = 0, druk = 0, vochtigheid = 0; void setup () { // Stel variabele Particle.variable ("i2cdevice", "BME280"); artikel.variabele("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Particle.variable ("druk", druk); Particle.variable ("vochtigheid", vochtigheid); // Initialiseer I2C-communicatie als MASTER Wire.begin(); // Initialiseer seriële communicatie, stel baudrate in = 9600 Serial.begin (9600); vertraging (300); } void loop() { unsigned int b1[24]; niet-ondertekende int-gegevens[8]; int dig_H1 = 0; for(int i = 0; i <24; i++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Selecteer dataregister Wire.write((136+i)); // Stop I2C-transmissie Wire.endTransmission (); // Verzoek 1 byte aan gegevens Wire.requestFrom (Addr, 1); // Lees 24 bytes aan gegevens if(Wire.available() == 1) {b1 = Wire.read(); } } // Converteer de gegevens // temp coëfficiënten int dig_T1 = (b1[0] & 0xff) + ((b1[1] & 0xff) * 256); int dig_T2 = b1[2] + (b1[3] * 256); int dig_T3 = b1[4] + (b1[5] * 256); // drukcoëfficiënten int dig_P1 = (b1[6] & 0xff) + ((b1[7] & 0xff) * 256); int dig_P2 = b1[8] + (b1[9] * 256); int dig_P3 = b1[10] + (b1[11] * 256); int dig_P4 = b1[12] + (b1[13] * 256); int dig_P5 = b1[14] + (b1[15] * 256); int dig_P6 = b1[16] + (b1[17] * 256); int dig_P7 = b1[18] + (b1[19] * 256); int dig_P8 = b1[20] + (b1[21] * 256); int dig_P9 = b1[22] + (b1[23] * 256); for(int i = 0; i <7; i++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Selecteer dataregister Wire.write((225+i)); // Stop I2C-transmissie Wire.endTransmission (); // Verzoek 1 byte aan gegevens Wire.requestFrom (Addr, 1); // Lees 7 bytes aan gegevens if(Wire.available() == 1) {b1 = Wire.read(); } } // Converteer de gegevens // vochtigheidscoëfficiënten int dig_H2 = b1[0] + (b1[1] * 256); int dig_H3 = b1[2] & 0xFF; int dig_H4 = (b1[3] * 16) + (b1[4] & 0xF); int dig_H5 = (b1[4]/16) + (b1[5] * 16); int dig_H6 = b1[6]; // Start I2C Transmission Wire.beginTransmission (Addr); // Selecteer dataregister Wire.write (161); // Stop I2C-transmissie Wire.endTransmission (); // Verzoek 1 byte aan gegevens Wire.requestFrom (Addr, 1); // Lees 1 byte aan gegevens if (Wire.available () == 1) { dig_H1 = Wire.read (); } // Start I2C Transmission Wire.beginTransmission (Addr); // Selecteer controle vochtigheidsregister Wire.write (0xF2); // Vochtigheid boven bemonsteringsfrequentie = 1 Wire.write (0x01); // Stop I2C-transmissie Wire.endTransmission (); // Start I2C Transmission Wire.beginTransmission (Addr); // Selecteer controle meetregister Wire.write (0xF4); // Normale modus, temperatuur en druk over bemonsteringssnelheid = 1 Wire.write (0x27); // Stop I2C-transmissie Wire.endTransmission (); // Start I2C Transmission Wire.beginTransmission (Addr); // Selecteer configuratieregister Wire.write (0xF5); // Stand-by-tijd = 1000 ms Wire.write (0xA0); // Stop I2C-transmissie Wire.endTransmission (); for(int i = 0; i <8; i++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Selecteer dataregister Wire.write((247+i)); // Stop I2C-transmissie Wire.endTransmission (); // Verzoek 1 byte aan gegevens Wire.requestFrom (Addr, 1); // Lees 8 bytes aan gegevens if (Wire.available () == 1) { data = Wire.read (); } } // Converteer druk- en temperatuurgegevens naar 19-bits lange adc_p = (((long)(data[0] & 0xFF) * 65536) + ((long)(data[1] & 0xFF) * 256) + (lang)(data[2] & 0xF0))/16; long adc_t = (((long)(data[3] & 0xFF) * 65536) + ((long)(data[4] & 0xFF) * 256) + (long)(data[5] & 0xF0)) / 16; // Converteer de vochtigheidsgegevens long adc_h = ((long)(data[6] & 0xFF) * 256 + (long)(data[7] & 0xFF)); // Berekeningen temperatuur offset dubbele var1 = (((double)adc_t) / 16384.0 - ((double)dig_T1) / 1024.0) * ((double)dig_T2); dubbele var2 = ((((dubbel)adc_t) / 131072.0 - ((dubbel)dig_T1) / 8192.0) * (((dubbel)adc_t)/131072.0 - ((dubbel)dig_T1)/8192.0)) * ((dubbel)dig_T3); dubbele t_fine = (lang)(var1 + var2); dubbele cTemp = (var1 + var2) / 5120,0; dubbele fTemp = cTemp * 1.8 + 32; // Berekeningen drukoffset var1 = ((dubbel)t_fine / 2.0) - 64000,0; var2 = var1 * var1 * ((dubbel)dig_P6) / 32768.0; var2 = var2 + var1 * ((dubbel)dig_P5) * 2.0; var2 = (var2 / 4.0) + (((dubbel)dig_P4) * 65536.0); var1 = (((dubbel) dig_P3) * var1 * var1 / 524288,0 + ((dubbel) dig_P2) * var1) / 524288,0; var1 = (1,0 + var1 / 32768.0) * ((dubbel)dig_P1); dubbele p = 1048576,0 - (dubbele) adc_p; p = (p - (var2 / 4096.0)) * 6250,0 / var1; var1 = ((dubbel) dig_P9) * p * p / 2147483648.0; var2 = p * ((dubbel) dig_P8) / 32768.0; dubbele druk = (p + (var1 + var2 + ((dubbel)dig_P7)) / 16.0) / 100; // Vochtigheid offset berekeningen dubbel var_H = (((dubbel)t_fine) - 76800.0); var_H = (adc_h - (dig_H4 * 64.0 + dig_H5 / 16384.0 * var_H)) * (dig_H2 / 65536.0 * (1,0 + dig_H6 / 67108864.0 * var_H * (1,0 + dig_H3 / 67108864.0 * var_H))); dubbele vochtigheid = var_H * (1,0 - dig_H1 * var_H / 524288,0); if (vochtigheid> 100,0) {vochtigheid = 100,0; } else if (vochtigheid < 0.0) { vochtigheid = 0.0; } // Gegevens uitvoeren naar dashboard Particle.publish ("Temperatuur in Celsius: ", String (cTemp)); Particle.publish("Temperatuur in Fahrenheit: ", String(fTemp)); Particle.publish("Druk: ", String(druk)); Particle.publish ("Relatieve vochtigheid:", String (vochtigheid)); vertraging (1000); }
Stap 5: Toepassingen:
BME280 temperatuur-, druk- en relatieve vochtigheidssensor heeft verschillende industriële toepassingen zoals temperatuurbewaking, thermische beveiliging van computerrandapparatuur, drukbewaking in de industrie. We hebben deze sensor ook gebruikt in weerstationtoepassingen en in kasmonitoringsystemen.
Andere toepassingen kunnen zijn:
- Contextbewustzijn, b.v. huiddetectie, detectie van kamerverandering.
- Fitnessmonitoring / welzijn - Waarschuwing met betrekking tot droogte of hoge temperaturen.
- Meting van volume en luchtstroom.
- Domotica controle.
- Regeling verwarming, ventilatie, airconditioning (HVAC).
- Internet van dingen.
- GPS-verbetering (bijv. verbetering van de tijd tot de eerste fix, gegist bestek, hellingdetectie).
- Binnennavigatie (detectie van verdieping, detectie van liften).
- Outdoor navigatie, vrije tijd en sport toepassingen.
- Weervoorspelling.
- Verticale snelheidsindicatie (stijg-/zinksnelheid).
Stap 6: Video-tutorial
Bekijk onze video-tutorial om alle stappen in de interface en het voltooien van het project te doorlopen.
Blijf op de hoogte voor de interfaces en werkblogs van andere sensoren.
Aanbevolen:
M5STACK Temperatuur, vochtigheid en druk weergeven op de M5StickC ESP32 met Visuino - Eenvoudig te doen - Ajarnpa
M5STACK Temperatuur, vochtigheid en druk weergeven op M5StickC ESP32 met Visuino - Eenvoudig te doen: In deze tutorial zullen we leren hoe ESP32 M5Stack StickC te programmeren met Arduino IDE en Visuino om de temperatuur, vochtigheid en druk weer te geven met behulp van ENV-sensor (DHT12, BMP280, BMM150)
Arduino-weerstation met BMP280-DHT11 - temperatuur, vochtigheid en druk - Ajarnpa
Arduino-weerstation met BMP280-DHT11 - Temperatuur, vochtigheid en druk: in deze tutorial leren we hoe we een weerstation kunnen maken dat een TEMPERATUUR, VOCHTIGHEID EN DRUK op het LCD-scherm weergeeft TFT 7735Bekijk een demonstratievideo
Meting van vochtigheid en temperatuur met behulp van HIH6130 en Particle Photon - Ajarnpa
Meting van vochtigheid en temperatuur met behulp van HIH6130 en Particle Photon: HIH6130 is een vochtigheids- en temperatuursensor met digitale uitgang. Deze sensoren bieden een nauwkeurigheidsniveau van ±4% RV. Met toonaangevende stabiliteit op lange termijn, echte temperatuurgecompenseerde digitale I2C, toonaangevende betrouwbaarheid, energie-efficiëntie
Meting van temperatuur en vochtigheid met HDC1000 en Particle Photon: 4 stappen
Meting van temperatuur en vochtigheid met HDC1000 en Particle Photon: De HDC1000 is een digitale vochtigheidssensor met geïntegreerde temperatuursensor die 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
Meting van vochtigheid en temperatuur met behulp van HTS221 en Particle Photon: 4 stappen
Vocht- en temperatuurmeting met HTS221 en Particle Photon: 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