Obsah:
- Krok 1: Prieskum BME280
- Krok 2: Zoznam hardvérových požiadaviek
- Krok 3: Rozhranie
- Krok 4: Kód monitorovania teploty, tlaku a vlhkosti
- Krok 5: Aplikácie:
- Krok 6: Videonávod
Video: Výpočet vlhkosti, tlaku a teploty pomocou rozhrania BME280 a fotónového rozhrania .: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:56
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
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
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
Č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
Č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:
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ť:
- Uvedomenie si kontextu, napr. detekcia pokožky, detekcia zmeny miestnosti.
- Monitorovanie kondície / pohoda - Varovanie týkajúce sa sucha alebo vysokých teplôt.
- Meranie objemu a prietoku vzduchu.
- Ovládanie domácej automatizácie.
- Ovládajte kúrenie, vetranie, klimatizáciu (HVAC).
- Internet vecí.
- Vylepšenie GPS (napr. Zlepšenie času do prvej opravy, zúčtovanie mŕtveho bodu, detekcia sklonu).
- Vnútorná navigácia (zmena detekcie podlahy, detekcia výťahu).
- Vonkajšia navigácia, aplikácie pre voľný čas a šport.
- Predpoveď počasia.
- 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:
Vizualizácia barometrického tlaku a teploty pomocou Infineon XMC4700 RelaxKit, Infineon DPS422 a AWS .: 8 krokov
Vizualizácia barometrického tlaku a teploty pomocou zariadení Infineon XMC4700 RelaxKit, Infineon DPS422 a AWS .: Jedná sa o jednoduchý projekt na zachytenie barometrického tlaku a teploty pomocou systému Infineon DPS 422. Sledovanie tlaku a teploty za určité časové obdobie sa stáva nemotorným. Tu prichádza na scénu analytika, pohľad na zmenu v
Výpočet intenzity svetla pomocou BH1715 a Arduino Nano: 5 krokov
Výpočet intenzity svetla pomocou BH1715 a Arduino Nano: Včera sme pracovali na LCD displejoch a pri ich práci sme si uvedomili dôležitosť výpočtu intenzity svetla. Intenzita svetla nie je dôležitá len vo fyzickej oblasti tohto sveta, ale má svoju dobre uvedenú úlohu v biologickom
Výpočet intenzity svetla pomocou BH1715 a fotónu častíc: 5 krokov
Výpočet intenzity svetla pomocou BH1715 a fotónu častíc: Včera sme pracovali na LCD displejoch a pri ich práci sme si uvedomili dôležitosť výpočtu intenzity svetla. Intenzita svetla nie je dôležitá len vo fyzickej oblasti tohto sveta, ale má svoju dobre uvedenú úlohu v biologickom
Zostavte snímač teploty Apple HomeKit (BME280) pomocou RaspberryPI a BME280: 5 krokov
Zostavte snímač teploty Apple HomeKit (BME280) pomocou RaspberryPI a BME280: Posledných niekoľko mesiacov som sa hrával so zariadeniami IOT a nasadil som asi 10 rôznych senzorov na monitorovanie podmienok v okolí môjho domu a chaty. A pôvodne som začal používať mierny snímač vlhkosti AOSONG DHT22
Záznamník teploty, relatívnej vlhkosti a atmosférického tlaku s pripojením Raspberry Pi a TE MS8607-02BA01: 22 krokov (s obrázkami)
Záznamník teploty, relatívnej vlhkosti a atmosférického tlaku pomocou konektorov Raspberry Pi a TE MS8607-02BA01: Úvod: V tomto projekte vám ukážem, ako krok za krokom zostaviť systém protokolovania pre teplotnú vlhkosť a atmosférický tlak. Tento projekt je založený na čipe environmentálneho senzorového čipu Raspberry Pi 3 Model B a TE Connectivity MS8607-02BA