Sisukord:
- 1. samm: BME280 uurimine
- Samm: riistvaranõuete loend
- 3. samm: liidestamine
- 4. samm: temperatuuri, rõhu ja niiskuse jälgimise kood
- Samm: rakendused:
- 6. samm: videoõpetus
Video: Niiskuse, rõhu ja temperatuuri arvutamine BME280 ja footonite liidese abil: 6 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
Me puutume kokku erinevate projektidega, mis nõuavad temperatuuri, rõhu ja niiskuse jälgimist. Seega mõistame, et need parameetrid mängivad tegelikult olulist rolli süsteemi töö efektiivsuse hindamisel erinevates atmosfääritingimustes. Nii tööstustasandil kui ka isiklikel süsteemidel on süsteemi piisava toimimise tagamiseks vajalik optimaalne temperatuur, niiskus ja õhurõhk.
Seetõttu pakume selle anduri kohta täielikku õpetust, selles õpetuses selgitame BME280 niiskuse, rõhu ja temperatuurianduri tööd osakeste footoniga.
1. samm: BME280 uurimine
Elektroonikasektor on oma mängu tõhustanud BME280 anduriga, mis on temperatuuri, õhurõhu ja niiskusega keskkonnaandur! See andur sobib suurepäraselt igasuguste ilmastiku- ja keskkonnaandurite jaoks ning seda saab kasutada isegi I2C -s.
See täppisandur BME280 on parim tundlik lahendus niiskuse mõõtmiseks ± 3% täpsusega, õhurõhku ± 1 hPa absoluutse täpsusega ja temperatuuri ± 1,0 ° C täpsusega. Kuna rõhk muutub kõrgusega ja rõhumõõtmised on nii head, saate seda kasutada ka ± 1 meetri või parema täpsusega kõrgusemõõtjana! Temperatuuriandur on optimeeritud madalaima müra ja kõrgeima eraldusvõimega ning seda kasutatakse temperatuuri kompenseerimiseks rõhuandurit ja seda saab kasutada ka ümbritseva õhu temperatuuri hindamiseks. BME280 abil saab mõõtmisi teha kasutaja või regulaarsete ajavahemike järel.
Andmeleht: klõpsake BME280 anduri andmelehe eelvaateks või allalaadimiseks.
Samm: riistvaranõuete loend
Kasutasime täielikult Dcube poe osi, kuna neid on lihtne kasutada ja miski, mis sobib kenasti sentimeetri suurusele võrgule, paneb meid tõesti käima. Võite kasutada kõike, mida soovite, kuid ühendusskeem eeldab, et kasutate neid osi.
- BME280 anduri I²C minimoodul
- I²C kilp osakeste footonile
- Osakeste footon
- I²C kaabel
- Toiteadapter
3. samm: liidestamine
Liidese osa selgitab põhimõtteliselt anduri ja osakeste footoni vahel vajalikke juhtmestiku ühendusi. Soovitud väljundi mis tahes süsteemiga töötamisel on põhivajadus õigete ühenduste tagamine. Seega on vajalikud ühendused järgmised:
BME280 töötab üle I2C. Siin on näide ühendusskeemist, mis näitab, kuidas anduri iga liidest ühendada. Valmis paneel on konfigureeritud I2C liidese jaoks, seega soovitame seda liidest kasutada, kui olete muidu agnostik. Kõik, mida vajate, on neli juhtmest! Vaja on ainult nelja ühendust Vcc, Gnd, SCL ja SDA ning need ühendatakse I2C kaabli abil. Neid seoseid on näidatud ülaltoodud piltidel.
4. samm: temperatuuri, rõhu ja niiskuse jälgimise kood
Selle käivitamiseks kasutatava koodi puhas versioon on saadaval SIIN.
Kui kasutame andurimoodulit koos Arduinoga, lisame teeki application.h ja spark_wiring_i2c.h. Raamatukogu "application.h" ja spark_wiring_i2c.h sisaldab funktsioone, mis hõlbustavad i2c suhtlust anduri ja osakese vahel.
Seadme jälgimiseks mõeldud veebilehe avamiseks klõpsake SIIN
Laadige kood oma tahvlile ja see peaks tööle hakkama! Kõik andmed saab veebilehelt, nagu pildil näidatud.
Kood on toodud allpool:
// Levitatakse vaba tahte litsentsiga. // BME280 // See kood on loodud töötama koos BME280_I2CS I2C minimooduliga, mis on saadaval saidil ControlEverything.com. #include #include // BME280 I2C aadress on 0x76 (108) #define Addr 0x76 topelt cTemp = 0, fTemp = 0, rõhk = 0, niiskus = 0; void setup () {// Määra muutuja Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Osake.muutuja ("rõhk", rõhk); Osake.muutuja ("niiskus", niiskus); // Initsialiseerida I2C side kui MASTER Wire.begin (); // Initsialiseeri jadaühendus, määra edastuskiirus = 9600 Serial.begin (9600); viivitus (300); } void loop () {unsigned int b1 [24]; allkirjastamata int andmed [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Valige andmeregister Wire.write ((136+i)); // Peata I2C ülekanne Wire.endTransmission (); // Taotle 1 bait andmeid Wire.requestFrom (Addr, 1); // Loe 24 baiti andmeid, kui (Wire.available () == 1) {b1 = Wire.read (); }} // Teisenda andmed // temp koefitsiendid 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); // rõhukoefitsiendid 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); // Valige andmeregister Wire.write ((225+i)); // Peata I2C ülekanne Wire.endTransmission (); // Taotle 1 bait andmeid Wire.requestFrom (Addr, 1); // Loe 7 baiti andmeid, kui (Wire.available () == 1) {b1 = Wire.read (); }} // Teisenda andmed // niiskuse koefitsiendid 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]; // Käivita I2C ülekandejuhe Wire.beginTransmission (Addr); // Valige andmeregister Wire.write (161); // Peata I2C ülekanne Wire.endTransmission (); // Taotle 1 bait andmeid Wire.requestFrom (Addr, 1); // Loe 1 bait andmeid, kui (Wire.available () == 1) {dig_H1 = Wire.read (); } // Käivita I2C ülekandejuhe Wire.beginTransmission (Addr); // Vali niiskuse juhtregister Wire.write (0xF2); // Niiskus üle diskreetimissageduse = 1 Wire.write (0x01); // Peata I2C ülekanne Wire.endTransmission (); // Käivita I2C ülekandejuhe Wire.beginTransmission (Addr); // Vali kontrolli mõõtmise register Wire.write (0xF4); // Tavaline režiim, temp ja rõhk üle diskreetimissageduse = 1 Wire.write (0x27); // Peata I2C ülekanne Wire.endTransmission (); // Käivita I2C ülekandejuhe Wire.beginTransmission (Addr); // Vali konfiguratsiooniregister Wire.write (0xF5); // Ooteaeg = 1000 ms Wire.write (0xA0); // Peata I2C ülekanne Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Valige andmeregister Wire.write ((247+i)); // Peata I2C ülekanne Wire.endTransmission (); // Taotle 1 bait andmeid Wire.requestFrom (Addr, 1); // Loe 8 baiti andmeid, kui (Wire.available () == 1) {data = Wire.read (); }} // Teisenda rõhu ja temperatuuri andmed 19-bitisteks pikkadeks adc_p = (((pikk) (andmed [0] & 0xFF) * 65536) + ((pikk) (andmed [1] ja 0xFF) * 256) + (pikk) (andmed [2] ja 0xF0)) / 16; pikk adc_t = (((pikk) (andmed [3] ja 0xFF) * 65536) + ((pikk) (andmed [4] ja 0xFF) * 256) + (pikk) (andmed [5] ja 0xF0)) / 16; // Niiskuseandmete teisendamine pikaks adc_h = ((pikk) (andmed [6] & 0xFF) * 256 + (pikk) (andmed [7] ja 0xFF)); // Temperatuuri nihke arvutused double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024,0) * ((double) dig_T2); topelt var2 = (((((double) adc_t) / 131072.0 - ((double) dig_T1) / 8192.0) * (((double) adc_t) /131072.0 - ((double) dig_T1) / 8192.0)) * ((double) dig_T3); topelt t_peen = (pikk) (var1 + var2); kahekordne cTemp = (var1 + var2) / 5120,0; kahekordne fTemp = cTemp * 1,8 + 32; // Rõhu nihke arvutused var1 = ((topelt) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((topelt) dig_P6) / 32768.0; var2 = var2 + var1 * ((topelt) dig_P5) * 2.0; var2 = (var2 / 4,0) + (((kahekordne) dig_P4) * 65536,0); var1 = (((kahekordne) dig_P3) * var1 * var1 / 524288.0 + ((kahekordne) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((topelt) dig_P1); kahekordne p = 1048576,0 - (kahekordne) adc_p; p = (p - (var2 / 4096,0)) * 6250,0 / var1; var1 = ((topelt) dig_P9) * p * p / 2147483648.0; var2 = p * ((topelt) dig_P8) / 32768.0; topeltrõhk = (p + (var1 + var2 + ((topelt) dig_P7)) / 16,0) / 100; // Niiskuse nihke arvutused double var_H = (((double) 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))); kahekordne niiskus = var_H * (1,0 - dig_H1 * var_H / 524288.0); kui (niiskus> 100,0) {niiskus = 100,0; } else if (niiskus <0,0) {niiskus = 0,0; } // Andmete väljastamine armatuurlauale Particle.publish ("Temperatuur Celsiuse järgi:", String (cTemp)); Particle.publish ("Temperatuur Fahrenheiti järgi:", String (fTemp)); Particle.publish ("Rõhk:", String (rõhk)); Particle.publish ("Suhteline õhuniiskus:", String (niiskus)); viivitus (1000); }
Samm: rakendused:
BME280 temperatuuri, rõhu ja suhtelise niiskuse anduril on mitmesuguseid tööstuslikke rakendusi, nagu temperatuuri jälgimine, arvuti perifeerne termokaitse, rõhu jälgimine tööstuses. Oleme seda andurit kasutanud ka ilmajaamade rakendustes ja kasvuhoone seiresüsteemis.
Muud rakendused võivad hõlmata järgmist:
- Konteksti teadvustamine, nt. naha tuvastamine, ruumimuutuse tuvastamine.
- Fitnessi jälgimine / heaolu - hoiatus kuivuse või kõrge temperatuuri eest.
- Mahu ja õhuvoolu mõõtmine.
- Koduautomaatika juhtimine.
- Kütte, ventilatsiooni, kliimaseadme juhtimine (HVAC).
- Asjade Internet.
- GPS-i täiustamine (nt esimese paranduseni jõudmise aja parandamine, surnud arvestus, kalde tuvastamine).
- Siseruumides navigeerimine (põranda tuvastamise muutmine, lifti tuvastamine).
- Väljas navigeerimine, vaba aja veetmine ja sport.
- Ilmateade.
- Vertikaalse kiiruse näit (tõusu/vajumise kiirus).
6. samm: videoõpetus
Vaadake meie videoõpetust, et läbida kõik projektiga liidestamise ja lõpuleviimise sammud.
Olge kursis teiste andurite liideste ja töötavate ajaveebidega.
Soovitan:
M5STACK Temperatuuri, niiskuse ja rõhu kuvamine M5StickC ESP32 -l Visuino abil - lihtne teha: 6 sammu
M5STACK Temperatuuri, niiskuse ja rõhu kuvamine M5StickC ESP32 -l Visuino abil - lihtne teha: Selles õpetuses õpime, kuidas programmeerida ESP32 M5Stack StickC koos Arduino IDE ja Visuinoga temperatuuri, niiskuse ja rõhu kuvamiseks ENV anduri abil (DHT12, BMP280, BMM150)
Temperatuuri ja niiskuse jälgimine AM2301 abil NodeMCU & Blynk'is: 3 sammu
Temperatuuri ja niiskuse jälgimine AM2301 abil NodeMCU -l ja Blynkil: On väga hästi teada tõsiasi, et enamikus tööstuse vertikaalides mängivad temperatuur, niiskus, rõhk, õhukvaliteet, veekvaliteet jne olulisi tegureid, mida tuleb pidevalt jälgida häiresüsteemid peavad olema paigas, kui väärtus
Temperatuuri ja niiskuse jälgimine NODE MCU ja BLYNK abil: 5 sammu
Temperatuuri ja niiskuse jälgimine NODE MCU ja BLYNK abil: Tere poisid! Selles juhendis saate teada, kuidas saada atmosfääri temperatuuri ja niiskust, kasutades DHT11-temperatuuri ja niiskuse andurit, kasutades rakendust Node MCU ja BLYNK
Baromeetrilise rõhu ja temperatuuri visualiseerimine Infineon XMC4700 RelaxKit, Infineon DPS422 ja AWS abil: 8 sammu
Baromeetrilise rõhu ja temperatuuri visualiseerimine Infineon XMC4700 RelaxKiti, Infineoni DPS422 ja AWS abil: õhurõhu ja temperatuuri mõõtmine Infineoni DPS 422 abil on lihtne projekt. Rõhu ja temperatuuri jälgimine teatud aja jooksul muutub kohmakaks. Siin tuleb pildile analüüs, ülevaade muutustest
E-posti märguannete loomine traadita temperatuuri ja niiskuse anduri NCD abil punase sõlme abil: 22 sammu
E-posti märguannete loomine NCD traadita temperatuuri ja niiskuse anduri kohta sõlme-punase abil: kasutame siin NCD temperatuuri ja niiskuse andurit, kuid sammud jäävad kõigi ncd-toodete jaoks samaks, nii et kui teil on muid ncd traadita andureid, proovige seda tasuta kõrvalt kõrvalt jälgida. Selle teksti peatamise abil peate