INHOUDSOPGAWE:
- Stap 1: BME280 -verkenning
- Stap 2: Lys met vereistes vir hardeware
- Stap 3: Interfacing
- Stap 4: Temperatuur-, druk- en humiditeitsmoniteringskode
- Stap 5: Aansoeke:
- Stap 6: Video -tutoriaal
Video: Vogtigheid, druk en temperatuurberekening met behulp van BME280 en fotoninterfacing: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Ons kom op verskillende projekte af wat temperatuur-, druk- en humiditeitsmonitering vereis. Ons besef dus dat hierdie parameters eintlik 'n belangrike rol speel in die berekening van die werkdoeltreffendheid van 'n stelsel onder verskillende atmosferiese toestande. Sowel op industriële vlak as in persoonlike stelsels is 'n optimale temperatuur, humiditeit en barometriese drukvlak nodig vir die voldoende werking van die stelsel.
Daarom bied ons 'n volledige handleiding oor hierdie sensor; in hierdie tutoriaal gaan ons die werking van die BME280 humiditeits-, druk- en temperatuursensor met deeltjiefoton verduidelik.
Stap 1: BME280 -verkenning
Die elektroniese sektor het hul spel versterk met die BME280 -sensor, 'n omgewingsensor met temperatuur, barometriese druk en humiditeit! Hierdie sensor is ideaal vir alle soorte weer-/omgewingswaarneming en kan selfs in I2C gebruik word.
Hierdie presisiesensor BME280 is die beste sensoroplossing vir die meting van humiditeit met ± 3% akkuraatheid, barometriese druk met ± 1 hPa absolute akkuraatheid en temperatuur met ± 1.0 ° C akkuraatheid. Omdat die druk met die hoogte verander en die drukmetings so goed is, kan u dit ook as 'n hoogtemeter gebruik met ± 1 meter of beter akkuraatheid! die druksensor en kan ook gebruik word vir die skatting van die omgewingstemperatuur. Metings met die BME280 kan deur die gebruiker uitgevoer word of gereeld uitgevoer word.
Gegevensblad: Klik hier om die datablad van die BME280 -sensor voor te sien of af te laai.
Stap 2: Lys met vereistes vir hardeware
Ons het heeltemal Dcube Store -onderdele gebruik omdat dit maklik is om te gebruik, en iets omtrent alles wat mooi op 'n sentimeter rooster pas, kry ons regtig aan die gang. U kan gebruik wat u wil, maar die bedradingsdiagram neem aan dat u hierdie dele gebruik.
- BME280 Sensor I²C Mini Module
- I²C -skild vir deeltjiesfoton
- Deeltjie foton
- I²C kabel
- Kragadapter
Stap 3: Interfacing
Die koppelvlakgedeelte verduidelik basies die bedradingverbindings wat tussen die sensor en die deeltjiefoton benodig word. Die korrekte noodsaaklikheid is om korrekte verbindings te verseker terwyl u aan 'n stelsel werk vir die gewenste uitset. Die vereiste verbindings is dus soos volg:
Die BME280 werk oor I2C. Hier is die voorbeeld -bedradingsdiagram wat demonstreer hoe om elke koppelvlak van die sensor aan te sluit. Uit die boks is die bord gekonfigureer vir 'n I2C-koppelvlak, daarom beveel ons aan om hierdie koppelvlak te gebruik as u anders agnosties is. Al wat u nodig het, is vier drade! Slegs vier verbindings is nodig Vcc-, Gnd-, SCL- en SDA -penne en dit word met behulp van I2C -kabel verbind. Hierdie verbindings word getoon in die foto's hierbo.
Stap 4: Temperatuur-, druk- en humiditeitsmoniteringskode
Die skoon weergawe van die kode wat ons sal gebruik om dit uit te voer, is HIER beskikbaar.
Terwyl ons die sensormodule met die Arduino gebruik, bevat ons die biblioteek application.h en spark_wiring_i2c.h. "application.h" en spark_wiring_i2c.h biblioteek bevat die funksies wat die i2c kommunikasie tussen die sensor en die deeltjie vergemaklik.
Klik HIER om die webblad vir toestelmonitering oop te maak
Laai die kode op u bord op en dit behoort te begin werk! Al die data kan op die webblad verkry word, soos op die foto getoon.
Die kode word hieronder verskaf:
// Versprei met 'n vrywillige lisensie. // Gebruik dit op enige manier wat u wil, wins of gratis, mits dit in die lisensies van die gepaardgaande werke pas. // BME280 // Hierdie kode is ontwerp om te werk met die BME280_I2CS I2C Mini Module beskikbaar by ControlEverything.com. #include #include // BME280 I2C -adres is 0x76 (108) #define Addr 0x76 dubbel cTemp = 0, fTemp = 0, druk = 0, humiditeit = 0; ongeldige opstelling () {// Stel veranderlike Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Deeltjie.veranderlik ("druk", druk); Deeltjie.veranderlik ("humiditeit", humiditeit); // Initialiseer I2C -kommunikasie as MASTER Wire.begin (); // Initialiseer Serial Communication, stel baud rate = 9600 Serial.begin (9600); vertraging (300); } leemte -lus () {unsigned int b1 [24]; ongetekende int data [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Kies dataregister Wire.write ((136+i)); // Stop I2C Transmission Wire.endTransmission (); // Versoek 1 greep data Wire.requestFrom (Addr, 1); // Lees 24 grepe data as (Wire.available () == 1) {b1 = Wire.read (); }} // Skakel die data om // tempkoëffisiënte 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); // drukkoëffisiënte 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); // Kies dataregister Wire.write ((225+i)); // Stop I2C Transmission Wire.endTransmission (); // Versoek 1 greep data Wire.requestFrom (Addr, 1); // Lees 7 grepe data as (Wire.available () == 1) {b1 = Wire.read (); }}} // Skakel die data om // humiditeitskoëffisiënte 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]; // Begin I2C Transmission Wire.beginTransmission (Addr); // Kies dataregister Wire.write (161); // Stop I2C Transmission Wire.endTransmission (); // Versoek 1 greep data Wire.requestFrom (Addr, 1); // Lees 1 greep data as (Wire.available () == 1) {dig_H1 = Wire.read (); } // Begin I2C Transmission Wire.beginTransmission (Addr); // Kies beheervochtigheidsregister Wire.write (0xF2); // Humiditeit bo monstertempo = 1 Wire.write (0x01); // Stop I2C Transmission Wire.endTransmission (); // Begin I2C Transmission Wire.beginTransmission (Addr); // Kies die kontrolemeetregister Wire.write (0xF4); // Normale modus, temperatuur en druk oor monsternemingstempo = 1 Wire.write (0x27); // Stop I2C Transmission Wire.endTransmission (); // Begin I2C Transmission Wire.beginTransmission (Addr); // Kies config register Wire.write (0xF5); // Stand -by tyd = 1000ms Wire.write (0xA0); // Stop I2C Transmission Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Kies dataregister Wire.write ((247+i)); // Stop I2C Transmission Wire.endTransmission (); // Versoek 1 greep data Wire.requestFrom (Addr, 1); // Lees 8 grepe data as (Wire.available () == 1) {data = Wire.read (); }} // Skakel druk- en temperatuurdata om in 19-bis lange adc_p = (((lang) (data [0] & 0xFF) * 65536) + ((lank) (data [1] & 0xFF) * 256) + (lank) (data [2] & 0xF0)) / 16; long adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (data [5] & 0xF0)) / 16; // Verander die humiditeitsdata lank adc_h = ((long) (data [6] & 0xFF) * 256 + (long) (data [7] & 0xFF)); // Temperatuurverrekenings berekeninge dubbel var1 = (((dubbel) adc_t) / 16384.0 - ((dubbel) dig_T1) / 1024.0) * ((dubbel) dig_T2); dubbel var2 = ((((dubbel) adc_t) / 131072.0 - ((dubbel) dig_T1) / 8192.0) * (((dubbel) adc_t) /131072.0 - ((dubbel) dig_T1) /8192.0)) * ((dubbel) dig_T3); dubbel t_fine = (lank) (var1 + var2); dubbel cTemp = (var1 + var2) / 5120.0; dubbel fTemp = cTemp * 1.8 + 32; // Drukverrekeningsberekeninge 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); dubbel p = 1048576.0 - (dubbel) 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; // Humiditeitsverrekening berekeninge 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 humiditeit = var_H * (1.0 - dig_H1 * var_H / 524288.0); as (humiditeit> 100.0) {humiditeit = 100.0; } anders as (humiditeit <0.0) {humiditeit = 0.0; } // Uitvoerdata na paneelbord Particle.publish ("Temperatuur in Celsius:", String (cTemp)); Particle.publish ("Temperatuur in Fahrenheit:", String (fTemp)); Particle.publish ("Pressure:", String (pressure)); Particle.publish ("Relatiewe humiditeit:", string (humiditeit)); vertraging (1000); }
Stap 5: Aansoeke:
BME280 temperatuur-, druk- en relatiewe humiditeitsensor het verskillende industriële toepassings, soos temperatuurmonitering, perifere termiese beskerming van die rekenaar, drukmonitering in die industrie. Ons het hierdie sensor ook gebruik vir weerstasie -toepassings sowel as kweekhuismoniteringstelsels.
Ander toepassings kan insluit:
- Konteksbewustheid, bv. velopsporing, opsporing van kamerverandering.
- Fiksheidsmonitering / welstand - Waarskuwing oor droogte of hoë temperature.
- Meting van volume en lugvloei.
- Tuis outomatisering beheer.
- Beheer verwarming, ventilasie, lugversorging (HVAC).
- Internet van dinge.
- GPS-verbetering (byvoorbeeld verbetering van tyd tot eerste herstel, afrekening, hellingopsporing).
- Binnenshuise navigasie (verandering van vloeropsporing, hysbakopsporing).
- Buitelugnavigasie, ontspanning en sporttoepassings.
- Weervoorspelling.
- Aanduiding van vertikale snelheid (styg-/sakspoed).
Stap 6: Video -tutoriaal
Kyk na ons video -tutoriaal om deur al die stappe in die koppelvlak en voltooiing van die projek te gaan.
Bly ingeskakel vir ander sensor se koppelvlak en werkblogs.
Aanbeveel:
Hoogte, druk en temperatuur met behulp van Framboos Pi met MPL3115A2: 6 stappe
Hoogte, druk en temperatuur met behulp van Framboos Pi Met MPL3115A2: Klink interessant. Dit is heel moontlik in hierdie tyd dat ons almal in die IoT -generasie gaan. As elektronika -freak het ons met die Raspberry Pi gespeel en besluit om met hierdie kennis interessante projekte te maak. In hierdie projek wil ons
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: 4 stappe
Beheer oor die hele wêreld met behulp van internet met behulp van Arduino: Hallo, ek is Rithik. Ons gaan 'n internetbeheerde LED maak met u telefoon. Ons gaan sagteware soos Arduino IDE en Blynk gebruik. Dit is eenvoudig, en as u daarin geslaag het, kan u soveel elektroniese komponente beheer as wat u wil
Monitor versnelling met behulp van Raspberry Pi en AIS328DQTR met behulp van Python: 6 stappe
Monitering van versnelling met behulp van Raspberry Pi en AIS328DQTR Gebruik van Python: Versnelling is eindig, volgens ek volgens sommige wette van die fisika.- Terry Riley 'n Jagluiperd gebruik ongelooflike versnelling en vinnige spoedveranderinge wanneer hy jaag. Die vinnigste wesens aan wal gebruik af en toe sy hoogste tempo om prooi te vang. Die
Atollic TrueStudio-skakel die LED aan deur op die drukknop te druk met behulp van STM32L100: 4 stappe
Atollic TrueStudio-skakelaar op die LED deur op die drukknop te druk met behulp van STM32L100: In hierdie handleiding van STM32 gaan ek jou vertel hoe om 'n GPIO-pen STM32L100 te lees, so hier maak ek een aan boord van Led gloei deur net druk op die drukknop
Bepaling van die druk en hoogte met behulp van GY-68 BMP180 en Arduino: 6 stappe
Die bepaling van die druk en hoogte met behulp van GY-68 BMP180 en Arduino: Oorsig In baie projekte, soos vlieënde robotte, weerstasies, die verbetering van roeteringsprestasie, sport en ens is dit baie belangrik om druk en hoogte te meet. In hierdie tutoriaal leer u hoe u die BMP180 -sensor gebruik, een van die mees