Tartalomjegyzék:
- 1. lépés: BME280 feltárása
- 2. lépés: Hardverkövetelmények listája
- 3. lépés: Interfész
- 4. lépés: Hőmérséklet, nyomás és páratartalom ellenőrző kód
- 5. lépés: Alkalmazások:
- 6. lépés: Videó bemutató
Videó: Páratartalom, nyomás és hőmérséklet számítása BME280 és foton interfész használatával: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Különféle projektekkel találkozunk, amelyek hőmérséklet-, nyomás- és páratartalom -ellenőrzést igényelnek. Így rájövünk, hogy ezek a paraméterek valójában létfontosságú szerepet játszanak abban, hogy megbecsüljék a rendszer működési hatékonyságát különböző légköri körülmények között. Mind az ipari, mind a személyi rendszereknél optimális hőmérséklet, páratartalom és légnyomás szükséges a rendszer megfelelő teljesítményéhez.
Ezért teljes oktatóanyagot nyújtunk erről az érzékelőről, ebben az oktatóanyagban elmagyarázzuk a BME280 páratartalom-, nyomás- és hőmérséklet -érzékelő működését részecskefotonnal.
1. lépés: BME280 feltárása
Az elektronikus szektor fokozta játékát a BME280 érzékelővel, amely környezeti érzékelő hőmérséklet, légnyomás és páratartalom tekintetében! Ez az érzékelő nagyszerű mindenféle időjárási/környezeti érzékeléshez, és akár I2C -ben is használható.
Ez a BME280 precíziós érzékelő a legjobb érzékelő megoldás a páratartalom ± 3% -os pontossággal, a légnyomás ± 1 hPa abszolút pontossággal és a hőmérséklet ± 1,0 ° C pontossággal történő mérésére. Mivel a nyomás a tengerszint feletti magassággal változik, és a nyomásmérések olyan jók, magasságmérőként is használható ± 1 méteres vagy jobb pontossággal! A hőmérséklet -érzékelőt a legalacsonyabb zajra és a legnagyobb felbontásra optimalizálták, és a hőmérséklet kompenzálására használják a nyomásérzékelő, és a környezeti hőmérséklet becslésére is használható. A BME280 készülékkel végzett méréseket a felhasználó elvégezheti, vagy rendszeres időközönként elvégezheti.
Adatlap: Kattintson ide a BME280 érzékelő adatlapjának megtekintéséhez vagy letöltéséhez.
2. lépés: Hardverkövetelmények listája
Teljesen a Dcube Store alkatrészeket használtuk, mert könnyen kezelhetők, és valami, ami szépen illeszkedik egy centiméteres rácsra, valóban elindít minket. Bármit használhat, de a kapcsolási rajz feltételezi, hogy ezeket az alkatrészeket használja.
- BME280 érzékelő I²C mini modul
- I²C pajzs részecske fotonhoz
- Foton részecske
- I²C kábel
- Adapter
3. lépés: Interfész
Az interfész szakasz alapvetően elmagyarázza az érzékelő és a részecske -foton között szükséges huzalozási kapcsolatokat. A megfelelő kapcsolatok biztosítása az alapvető szükséglet, amikor bármilyen rendszeren dolgozik a kívánt kimenet érdekében. Tehát a szükséges kapcsolatok a következők:
A BME280 az I2C -n keresztül fog működni. Íme a példa kapcsolási rajz, amely bemutatja, hogyan kell bekötni az érzékelő egyes interfészeit. A doboz készenlétben I2C interfészre van konfigurálva, ezért javasoljuk, hogy ezt az interfészt használja, ha egyébként agnosztikus. Csak négy vezetékre van szüksége! Csak négy csatlakozóra van szükség Vcc, Gnd, SCL és SDA csapokra, és ezeket I2C kábel segítségével kell csatlakoztatni. Ezeket az összefüggéseket a fenti képek mutatják be.
4. lépés: Hőmérséklet, nyomás és páratartalom ellenőrző kód
A kód futtatásához használt tiszta verziója ITT érhető el.
Miközben az érzékelő modult használja az Arduino -val, az application.h és a spark_wiring_i2c.h könyvtárat is tartalmazza. Az "application.h" és a spark_wiring_i2c.h könyvtár azokat a funkciókat tartalmazza, amelyek megkönnyítik az i2c kommunikációt az érzékelő és a részecske között.
Kattintson IDE a készülék felügyeletére szolgáló weboldal megnyitásához
Töltse fel a kódot a táblára, és már működnie kell! Minden adat megtalálható a weboldalon a képen látható módon.
A kód az alábbiakban található:
// Szabad akaratú licenccel terjesztve. // BME280 // Ezt a kódot a ControlEverything.com webhelyen elérhető BME280_I2CS I2C Mini modullal való együttműködésre tervezték. #include #include // A BME280 I2C címe 0x76 (108) #define Addr 0x76 dupla cTemp = 0, fTemp = 0, nyomás = 0, páratartalom = 0; void setup () {// Particle.variable változó beállítása ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Részecske.változó ("nyomás", nyomás); Részecske.változó ("páratartalom", páratartalom); // Inicializálja az I2C kommunikációt MASTER Wire néven.begin (); // Soros kommunikáció inicializálása, átviteli sebesség beállítása = 9600 Serial.begin (9600); késleltetés (300); } void loop () {unsigned int b1 [24]; előjel nélküli int adatok [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Adatregiszter kiválasztása Wire.write ((136+i)); // Stop I2C Transmission Wire.endTransmission (); // 1 bájt adat kérése Wire.requestFrom (Addr, 1); // 24 bájt adat olvasása, ha (Wire.available () == 1) {b1 = Wire.read (); }} // Az adatok konvertálása // hőmérsékleti együtthatók 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); // nyomás együtthatói 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 ++) {// Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Adatregiszter kiválasztása Wire.write ((225+i)); // Stop I2C Transmission Wire.endTransmission (); // 1 bájt adat kérése Wire.requestFrom (Addr, 1); // Olvasson 7 bájt adatot, ha (Wire.available () == 1) {b1 = Wire.read (); }} // Az adatok konvertálása // páratartalom -együtthatók 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]; // Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Adatregiszter kiválasztása Wire.write (161); // Stop I2C Transmission Wire.endTransmission (); // 1 bájt adat kérése Wire.requestFrom (Addr, 1); // Olvasson 1 bájtnyi adatot, ha (Wire.available () == 1) {dig_H1 = Wire.read (); } // Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Válassza ki a vezérlő páratartalom regisztert Wire.write (0xF2); // Páratartalom mintavételi arány felett = 1 Wire.write (0x01); // Stop I2C Transmission Wire.endTransmission (); // Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Vezérlő mérési regiszter kiválasztása Wire.write (0xF4); // Normál mód, hőmérséklet és nyomás a mintavételi arány felett = 1 Wire.write (0x27); // Stop I2C Transmission Wire.endTransmission (); // Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Válassza ki a konfigurációs regisztert Wire.write (0xF5); // Készenléti idő = 1000 ms Wire.write (0xA0); // Stop I2C Transmission Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Indítsa el az I2C átviteli vezetéket.beginTransmission (Addr); // Adatregiszter kiválasztása Wire.write ((247+i)); // Stop I2C Transmission Wire.endTransmission (); // 1 bájt adat kérése Wire.requestFrom (Addr, 1); // Olvasson 8 bájt adatot, ha (Wire.available () == 1) {data = Wire.read (); }} // A nyomás- és hőmérsékleti adatok konvertálása 19 bites hosszúságúvá hosszú) (adatok [2] és 0xF0)) / 16; hosszú adc_t = (((hosszú) (adat [3] és 0xFF) * 65536) + ((hosszú) (adat [4] és 0xFF) * 256) + (hosszú) (adat [5] és 0xF0)) / 16; // A páratartalom adatainak hosszú konvertálása adc_h = ((hosszú) (adatok [6] és 0xFF) * 256 + (hosszú) (adatok [7] és 0xFF)); // Hőmérsékleteltolás számítások double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); dupla var2 = (((((kettős)) adc_t) / 131072.0 - ((dupla) dig_T1) / 8192.0) * (((kettős) adc_t) /131072.0 - ((dupla) dig_T1) / 8192.0)) * ((kettős) dig_T3); dupla t_finom = (hosszú) (var1 + var2); kettős cTemp = (var1 + var2) / 5120,0; kettős fTemp = cTemp * 1,8 + 32; // Nyomáseltolási számítások var1 = ((kettős) t_finom / 2.0) - 64000.0; var2 = var1 * var1 * ((kettős) dig_P6) / 32768.0; var2 = var2 + var1 * ((dupla) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((kettős) dig_P4) * 65536.0); var1 = (((kettős) dig_P3) * var1 * var1 / 524288.0 + ((kettős) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((kettős) dig_P1); kettős p = 1048576,0 - (kettős) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((kettős) dig_P9) * p * p / 2147483648.0; var2 = p * ((kettős) dig_P8) / 32768.0; kettős nyomás = (p + (var1 + var2 + ((dupla) dig_P7)) / 16,0) / 100; // Páratartalom eltolás számítások 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))); kettős páratartalom = var_H * (1,0 - dig_H1 * var_H / 524288.0); if (páratartalom> 100,0) {páratartalom = 100,0; } else if (páratartalom <0,0) {páratartalom = 0,0; } // Adatok kiadása a műszerfalra Particle.publish ("Hőmérséklet Celsius -ban:", String (cTemp)); Particle.publish ("Hőmérséklet Fahrenheitben:", String (fTemp)); Particle.publish ("Nyomás:", String (nyomás)); Particle.publish ("Relatív páratartalom:", String (páratartalom)); késleltetés (1000); }
5. lépés: Alkalmazások:
A BME280 hőmérséklet-, nyomás- és relatív páratartalom -érzékelő különféle ipari alkalmazásokat tartalmaz, mint például a hőmérséklet -felügyelet, a számítógép perifériás hővédelme, az ipar nyomásfigyelése. Ezt az érzékelőt alkalmaztuk az időjárás -állomások alkalmazásaiban, valamint az üvegházhatást figyelő rendszerben is.
Egyéb alkalmazások lehetnek:
- Kontextus -tudatosság, pl. bőrérzékelés, helyiségváltás észlelése.
- Fitness ellenőrzés / közérzet - Figyelmeztetés szárazságra vagy magas hőmérsékletre.
- A térfogat és a légáramlás mérése.
- Az otthoni automatizálás vezérlése.
- Fűtés, szellőzés, légkondicionálás (HVAC) vezérlése.
- A dolgok internete.
- GPS-javítás (pl. Az első javításhoz szükséges idő javítása, halott számítás, lejtésérzékelés).
- Beltéri navigáció (padlóváltás, lift észlelése).
- Kültéri navigációs, szabadidős és sport alkalmazások.
- Időjárás előrejelzés.
- Függőleges sebesség kijelzés (emelkedés/süllyedés sebessége).
6. lépés: Videó bemutató
Tekintse meg oktatóvideónkat, amelyen keresztülhaladhat az interfész és a projekt befejezésének lépésein.
Maradjon velünk a többi érzékelő interfészével és működő blogjával kapcsolatban.
Ajánlott:
M5STACK A hőmérséklet, a páratartalom és a nyomás megjelenítése az M5StickC ESP32 készüléken a Visuino használatával - Könnyen elvégezhető: 6 lépés
M5STACK A hőmérséklet, a páratartalom és a nyomás megjelenítése az M5StickC ESP32 készüléken a Visuino használatával - Könnyen elvégezhető: Ebben az oktatóanyagban megtanuljuk, hogyan programozhatjuk be az ESP32 M5Stack StickC programot Arduino IDE -vel és Visuino -val, hogy megjelenítse a hőmérsékletet, a páratartalmat és a nyomást az ENV érzékelő (DHT12, BMP280, BMM150)
Magasság, nyomás és hőmérséklet a Raspberry Pi használatával az MPL3115A2 segítségével: 6 lépés
Magasság, nyomás és hőmérséklet a Raspberry Pi használatával az MPL3115A2 segítségével: Érdekesen hangzik. Ez teljesen lehetséges ebben az időben, amikor mindannyian az IoT generációjába lépünk. Elektronikai furcsaságként a Raspberry Pi -vel játszottunk, és úgy döntöttünk, hogy érdekes projekteket készítünk ezen ismeretek felhasználásával. Ebben a projektben szeretnénk
Hőmérséklet- és páratartalom -érzékelő (dht11) Interfész az Arduino -val: 4 lépés
Hőmérséklet- és páratartalom -érzékelő (dht11) Interfész az Arduino -val: A hőmérséklet -érzékelő széles alkalmazási körrel rendelkezik, sok helyen használják, ahol visszacsatolási rendszerként működik. A piacon többféle hőmérséklet -érzékelő érhető el, különböző specifikációkkal, néhány hőérzékelő l
Arduino meteorológiai állomás a BMP280 -DHT11 használatával - Hőmérséklet, páratartalom és nyomás: 8 lépés
Arduino meteorológiai állomás a BMP280 -DHT11 használatával - Hőmérséklet, páratartalom és nyomás: Ebben az oktatóanyagban megtanuljuk, hogyan készítsünk időjárás -állomást, amely HŐMÉRSÉKLETET, PÁRÁT ÉS NYOMÁST jelenít meg a TFT 7735 LCD -kijelzőn
Hőmérséklet, relatív páratartalom, légköri nyomás regisztráló a Raspberry Pi és a TE Connectivity használatával MS8607-02BA01: 22 lépés (képekkel)
Hőmérséklet, relatív páratartalom, légköri nyomás naplózó a Raspberry Pi és a TE Connectivity használatával MS8607-02BA01: Bevezetés: Ebben a projektben megmutatom, hogyan kell lépésről lépésre létrehozni a beállításokat a hőmérséklet páratartalmára és a légköri nyomásra. Ez a projekt a Raspberry Pi 3 Model B és a TE Connectivity MS8607-02BA környezeti érzékelő chipen alapul