Turinys:

Drėgmės, slėgio ir temperatūros apskaičiavimas naudojant BME280 ir fotonų sąsają.: 6 žingsniai
Drėgmės, slėgio ir temperatūros apskaičiavimas naudojant BME280 ir fotonų sąsają.: 6 žingsniai

Video: Drėgmės, slėgio ir temperatūros apskaičiavimas naudojant BME280 ir fotonų sąsają.: 6 žingsniai

Video: Drėgmės, slėgio ir temperatūros apskaičiavimas naudojant BME280 ir fotonų sąsają.: 6 žingsniai
Video: GTM1 Šildymo automatizavimas. Temperatūros aliarmai. 2024, Liepa
Anonim
Drėgmės, slėgio ir temperatūros apskaičiavimas naudojant BME280 ir fotonų sąsajas
Drėgmės, slėgio ir temperatūros apskaičiavimas naudojant BME280 ir fotonų sąsajas

Mes susiduriame su įvairiais projektais, kuriems reikia stebėti temperatūrą, slėgį ir drėgmę. Taigi mes suprantame, kad šie parametrai iš tikrųjų vaidina svarbų vaidmenį įvertinant sistemos darbo efektyvumą esant skirtingoms atmosferos sąlygoms. Tiek pramoniniame lygmenyje, tiek asmeninėse sistemose tinkamam sistemos veikimui reikalinga optimali temperatūra, drėgmė ir barometrinis slėgis.

Štai kodėl mes pateikiame išsamią šio jutiklio pamoką, šioje pamokoje mes paaiškinsime, kaip veikia drėgmės, slėgio ir temperatūros jutiklis BME280 su dalelių fotonu.

1 žingsnis: BME280 tyrimas

BME280 tyrinėjimas
BME280 tyrinėjimas

Elektronikos sektorius sustiprino savo žaidimą su BME280 jutikliu, aplinkos jutikliu su temperatūra, barometriniu slėgiu ir drėgme! Šis jutiklis puikiai tinka įvairiems oro/aplinkos jutimams ir netgi gali būti naudojamas I2C.

Šis tikslumo jutiklis BME280 yra geriausias jutiklis, leidžiantis matuoti drėgmę ± 3% tikslumu, barometrinį slėgį su ± 1 hPa absoliučiu tikslumu ir temperatūrą ± 1,0 ° C tikslumu. Kadangi slėgis kinta atsižvelgiant į aukštį ir slėgio matavimai yra tokie geri, jį taip pat galite naudoti kaip aukščio matuoklį, kurio tikslumas yra ± 1 metras! slėgio jutiklis, taip pat gali būti naudojamas aplinkos temperatūrai įvertinti. Naudotojas BME280 gali atlikti matavimus arba atlikti reguliarius intervalus.

Duomenų lapas: spustelėkite, jei norite peržiūrėti arba atsisiųsti BME280 jutiklio duomenų lapą.

2 veiksmas: aparatinės įrangos reikalavimų sąrašas

Aparatinės įrangos sąrašas
Aparatinės įrangos sąrašas

Mes naudojome visiškai „Dcube“parduotuvės dalis, nes jas lengva naudoti, o kažkas, kas gražiai tinka ant centimetrų tinklelio, mus tikrai skatina. Galite naudoti viską, ko norite, tačiau laidų schemoje bus daroma prielaida, kad naudojate šias dalis.

  • BME280 jutiklio I²C mini modulis
  • I²C skydas dalelių fotonui
  • Fotonų dalelės
  • I²C kabelis
  • Maitinimo adapteris

3 žingsnis: sąsaja

Sąsaja
Sąsaja

Sąsajos skyrius iš esmės paaiškina laidų jungtis, reikalingas tarp jutiklio ir dalelių fotono. Užtikrinti teisingas jungtis yra pagrindinė būtinybė dirbant su bet kuria norimos išvesties sistema. Taigi, būtinos jungtys yra šios:

BME280 veiks per I2C. Čia yra elektros instaliacijos schemos pavyzdys, parodantis, kaip prijungti kiekvieną jutiklio sąsają. Iš karto plokštė sukonfigūruota I2C sąsajai, todėl rekomenduojame naudoti šią sąsają, jei esate kitaip agnostikas. Viskas, ko jums reikia, yra keturi laidai! Reikia tik keturių jungčių „Vcc“, „Gnd“, „SCL“ir „SDA“kaiščių, kurie yra prijungti naudojant I2C kabelį. Šie ryšiai parodyti aukščiau esančiose nuotraukose.

4 žingsnis: temperatūros, slėgio ir drėgmės stebėjimo kodas

Temperatūros, slėgio ir drėgmės stebėjimo kodas
Temperatūros, slėgio ir drėgmės stebėjimo kodas
Temperatūros, slėgio ir drėgmės stebėjimo kodas
Temperatūros, slėgio ir drėgmės stebėjimo kodas

Švari kodo versija, kurią naudosime vykdydami, yra ČIA.

Naudodami jutiklio modulį su „Arduino“, įtraukiame „application.h“ir „spark_wiring_i2c.h“biblioteką. Bibliotekoje „application.h“ir spark_wiring_i2c.h yra funkcijos, palengvinančios i2c ryšį tarp jutiklio ir dalelės.

Spustelėkite ČIA, kad atidarytumėte įrenginio stebėjimo tinklalapį

Įkelkite kodą į savo lentą ir jis turėtų pradėti veikti! Visus duomenis galima gauti tinklalapyje, kaip parodyta paveikslėlyje.

Kodas pateikiamas žemiau:

// Platinama su laisvos valios licencija. // BME280 // Šis kodas skirtas dirbti su BME280_I2CS I2C mini moduliu, kurį galima įsigyti iš ControlEverything.com. #include #include // BME280 I2C adresas yra 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, slėgis = 0, drėgmė = 0; void setup () {// Nustatyti kintamąjį Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Dalelė.kintamas ("slėgis", slėgis); Dalelė.kintamas ("drėgmė", drėgmė); // Inicijuoti I2C ryšį kaip MASTER Wire.begin (); // Inicijuoti serijinį ryšį, nustatyti duomenų perdavimo spartą = 9600 Serial.begin (9600); vėlavimas (300); } void loop () {unsigned int b1 [24]; nepasirašyti int duomenys [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Pradėti I2C perdavimo laidą.beginTransmission (Addr); // Pasirinkite duomenų registrą Wire.write ((136+i)); // Stop I2C Transmission Wire.endTransmission (); // Prašyti 1 baito duomenų Wire.requestFrom (Addr, 1); // Skaitykite 24 baitus duomenų, jei (Wire.available () == 1) {b1 = Wire.read (); }} // Konvertuoti duomenis // temp koeficientai 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); // slėgio koeficientai 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 ++) {// Pradėti I2C perdavimo laidą.beginTransmission (Addr); // Pasirinkite duomenų registrą Wire.write ((225+i)); // Stop I2C Transmission Wire.endTransmission (); // Prašyti 1 baito duomenų Wire.requestFrom (Addr, 1); // Skaitykite 7 baitus duomenų, jei (Wire.available () == 1) {b1 = Wire.read (); }} // Konvertuoti duomenis // drėgmės koeficientai int dig_H2 = b1 [0] + (b1 [1] * 256); int dig_H3 = b1 [2] ir 0xFF; int dig_H4 = (b1 [3] * 16) + (b1 [4] ir 0xF); int dig_H5 = (b1 [4] / 16) + (b1 [5] * 16); int dig_H6 = b1 [6]; // Pradėti I2C perdavimo laidą.beginTransmission (Addr); // Pasirinkite duomenų registrą Wire.write (161); // Stop I2C Transmission Wire.endTransmission (); // Prašyti 1 baito duomenų Wire.requestFrom (Addr, 1); // Skaitykite 1 baitą duomenų, jei (Wire.available () == 1) {dig_H1 = Wire.read (); } // Pradėti I2C perdavimo laidą.beginTransmission (Addr); // Pasirinkite valdymo drėgmės registrą Wire.write (0xF2); // Drėgmė per atrankos dažnį = 1 Wire.write (0x01); // Stop I2C Transmission Wire.endTransmission (); // Pradėti I2C perdavimo laidą.beginTransmission (Addr); // Pasirinkite valdymo matavimo registrą Wire.write (0xF4); // Normalus režimas, temperatūra ir slėgis virš mėginių ėmimo greičio = 1 Wire.write (0x27); // Stop I2C Transmission Wire.endTransmission (); // Pradėti I2C perdavimo laidą.beginTransmission (Addr); // Pasirinkite konfigūracijos registrą Wire.write (0xF5); // Budėjimo laikas = 1000 ms Wire.write (0xA0); // Stop I2C Transmission Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Pradėti I2C perdavimo laidą.beginTransmission (Addr); // Pasirinkite duomenų registrą Wire.write ((247+i)); // Stop I2C Transmission Wire.endTransmission (); // Prašyti 1 baito duomenų Wire.requestFrom (Addr, 1); // Perskaitykite 8 baitus duomenų, jei (Wire.available () == 1) {data = Wire.read (); }} // Paverskite slėgio ir temperatūros duomenis į 19 bitų ilgio adc_p = (((ilgas) (duomenys [0] ir 0xFF) * 65536) + ((ilgas) (duomenys [1] ir 0xFF) * 256) + (ilgas) (duomenys [2] ir 0xF0)) / 16; ilgas adc_t = (((ilgas) (duomenys [3] ir 0xFF) * 65536) + ((ilgas) (duomenys [4] ir 0xFF) * 256) + (ilgas) (duomenys [5] ir 0xF0)) / 16; // Konvertuoti drėgmės duomenis ilgai adc_h = ((ilgas) (duomenys [6] ir 0xFF) * 256 + (ilgi) (duomenys [7] ir 0xFF)); // Temperatūros poslinkio skaičiavimai double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); dvigubas var2 = (((((dvigubas)) adc_t) / 131072.0 - ((dvigubas) dig_T1) / 8192.0) * (((dvigubas) adc_t) /131072.0 - ((dvigubas) dig_T1) / 8192.0)) * ((dvigubas) dig_T3); dvigubas t_fine = (ilgas) (var1 + var2); dvigubas cTemp = (var1 + var2) / 5120,0; dvigubas fTemp = cTemp * 1,8 + 32; // Slėgio poslinkio skaičiavimai var1 = ((double) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((dvigubas) dig_P6) / 32768.0; var2 = var2 + var1 * ((dvigubas) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((dvigubas) dig_P4) * 65536.0); var1 = ((((dvigubas)) dig_P3) * var1 * var1 / 524288.0 + ((dvigubas) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((dvigubas) dig_P1); dvigubas p = 1048576.0 - (dvigubas) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((dvigubas) dig_P9) * p * p / 2147483648.0; var2 = p * ((dvigubas) dig_P8) / 32768.0; dvigubas slėgis = (p + (var1 + var2 + ((dvigubas)) dig_P7)) / 16,0) / 100; // Drėgmės poslinkio skaičiavimai dviguba var_H = (((dviguba) 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))); dviguba drėgmė = var_H * (1,0 - dig_H1 * var_H / 524288.0); if (drėgmė> 100,0) {drėgmė = 100,0; } else if (drėgmė <0,0) {drėgmė = 0,0; } // Išvesties duomenys į prietaisų skydelį Particle.publish ("Temperatūra Celsijaus laipsniais:", Styga (cTemp)); Particle.publish ("Temperatūra Farenheitu:", Styga (fTemp)); Particle.publish ("Slėgis:", Styga (slėgis)); Particle.publish ("Santykinė drėgmė:", Styga (drėgmė)); vėlavimas (1000); }

5 žingsnis: programos:

Programos
Programos

BME280 temperatūros, slėgio ir santykinės drėgmės jutiklis gali būti naudojamas įvairiose pramonės srityse, tokiose kaip temperatūros stebėjimas, kompiuterio periferinė šiluminė apsauga, slėgio stebėjimas pramonėje. Mes taip pat panaudojome šį jutiklį orų stotyse ir šiltnamių stebėjimo sistemoje.

Kitos programos gali būti:

  1. Konteksto suvokimas, pvz. odos aptikimas, kambario pakeitimo aptikimas.
  2. Fitneso stebėjimas / savijauta - Įspėjimas dėl sausumo ar aukštos temperatūros.
  3. Tūrio ir oro srauto matavimas.
  4. Namų automatikos valdymas.
  5. Valdykite šildymą, vėdinimą, oro kondicionavimą (ŠVOK).
  6. Daiktų internetas.
  7. GPS patobulinimas (pvz., Patobulinimas iki pirmojo taisymo, mirusiųjų skaičiavimas, nuolydžio aptikimas).
  8. Navigacija patalpose (grindų aptikimo keitimas, lifto aptikimas).
  9. Lauko navigacijos, laisvalaikio ir sporto programos.
  10. Orų prognozė.
  11. Vertikalus greičio indikatorius (kilimo/nusileidimo greitis).

6 žingsnis: vaizdo įrašo pamoka

Peržiūrėkite mūsų vaizdo įrašo pamoką, kad galėtumėte atlikti visus sąveikos ir projekto užbaigimo veiksmus.

Sekite kitų jutiklių sąsajų ir darbo tinklaraštį.

Rekomenduojamas: