Sadržaj:
- Korak 1: Istraživanje BME280
- Korak 2: Popis hardverskih zahtjeva
- Korak 3: Povezivanje
- Korak 4: Kôd za praćenje temperature, tlaka i vlažnosti
- 5. korak: Prijave:
- Korak 6: Video vodič
Video: Proračun vlažnosti, tlaka i temperature pomoću BME280 i povezivanja fotona .: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:32
Nailazimo na razne projekte koji zahtijevaju praćenje temperature, tlaka i vlažnosti. Tako shvaćamo da ti parametri zapravo igraju vitalnu ulogu u procjeni radne učinkovitosti sustava u različitim atmosferskim uvjetima. I na industrijskoj razini i na osobnim sustavima optimalna temperatura, vlaga i razina barometarskog tlaka potrebni su za odgovarajuće performanse sustava.
Zato nudimo cjelovit vodič o ovom senzoru, u ovom ćemo vodiču objasniti rad BME280 osjetnika vlage, tlaka i temperature s fotonom čestica.
Korak 1: Istraživanje BME280
Elektronički sektor pojačao je svoju igru senzorom BME280, senzorom okoliša s temperaturom, barometrijskim tlakom i vlagom! Ovaj je senzor izvrstan za sve vrste osjetljivosti na vremenske uvjete/okoliš, a može se čak koristiti i u I2C.
Ovaj precizni senzor BME280 najbolje je rješenje za mjerenje vlažnosti s točnošću od ± 3%, barometarskog tlaka s apsolutnom točnošću od ± 1 hPa i temperature s točnošću od ± 1,0 ° C. Budući da se tlak mijenja s visinom, a mjerenja tlaka su toliko dobra, možete ga koristiti i kao visinomjer s ± 1 metar ili boljom točnošću! Senzor temperature optimiziran je za najnižu buku i najveću razlučivost te se koristi za temperaturnu kompenzaciju senzor tlaka, a može se koristiti i za procjenu temperature okoline. Mjerenja s BME280 može izvesti korisnik ili u redovitim intervalima.
Tehnički list: Kliknite za pregled ili preuzimanje podatkovnog lista BME280 senzora.
Korak 2: Popis hardverskih zahtjeva
Koristili smo u potpunosti Dcube Store dijelove jer su jednostavni za upotrebu, a nešto o svemu što lijepo pristaje na rešetku od centimetra zaista nas pokreće. Možete koristiti što god želite, ali shema ožičenja pretpostavlja da koristite ove dijelove.
- BME280 senzor I²C mini modul
- I²C štit za čestice fotona
- Foton čestica
- I²C kabel
- Adapter za napajanje
Korak 3: Povezivanje
Dio sučelja u osnovi objašnjava potrebne ožičenje između senzora i fotona čestica. Osiguravanje ispravnih veza osnovna je potreba tijekom rada na bilo kojem sustavu za željeni izlaz. Dakle, potrebne veze su sljedeće:
BME280 će raditi preko I2C. Evo primjera dijagrama ožičenja koji pokazuje kako spojiti svako sučelje senzora. Out-of-box, ploča je konfigurirana za I2C sučelje, pa kao takvu preporučujemo korištenje ovog sučelja ako ste inače agnostični. Sve što trebate su četiri žice! Potrebna su samo četiri priključka Vcc, Gnd, SCL i SDA pinovi koji se povezuju pomoću I2C kabela. Ove veze su prikazane na gornjim slikama.
Korak 4: Kôd za praćenje temperature, tlaka i vlažnosti
Čista verzija koda koju ćemo koristiti za pokretanje ovoga dostupna je OVDJE.
Dok koristimo senzorski modul s Arduinom, uključujemo knjižnicu application.h i spark_wiring_i2c.h. Knjižnica "application.h" i spark_wiring_i2c.h sadrži funkcije koje olakšavaju i2c komunikaciju između senzora i čestice.
Pritisnite OVDJE za otvaranje web stranice za praćenje uređaja
Postavite kôd na svoju ploču i trebao bi početi raditi! Svi se podaci mogu dobiti na web stranici kao što je prikazano na slici.
Kôd se nalazi ispod:
// Distribuirano s licencom za slobodnu volju.// Koristite ga na koji god način želite, profitno ili besplatno, pod uvjetom da se uklapa u licence povezanih djela. // BME280 // Ovaj kod je dizajniran za rad s BME280_I2CS I2C mini modulom dostupnim na stranici ControlEverything.com. #include #include // BME280 I2C adresa je 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, tlak = 0, vlažnost = 0; void setup () {// Postavi varijablu Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Čestica.varijabilna ("tlak", tlak); Čestica.promjenjiva ("vlažnost", vlažnost); // Inicializirajte I2C komunikaciju kao MASTER Wire.begin (); // Pokretanje serijske komunikacije, postavljena brzina prijenosa = 9600 Serial.begin (9600); kašnjenje (300); } void loop () {unsigned int b1 [24]; nepotpisani int podaci [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odabir registra podataka Wire.write ((136+i)); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Pročitajte 24 bajta podataka ako (Wire.available () == 1) {b1 = Wire.read (); }} // Pretvorimo podatke // temp koeficijenti 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); // koeficijenti tlaka 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 ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odabir registra podataka Wire.write ((225+i)); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Očitavanje 7 bajtova podataka ako (Wire.available () == 1) {b1 = Wire.read (); }} // Pretvorimo podatke // koeficijenti vlažnosti 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]; // Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odabir registra podataka Wire.write (161); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Očitavanje 1 bajta podataka ako (Wire.available () == 1) {dig_H1 = Wire.read (); } // Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odaberite registar kontrolne vlažnosti Wire.write (0xF2); // Vlažnost preko uzorkovanja = 1 Wire.write (0x01); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odaberite registar kontrolnih mjerenja Wire.write (0xF4); // Normalni način rada, temperatura i tlak preko uzorkovanja = 1 Wire.write (0x27); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odabir registra konfiguracije Wire.write (0xF5); // Vrijeme pripravnosti = 1000ms Wire.write (0xA0); // Zaustavi I2C prijenosnu žicu.endTransmission (); for (int i = 0; i <8; i ++) {// Pokreni I2C prijenosnu žicu.beginTransmission (Addr); // Odabir registra podataka Wire.write ((247+i)); // Zaustavi I2C prijenosnu žicu.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Čitanje 8 bajtova podataka ako (Wire.available () == 1) {data = Wire.read (); }} // Pretvorimo podatke o tlaku i temperaturi u 19-bitne podatke adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (long) (podaci [2] & 0xF0)) / 16; long adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (podaci [5] & 0xF0)) / 16; // Pretvorimo podatke o vlažnosti long adc_h = ((long) (podaci [6] & 0xFF) * 256 + (long) (podaci [7] & 0xFF)); // Izračuni pomaka temperature double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); double var2 = ((((double) adc_t) / 131072.0 - ((double) dig_T1) / 8192.0) * (((double) adc_t) /131072.0 - ((double) dig_T1) /8192.0)) * ((double) dig_T3); dvostruko t_fine = (dugo) (var1 + var2); dvostruki cTemp = (var1 + var2) / 5120.0; dvostruki fTemp = cTemp * 1,8 + 32; // Izračuni pomaka tlaka var1 = ((dvostruko) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((dvostruko) dig_P6) / 32768.0; var2 = var2 + var1 * ((dvostruko) dig_P5) * 2,0; var2 = (var2 / 4.0) + (((dvostruko) dig_P4) * 65536.0); var1 = (((double) dig_P3) * var1 * var1 / 524288.0 + ((double) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((dvostruko) dig_P1); dvostruki p = 1048576,0 - (dvostruki) adc_p; p = (p - (var2 / 4096.0)) * 6250,0 / var1; var1 = ((dvostruko) dig_P9) * p * p / 2147483648.0; var2 = p * ((dvostruko) dig_P8) / 32768.0; dvostruki tlak = (p + (var1 + var2 + ((dvostruko) dig_P7)) / 16,0) / 100; // Izračuni pomaka vlažnosti 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))); dvostruka vlažnost = var_H * (1,0 - kopanje_H1 * var_H / 524288,0); if (vlažnost> 100,0) {vlažnost = 100,0; } else if (vlaga <0,0) {vlažnost = 0,0; } // Izlazni podaci na nadzornu ploču Particle.publish ("Temperatura u Celzijusu:", String (cTemp)); Particle.publish ("Temperatura u Fahrenheitu:", String (fTemp)); Particle.publish ("Tlak:", niz (tlak)); Particle.publish ("Relativna vlažnost:", niz (vlažnost)); kašnjenje (1000); }
5. korak: Prijave:
BME280 osjetnik temperature, tlaka i relativne vlažnosti ima različite industrijske primjene poput nadzora temperature, periferne toplinske zaštite računala, nadzora tlaka u industriji. Ovaj smo senzor također upotrijebili u aplikacijama meteoroloških stanica, kao i u sustavu nadzora staklenika.
Druge aplikacije mogu uključivati:
- Osviještenost konteksta, npr. detekcija kože, detekcija promjene sobe.
- Praćenje kondicije / dobrobit - Upozorenje u pogledu suhoće ili visokih temperatura.
- Mjerenje volumena i protoka zraka.
- Upravljanje kućnom automatizacijom.
- Upravljajte grijanjem, ventilacijom, klimatizacijom (HVAC).
- Internet stvari.
- Poboljšanje GPS-a (npr. Poboljšanje vremena do prvog popravka, mrtvo računanje, otkrivanje nagiba).
- Unutarnja navigacija (promjena detekcije poda, detekcija dizala).
- Vanjske aplikacije za navigaciju, slobodno vrijeme i sport.
- Vremenska prognoza.
- Indikacija okomite brzine (porast/pad brzine)..
Korak 6: Video vodič
Pogledajte naš video vodič kako biste prošli sve korake povezivanja i dovršetka projekta.
Pratite ostale sučelja i radne blogove drugih senzora.
Preporučeni:
Proračun intenziteta svjetlosti pomoću BH1715 i fotona čestica: 5 koraka
Proračun intenziteta svjetlosti pomoću BH1715 i fotona čestica: Jučer smo radili na LCD zaslonima, a radeći nad njima shvatili smo važnost izračuna intenziteta svjetlosti. Intenzitet svjetlosti nije važan samo u fizičkoj domeni ovoga svijeta, već ima i svoju dobro rečeno ulogu u biologiji
Praćenje temperature i vlažnosti pomoću SHT25 i fotona čestica: 5 koraka
Nadzor temperature i vlažnosti pomoću SHT25 i fotona čestica: Nedavno smo radili na raznim projektima koji su zahtijevali praćenje temperature i vlažnosti, a zatim smo shvatili da ta dva parametra zapravo igraju ključnu ulogu u procjeni radne učinkovitosti sustava. Oboje na indusu
Mjerenje vlažnosti i temperature pomoću HIH6130 i fotona čestica: 4 koraka
Mjerenje vlažnosti i temperature pomoću HIH6130 i fotona čestica: HIH6130 je senzor vlage i temperature s digitalnim izlazom. Ovi senzori pružaju razinu točnosti od ± 4% RH. Uz dugoročnu stabilnost, vodeću u industriji, digitalni I2C s kompenzacijom temperature, vodeću pouzdanost u industriji, energetsku učinkovitost
Mjerenje temperature i vlažnosti pomoću HDC1000 i fotona čestica: 4 koraka
Mjerenje temperature i vlažnosti pomoću HDC1000 i fotona od čestica: HDC1000 je digitalni senzor vlažnosti s integriranim senzorom temperature koji pruža izvrsnu točnost mjerenja pri vrlo maloj snazi. Uređaj mjeri vlažnost na temelju novog kapacitivnog senzora. Senzori vlage i temperature su fakt
Temperatura, relativna vlažnost, zapisivač atmosferskog tlaka pomoću povezivanja Raspberry Pi i TE MS8607-02BA01: 22 koraka (sa slikama)
Temperatura, relativna vlažnost, zapisivač atmosferskog tlaka pomoću povezivanja Raspberry Pi i TE MS8607-02BA01: Uvod: U ovom projektu pokazat ću vam kako izgraditi sustav za bilježenje vlažne temperature i atmosferskog tlaka. Ovaj se projekt temelji na čipu senzora okoliša Raspberry Pi 3 modela B i TE Connectivity MS8607-02BA