Obsah:

Výpočet vlhkosti, tlaku a teploty pomocou rozhrania BME280 a fotónového rozhrania .: 6 krokov
Výpočet vlhkosti, tlaku a teploty pomocou rozhrania BME280 a fotónového rozhrania .: 6 krokov

Video: Výpočet vlhkosti, tlaku a teploty pomocou rozhrania BME280 a fotónového rozhrania .: 6 krokov

Video: Výpočet vlhkosti, tlaku a teploty pomocou rozhrania BME280 a fotónového rozhrania .: 6 krokov
Video: Lesson 37: Using BME280 Humidity, Barometric Pressure and Temperature Sensor 2024, Júl
Anonim
Výpočet vlhkosti, tlaku a teploty pomocou BME280 a fotónového rozhrania
Výpočet vlhkosti, tlaku a teploty pomocou BME280 a fotónového rozhrania

Stretávame sa s rôznymi projektmi, ktoré vyžadujú monitorovanie teploty, tlaku a vlhkosti. Uvedomujeme si, že tieto parametre skutočne hrajú zásadnú úlohu pri odhade pracovnej účinnosti systému za rôznych atmosférických podmienok. Na priemyselnej úrovni aj v osobných systémoch je pre adekvátny výkon systému potrebná optimálna teplota, vlhkosť a barometrický tlak.

Preto poskytujeme kompletný návod k tomuto senzoru. V tomto tutoriále vám vysvetlíme fungovanie senzora vlhkosti, tlaku a teploty BME280 s fotónom častíc.

Krok 1: Prieskum BME280

Prieskum BME280
Prieskum BME280

Elektronický sektor zintenzívnil svoju hru so snímačom BME280, snímačom prostredia s teplotou, barometrickým tlakom a vlhkosťou! Tento senzor je vynikajúci pre všetky druhy snímania počasia/životného prostredia a môže byť použitý aj v I2C.

Tento presný snímač BME280 je najlepším snímacím riešením na meranie vlhkosti s presnosťou ± 3%, barometrického tlaku s absolútnou presnosťou ± 1 hPa a teploty s presnosťou ± 1,0 ° C. Pretože sa tlak mení s nadmorskou výškou a merania tlaku sú také dobré, môžete ho použiť aj ako výškomer s presnosťou ± 1 meter alebo lepšou presnosťou! Teplotný snímač bol optimalizovaný na najnižšiu hlučnosť a najvyššie rozlíšenie a používa sa na teplotnú kompenzáciu snímač tlaku a môže byť tiež použitý na odhad okolitej teploty. Merania pomocou BME280 môže vykonávať užívateľ alebo ich vykonávať v pravidelných intervaloch.

Dátový list: Kliknutím zobrazíte náhľad alebo stiahnete katalógový list senzora BME280.

Krok 2: Zoznam hardvérových požiadaviek

Zoznam hardvérových požiadaviek
Zoznam hardvérových požiadaviek

Použili sme úplne Dcube Store Parts, pretože sa ľahko používajú, a niečo o tom, že všetko pekne sedí na centimetrovej mriežke, nás skutočne dostalo do pohybu. Môžete použiť čokoľvek, čo chcete, ale schéma zapojenia predpokladá, že používate tieto diely.

  • Mini modul senzora BME280 I²C
  • I²C štít pre časticový fotón
  • Fotón častíc
  • I²C kábel
  • Nabíjačka

Krok 3: Rozhranie

Rozhranie
Rozhranie

Časť prepojenia v zásade vysvetľuje zapojenie potrebné medzi snímačom a fotónom častíc. Zabezpečenie správneho pripojenia je základnou potrebou pri práci na akomkoľvek systéme s požadovaným výstupom. Potrebné spojenia sú teda tieto:

BME280 bude fungovať cez I2C. Tu je príklad schémy zapojenia, ktorá ukazuje, ako prepojiť každé rozhranie snímača. Hneď po vybalení je doska nakonfigurovaná na rozhranie I2C, preto odporúčame toto rozhranie použiť, ak ste inak agnostik. Všetko, čo potrebujete, sú štyri drôty! Vyžadujú sa iba štyri pripojenia Vcc, Gnd, SCL a SDA piny, ktoré sú prepojené pomocou kábla I2C. Tieto spojenia sú znázornené na obrázkoch vyššie.

Krok 4: Kód monitorovania teploty, tlaku a vlhkosti

Kód monitorovania teploty, tlaku a vlhkosti
Kód monitorovania teploty, tlaku a vlhkosti
Kód monitorovania teploty, tlaku a vlhkosti
Kód monitorovania teploty, tlaku a vlhkosti

Čistá verzia kódu, ktorý použijeme na jeho spustenie, je k dispozícii TU.

Pri použití senzorového modulu s Arduino zahrnujeme knižnicu application.h a spark_wiring_i2c.h. Knižnica "application.h" a spark_wiring_i2c.h obsahuje funkcie, ktoré uľahčujú i2c komunikáciu medzi senzorom a časticou.

Kliknutím SEM otvoríte webovú stránku na monitorovanie zariadenia

Nahrajte kód na svoju nástenku a malo by začať fungovať! Všetky údaje je možné získať na webovej stránke, ako je znázornené na obrázku.

Kód je uvedený nižšie:

// Distribuované s licenciou slobodnej vôle.// Používajte ho akýmkoľvek spôsobom chcete, so ziskom alebo zadarmo, za predpokladu, že sa zmestí do licencií súvisiacich diel. // BME280 // Tento kód je navrhnutý tak, aby fungoval s mini modulom BME280_I2CS I2C, ktorý je k dispozícii na ControlEverything.com. #include #include // Adresa BME280 I2C je 0x76 (108) #define Addr 0x76 dvojité cTemp = 0, fTemp = 0, tlak = 0, vlhkosť = 0; void setup () {// Nastaviť premennú Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Častica.proměnná ("tlak", tlak); Častica.proměnná ("vlhkosť", vlhkosť); // Inicializujte komunikáciu I2C ako MASTER Wire.begin (); // Inicializácia sériovej komunikácie, nastavenie prenosovej rýchlosti = 9600 Serial.begin (9600); oneskorenie (300); } void loop () {unsigned int b1 [24]; nepodpísané int údaje [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Spustenie prenosu I2C Wire.beginTransmission (Addr); // Vyberte dátový register Wire.write ((136+i)); // Zastavenie prenosu I2C Wire.endTransmission (); // Požiadajte o 1 bajt údajov Wire.requestFrom (Addr, 1); // Prečítajte 24 bajtov údajov, ak (Wire.available () == 1) {b1 = Wire.read (); }} // Previesť údaje // dočasné koeficienty int dig_T1 = (b1 [0] & 0xff) + ((b1 [1] & 0xff) * 256); int dig_T2 = b1 [2] + (bl [3] * 256); int dig_T3 = b1 [4] + (bl [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] + (bl [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 ++) {// Spustenie prenosu I2C Wire.beginTransmission (Addr); // Vyberte dátový register Wire.write ((225+i)); // Zastavenie prenosu I2C Wire.endTransmission (); // Požiadajte o 1 bajt údajov Wire.requestFrom (Addr, 1); // Prečítajte 7 bajtov údajov, ak (Wire.available () == 1) {b1 = Wire.read (); }} // Prevod údajov // koeficienty vlhkosti int dig_H2 = b1 [0] + (b1 [1] * 256); int dig_H3 = b1 [2] & 0xFF; int dig_H4 = (bl [3] * 16) + (bl [4] & 0xF); int dig_H5 = (bl [4] / 16) + (bl [5] * 16); int dig_H6 = b1 [6]; // Spustenie prenosu I2C Wire.beginTransmission (Addr); // Vyberte dátový register Wire.write (161); // Zastavenie prenosu I2C Wire.endTransmission (); // Požiadajte o 1 bajt údajov Wire.requestFrom (Addr, 1); // Prečítajte 1 bajt údajov, ak (Wire.available () == 1) {dig_H1 = Wire.read (); } // Spustite prenos I2C Wire.beginTransmission (Addr); // Vyberte register regulácie vlhkosti Wire.write (0xF2); // Vlhkosť nad vzorkovacou frekvenciou = 1 Wire.write (0x01); // Zastavenie prenosu I2C Wire.endTransmission (); // Spustenie prenosu I2C Wire.beginTransmission (Addr); // Vyberte register merania merania Wire.write (0xF4); // Normálny režim, teplota a tlak nad vzorkovacou frekvenciou = 1 Wire.write (0x27); // Zastavenie prenosu I2C Wire.endTransmission (); // Spustenie prenosu I2C Wire.beginTransmission (Addr); // Vyberte konfiguračný register Wire.write (0xF5); // Pohotovostný čas = 1000ms Wire.write (0xA0); // Zastavenie prenosu I2C Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Spustenie prenosu I2C Wire.beginTransmission (Addr); // Vyberte dátový register Wire.write ((247+i)); // Zastavenie prenosu I2C Wire.endTransmission (); // Požiadajte o 1 bajt údajov Wire.requestFrom (Addr, 1); // Prečítajte 8 bajtov údajov, ak (Wire.available () == 1) {data = Wire.read (); }} // Previesť údaje o tlaku a teplote na 19-bitové dlhé adc_p = (((dlhé) (údaje [0] & 0xFF) * 65536) + ((dlhé) (údaje [1] a 0xFF) * 256) + (dlho) (údaje [2] & 0xF0)) / 16; dlhé adc_t = (((dlhé) (údaje [3] a 0xFF) * 65536) + ((dlhé) (údaje [4] a 0xFF) * 256) + (dlhé) (údaje [5] a 0xF0)) / 16; // Konvertovanie údajov 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); dvojnásobok cTemp = (var1 + var2) / 5120,0; dvojnásobok 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 * (((dvojité) 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 * ((dvojité) 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á vlhkosť = var_H * (1,0 - dig_H1 * var_H / 524288,0); if (vlhkosť> 100,0) {vlhkosť = 100,0; } else if (vlhkosť <0,0) {vlhkosť = 0,0; } // Výstup údajov na palubnú dosku Particle.publish ("Teplota v stupňoch Celzia:", reťazec (cTemp)); Particle.publish („Teplota vo Fahrenheite:“, reťazec (fTemp)); Particle.publish ("Tlak:", Reťazec (tlak)); Particle.publish ("Relatívna vlhkosť:", Reťazec (vlhkosť)); oneskorenie (1000); }

Krok 5: Aplikácie:

Aplikácie
Aplikácie

Snímač teploty, tlaku a relatívnej vlhkosti BME280 má rôzne priemyselné aplikácie, ako je monitorovanie teploty, počítačová periférna tepelná ochrana, monitorovanie tlaku v priemysle. Tento senzor sme použili aj v aplikáciách meteorologických staníc a v systéme monitorovania skleníkov.

Ďalšie aplikácie môžu zahŕňať:

  1. Uvedomenie si kontextu, napr. detekcia pokožky, detekcia zmeny miestnosti.
  2. Monitorovanie kondície / pohoda - Varovanie týkajúce sa sucha alebo vysokých teplôt.
  3. Meranie objemu a prietoku vzduchu.
  4. Ovládanie domácej automatizácie.
  5. Ovládajte kúrenie, vetranie, klimatizáciu (HVAC).
  6. Internet vecí.
  7. Vylepšenie GPS (napr. Zlepšenie času do prvej opravy, zúčtovanie mŕtveho bodu, detekcia sklonu).
  8. Vnútorná navigácia (zmena detekcie podlahy, detekcia výťahu).
  9. Vonkajšia navigácia, aplikácie pre voľný čas a šport.
  10. Predpoveď počasia.
  11. Indikácia vertikálnej rýchlosti (rýchlosť stúpania/klesania)..

Krok 6: Videonávod

Pozrite si náš video návod, ktorý vás prevedie všetkými krokmi v prepojení a dokončení projektu.

Zostaňte naladení na ďalšie rozhrania senzorov a pracovné blogy.

Odporúča: