Obsah:

Výpočet vlhkosti, tlaku a teploty pomocí BME280 a fotonového rozhraní: 6 kroků
Výpočet vlhkosti, tlaku a teploty pomocí BME280 a fotonového rozhraní: 6 kroků

Video: Výpočet vlhkosti, tlaku a teploty pomocí BME280 a fotonového rozhraní: 6 kroků

Video: Výpočet vlhkosti, tlaku a teploty pomocí BME280 a fotonového rozhraní: 6 kroků
Video: Lesson 37: Using BME280 Humidity, Barometric Pressure and Temperature Sensor 2024, Červenec
Anonim
Výpočet vlhkosti, tlaku a teploty pomocí rozhraní BME280 a fotonového rozhraní
Výpočet vlhkosti, tlaku a teploty pomocí rozhraní BME280 a fotonového rozhraní

Setkáváme se s různými projekty, které vyžadují monitorování teploty, tlaku a vlhkosti. Uvědomujeme si tedy, že tyto parametry ve skutečnosti hrají zásadní roli při odhadu pracovní účinnosti systému za různých atmosférických podmínek. Jak na průmyslové úrovni, tak v osobních systémech je pro adekvátní výkonnost systému vyžadována optimální teplota, vlhkost a barometrický tlak.

Proto poskytujeme kompletní návod k tomuto senzoru, v tomto tutoriálu vysvětlíme fungování senzoru vlhkosti, tlaku a teploty BME280 s fotonem částic.

Krok 1: Průzkum BME280

Průzkum BME280
Průzkum BME280

Elektronický sektor zintenzivnil svoji hru se snímačem BME280, environmentálním senzorem s teplotou, barometrickým tlakem a vlhkostí! Tento senzor je skvělý pro všechny druhy snímání počasí/prostředí a lze jej použít i v I2C.

Tento přesný snímač BME280 je nejlepším snímacím řešením pro měření vlhkosti s přesností ± 3%, barometrického tlaku s absolutní přesností ± 1 hPa a teploty s přesností ± 1,0 ° C. Protože se tlak mění s nadmořskou výškou a měření tlaku je tak dobré, můžete jej také použít jako výškoměr s přesností ± 1 metr nebo lepší! Teplotní senzor byl optimalizován pro nejnižší hluk a nejvyšší rozlišení a používá se pro teplotní kompenzaci snímač tlaku a lze jej také použít k odhadu teploty okolí. Měření pomocí BME280 může provádět uživatel nebo je provádět v pravidelných intervalech.

Datasheet: Kliknutím zobrazíte náhled nebo si stáhnete datový list senzoru BME280.

Krok 2: Seznam požadavků na hardware

Seznam požadavků na hardware
Seznam požadavků na hardware

Použili jsme zcela Dcube Store Parts, protože se snadno používají, a něco o tom, že všechno dobře sedí na centimetrové mřížce, nás opravdu dostalo. Můžete použít cokoli chcete, ale schéma zapojení předpokládá, že používáte tyto části.

  • Mini modul BME280 Sensor I²C
  • I²C štít pro částicový foton
  • Foton částic
  • I²C kabel
  • Napájecí adaptér

Krok 3: Rozhraní

Rozhraní
Rozhraní

Sekce propojení v zásadě vysvětluje zapojení kabelů požadovaná mezi snímačem a fotonem částic. Zajištění správného připojení je základní nutností při práci na jakémkoli systému pro požadovaný výstup. Požadovaná připojení jsou tedy následující:

BME280 bude fungovat přes I2C. Zde je příklad schématu zapojení, které ukazuje, jak zapojit jednotlivá rozhraní senzoru. Po vybalení je deska nakonfigurována pro rozhraní I2C, proto doporučujeme toto rozhraní použít, pokud jste jinak agnostik. Vše, co potřebujete, jsou čtyři dráty! Jsou vyžadována pouze čtyři připojení Vcc, Gnd, SCL a SDA piny a ty jsou spojeny pomocí kabelu I2C. Tato spojení jsou ukázána na obrázcích výše.

Krok 4: Kód monitorování teploty, tlaku a vlhkosti

Kód monitorování teploty, tlaku a vlhkosti
Kód monitorování teploty, tlaku a vlhkosti
Kód monitorování teploty, tlaku a vlhkosti
Kód monitorování teploty, tlaku a vlhkosti

Čistá verze kódu, který použijeme ke spuštění, je k dispozici ZDE.

Při používání senzorového modulu s Arduinem jsme zahrnuli knihovnu application.h a spark_wiring_i2c.h. Knihovna „application.h“a spark_wiring_i2c.h obsahuje funkce, které usnadňují komunikaci i2c mezi senzorem a částicem.

Kliknutím ZDE otevřete webovou stránku pro sledování zařízení

Nahrajte kód na desku a měl by začít fungovat! Všechna data lze získat na webové stránce, jak je znázorněno na obrázku.

Kód je uveden níže:

// Distribuováno s licencí svobodné vůle.// Používejte jej libovolným způsobem, ať už ziskem nebo zdarma, za předpokladu, že se vejde do licencí souvisejících děl. // BME280 // Tento kód je navržen tak, aby fungoval s mini modulem BME280_I2CS I2C, který je k dispozici na ControlEverything.com. #include #include // Adresa BME280 I2C je 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, tlak = 0, vlhkost = 0; void setup () {// Nastavit proměnnou Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Částice.proměnná ("tlak", tlak); Částice.proměnná ("vlhkost", vlhkost); // Inicializujte komunikaci I2C jako MASTER Wire.begin (); // Inicializace sériové komunikace, nastavení přenosové rychlosti = 9600 Serial.begin (9600); zpoždění (300); } void loop () {unsigned int b1 [24]; nepodepsaná int data [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Vyberte datový registr Wire.write ((136+i)); // Zastavení přenosu I2C Wire.endTransmission (); // Žádost o 1 bajt dat Wire.requestFrom (Addr, 1); // Přečíst 24 bytů dat, pokud (Wire.available () == 1) {b1 = Wire.read (); }} // Převod dat // temp coefficents 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); // tlakové koeficienty 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); // Vyberte datový registr Wire.write ((225+i)); // Zastavení přenosu I2C Wire.endTransmission (); // Žádost o 1 bajt dat Wire.requestFrom (Addr, 1); // Přečíst 7 bytů dat if (Wire.available () == 1) {b1 = Wire.read (); }} // Převod dat // vlhkostní koeficienty 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 = (bl [4] / 16) + (bl [5] * 16); int dig_H6 = b1 [6]; // Spusťte I2C Transmission Wire.beginTransmission (Addr); // Vyberte datový registr Wire.write (161); // Zastavení přenosu I2C Wire.endTransmission (); // Žádost o 1 bajt dat Wire.requestFrom (Addr, 1); // Přečíst 1 byte dat if (Wire.available () == 1) {dig_H1 = Wire.read (); } // Spustit I2C Transmission Wire.beginTransmission (Addr); // Vyberte registr regulace vlhkosti Wire.write (0xF2); // Vlhkost nad vzorkovací frekvencí = 1 Wire.write (0x01); // Zastavení přenosu I2C Wire.endTransmission (); // Spusťte I2C Transmission Wire.beginTransmission (Addr); // Vyberte kontrolní měřicí registr Wire.write (0xF4); // Normální režim, teplota a tlak nad vzorkovací frekvencí = 1 Wire.write (0x27); // Zastavení přenosu I2C Wire.endTransmission (); // Spusťte I2C Transmission Wire.beginTransmission (Addr); // Vyberte konfigurační registr Wire.write (0xF5); // pohotovostní doba = 1000 ms Wire.write (0xA0); // Zastavení přenosu I2C Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Vyberte datový registr Wire.write ((247+i)); // Zastavení přenosu I2C Wire.endTransmission (); // Žádost o 1 bajt dat Wire.requestFrom (Addr, 1); // Přečíst 8 bytů dat if (Wire.available () == 1) {data = Wire.read (); }} // Převod údajů o tlaku a teplotě na 19 bitů dlouhý adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (dlouhý) (data [2] & 0xF0)) / 16; long adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (data [5] & 0xF0)) / 16; // Převod údajů o vlhkosti long adc_h = ((long) (data [6] & 0xFF) * 256 + (long) (data [7] & 0xFF)); // Výpočty teplotního ofsetu 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); double t_fine = (long) (var1 + var2); double cTemp = (var1 + var2) / 5120.0; zdvojnásobit fTemp = cTemp * 1,8 + 32; // Výpočty ofsetu tlaku var1 = ((double) t_fine / 2.0) - 64000,0; var2 = var1 * var1 * ((double) dig_P6) / 32768.0; var2 = var2 + var1 * (((double) dig_P5) * 2,0; var2 = (var2 / 4.0) + ((((double) dig_P4) * 65536.0); var1 = ((((double) dig_P3) * var1 * var1 / 524288.0 + ((double) dig_P2) * var1) / 524288.0; var1 = (1,0 + var1 / 32768.0) * ((dvojitý) dig_P1); double p = 1048576.0 - (double) adc_p; p = (p - (var2 / 4096,0)) * 6250,0 / var1; var1 = ((double) dig_P9) * p * p / 2147483648.0; var2 = p * ((double) dig_P8) / 32768.0; dvojnásobný tlak = (p + (var1 + var2 + ((double) dig_P7)) / 16,0) / 100; // Výpočty ofsetu vlhkosti 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))); dvojnásobná vlhkost = var_H * (1,0 - dig_H1 * var_H / 524288,0); if (vlhkost> 100,0) {vlhkost = 100,0; } else if (vlhkost <0,0) {vlhkost = 0,0; } // Výstup dat na řídicí panel Particle.publish ("Teplota ve stupních Celsia:", String (cTemp)); Particle.publish ("Teplota ve stupních Fahrenheita:", řetězec (fTemp)); Particle.publish ("Tlak:", řetězec (tlak)); Particle.publish („Relativní vlhkost:“, Řetězec (vlhkost)); zpoždění (1000); }

Krok 5: Aplikace:

Aplikace
Aplikace

Snímač teploty, tlaku a relativní vlhkosti BME280 má různé průmyslové aplikace, jako je monitorování teploty, periferní tepelná ochrana počítače, monitorování tlaku v průmyslu. Tento senzor jsme také použili v aplikacích meteorologických stanic a v systému monitorování skleníků.

Jiné aplikace mohou zahrnovat:

  1. Informovanost o kontextu, např. detekce kůže, detekce změny místnosti.
  2. Monitorování kondice / pohody - Varování týkající se sucha nebo vysokých teplot.
  3. Měření objemu a průtoku vzduchu.
  4. Ovládání domácí automatizace.
  5. Ovládejte topení, větrání, klimatizaci (HVAC).
  6. Internet věcí.
  7. Vylepšení GPS (např. Zlepšení doby do první opravy, mrtvé zúčtování, detekce sklonu).
  8. Vnitřní navigace (změna detekce podlahy, detekce výtahu).
  9. Venkovní navigace, aplikace pro volný čas a sport.
  10. Předpověď počasí.
  11. Indikace svislé rychlosti (rychlost stoupání/klesání)..

Krok 6: Videonávod

Podívejte se na náš video tutoriál, který vás provede všemi kroky v propojení a dokončení projektu.

Zůstaňte naladěni na rozhraní dalších senzorů a fungující blogy.

Doporučuje: