Sadržaj:
- Korak 1: Istraživanje BME280
- Korak 2: Lista zahtjeva hardvera
- Korak 3: Povezivanje
- Korak 4: Kôd za praćenje temperature, pritiska i vlažnosti
- Korak 5: Aplikacije:
- 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 izmjena: 2024-01-30 08:04
Nailazimo na različite projekte koji zahtijevaju praćenje temperature, pritiska i vlažnosti. Tako shvaćamo da ovi parametri zapravo igraju vitalnu ulogu u procjeni radne efikasnosti sistema u različitim atmosferskim uvjetima. I na industrijskom nivou i na ličnim sistemima optimalna temperatura, vlažnost i nivo barometarskog pritiska neophodni su za odgovarajuće performanse sistema.
Zbog toga pružamo cjelovit vodič o ovom senzoru, u ovom vodiču ćemo objasniti rad BME280 senzora vlažnosti, 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 senzor je odličan za sve vrste vremenskih/okolišnih senzora i čak se može koristiti u I2C.
Ovaj precizni senzor BME280 najbolje je rješenje za mjerenje vlažnosti sa ± 3% tačnosti, barometarski pritisak sa ± 1 hPa apsolutnom tačnošću i temperature sa ± 1,0 ° C tačnosti. Budući da se tlak mijenja s nadmorskom visinom, a mjerenja tlaka su toliko dobra, možete ga koristiti i kao visinomjer sa ± 1 metar ili boljom preciznošću! Senzor temperature optimiziran je za najnižu buku i najveću rezoluciju i koristi se za temperaturnu kompenzaciju senzor pritiska, a može se koristiti i za procjenu temperature okoline. Mjerenja s BME280 može izvesti korisnik ili u redovnim intervalima.
Tehnički list: Kliknite za pregled ili preuzimanje podatkovnog lista BME280 senzora.
Korak 2: Lista zahtjeva hardvera
Koristili smo u potpunosti Dcube Store dijelove jer su laki 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 dijagram ožičenja pretpostavlja da koristite ove dijelove.
- BME280 senzor I²C mini modul
- I²C štit za foton čestica
- Foton čestica
- I²C kabel
- Adapter za napajanje
Korak 3: Povezivanje
Odjeljak sučelja u osnovi objašnjava potrebne ožičenje između senzora i fotona čestica. Osiguravanje ispravnih veza osnovna je potreba pri radu na bilo kojem sistemu 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, pritiska i vlažnosti
Čista verzija koda koju ćemo koristiti za pokretanje ovoga dostupna je OVDJE.
Dok koristimo senzorski modul s Arduinom, uključujemo biblioteku application.h i spark_wiring_i2c.h. Biblioteka "application.h" i spark_wiring_i2c.h sadrži funkcije koje olakšavaju i2c komunikaciju između senzora i čestice.
Kliknite OVDJE da otvorite web stranicu za praćenje uređaja
Postavite kôd na svoju ploču i trebao bi početi raditi! Svi podaci mogu se dobiti na web stranici kao što je prikazano na slici.
Kôd se nalazi ispod:
// Distribuirano s licencom za slobodnu volju.// Koristite ga kako god ž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 ControlEverything.com. #include #include // BME280 I2C adresa je 0x76 (108) #define Addr 0x76 dvostruki cTemp = 0, fTemp = 0, pritisak = 0, vlažnost = 0; void setup () {// Postavi varijablu Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Čestica.varijabilna ("pritisak", pritisak); Čestica.varijabilna ("vlažnost", vlažnost); // Pokreće 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 ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odabir registra podataka Wire.write ((136+i)); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Čitanje 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 pritiska 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 ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odabir registra podataka Wire.write ((225+i)); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Čita 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]; // Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odabir registra podataka Wire.write (161); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Očitavanje 1 bajta podataka ako (Wire.available () == 1) {dig_H1 = Wire.read (); } // Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odaberite registar kontrolne vlažnosti Wire.write (0xF2); // Vlažnost preko uzorkovanja = 1 Wire.write (0x01); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odaberite registar kontrolnih mjerenja Wire.write (0xF4); // Normalni način rada, temperatura i pritisak preko uzorkovanja = 1 Wire.write (0x27); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odabir registra konfiguracije Wire.write (0xF5); // Vrijeme pripravnosti = 1000ms Wire.write (0xA0); // Zaustavljanje I2C prijenosa Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Pokretanje I2C prijenosa Wire.beginTransmission (Addr); // Odabir registra podataka Wire.write ((247+i)); // Zaustavljanje I2C prijenosa Wire.endTransmission (); // Zatražite 1 bajt podataka Wire.requestFrom (Addr, 1); // Čita 8 bajtova podataka ako (Wire.available () == 1) {data = Wire.read (); }} // Pretvorimo podatke o pritisku 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) (podaci [3] & 0xFF) * 65536) + ((long) (podaci [4] & 0xFF) * 256) + (dugački) (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; // Proračuni pomaka pritiska 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); double p = 1048576.0 - (double) 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 pritisak = (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 - dig_H1 * var_H / 524288,0); if (vlažnost> 100,0) {vlažnost = 100,0; } else if (vlažnost <0,0) {vlažnost = 0,0; } // Izlaženje podataka na nadzornu ploču Particle.publish ("Temperatura u Celzijusima:", String (cTemp)); Particle.publish ("Temperatura u Fahrenheitu:", String (fTemp)); Particle.publish ("Pritisak:", niz (pritisak)); Particle.publish ("Relativna vlažnost:", niz (vlažnost)); kašnjenje (1000); }
Korak 5: Aplikacije:
BME280 senzor temperature, pritiska i relativne vlažnosti ima različite industrijske primjene poput nadzora temperature, kompjuterske termičke zaštite periferije, nadzora tlaka u industriji. Ovaj senzor smo takođe koristili u aplikacijama meteoroloških stanica, kao i u sistemu nadzora staklenika.
Druge aplikacije mogu uključivati:
- Svijest o kontekstu, npr. detekcija kože, detekcija promjene sobe.
- Nadzor fitnesa / 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).
- Unutrašnja navigacija (promjena detekcije poda, detekcija lifta).
- Vanjske aplikacije za navigaciju, zabavu i sport.
- Vremenska prognoza.
- Indikacija okomite brzine (porast/brzina poniranja)..
Korak 6: Video vodič
Pogledajte naš video vodič kako biste prošli sve korake u povezivanju i dovršavanju projekta.
Pratite druge blogove za povezivanje i rad drugih senzora.
Preporučuje se:
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 ekranima i dok smo radili preko njih shvatili smo važnost izračunavanja intenziteta svjetlosti. Intenzitet svjetlosti nije samo važan u fizičkom domenu ovog svijeta, već ima i svoju dobro rečeno ulogu u biologiji
Nadzor 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 efikasnosti sistema. 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 vlažnosti i temperature s digitalnim izlazom. Ovi senzori pružaju nivo preciznosti 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 osnovu novog kapacitivnog senzora. Senzori vlažnosti i temperature su faks
Mjerenje vlažnosti i temperature pomoću HTS221 i fotona čestica: 4 koraka
Mjerenje vlažnosti i temperature pomoću HTS221 i fotona čestica: HTS221 je ultra kompaktni kapacitivni digitalni senzor za relativnu vlažnost i temperaturu. Sadrži senzorski element i integrirano kolo za mješoviti signal specifično za aplikacije (ASIC) za pružanje mjernih informacija putem digitalne serijske