Innholdsfortegnelse:
- Trinn 1: BME280 Leting
- Trinn 2: Liste over maskinvarekrav
- Trinn 3: Grensesnitt
- Trinn 4: Overvåkningskode for temperatur, trykk og fuktighet
- Trinn 5: Søknader:
- Trinn 6: Videoopplæring
Video: Fuktighet, trykk og temperaturberegning ved bruk av BME280 og fotongrensesnitt .: 6 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
Vi støter på forskjellige prosjekter som krever temperatur-, trykk- og fuktighetsovervåking. Dermed innser vi at disse parameterne faktisk spiller en viktig rolle for å ha et estimat av arbeidseffektiviteten til et system under forskjellige atmosfæriske forhold. Både på industrinivå og personlige systemer er en optimal temperatur, fuktighet og barometrisk trykk nødvendig for systemets tilstrekkelige ytelse.
Dette er grunnen til at vi gir en komplett opplæring om denne sensoren, i denne opplæringen skal vi forklare hvordan BME280 fuktighets-, trykk- og temperatursensor fungerer med partikkelfoton.
Trinn 1: BME280 Leting
Elektronisk sektor har forsterket spillet sitt med BME280 -sensoren, en miljøsensor med temperatur, barometrisk trykk og fuktighet! Denne sensoren er flott for all slags vær-/miljøfølelse og kan til og med brukes i I2C.
Denne presisjonssensoren BME280 er den beste sanseløsningen for måling av fuktighet med ± 3% nøyaktighet, barometrisk trykk med ± 1 hPa absolutt nøyaktighet og temperatur med ± 1,0 ° C nøyaktighet. Fordi trykket endres med høyden, og trykkmålingene er så gode, kan du også bruke den som en høydemåler med ± 1 meter eller bedre nøyaktighet! Temperatursensoren er optimalisert for lavest støy og høyeste oppløsning og brukes til temperaturkompensasjon på trykksensoren og kan også brukes til estimering av omgivelsestemperatur. Målinger med BME280 kan utføres av brukeren eller utføres med jevne mellomrom.
Dataark: Klikk for å forhåndsvise eller laste ned databladet til BME280 -sensoren.
Trinn 2: Liste over maskinvarekrav
Vi brukte helt Dcube Store deler fordi de er enkle å bruke, og noe om at alt passer fint på et centimeter rutenett, får oss virkelig til å gå. Du kan bruke hva du vil, men koblingsskjemaet antar at du bruker disse delene.
- BME280 Sensor I²C minimodul
- I²C -skjold for partikkelfoton
- Partikkelfoton
- I²C -kabel
- Strømadapter
Trinn 3: Grensesnitt
Grensesnittdelen forklarer i utgangspunktet ledningsforbindelsene som kreves mellom sensoren og partikkelfotonet. Å sikre riktige tilkoblinger er den grunnleggende nødvendigheten mens du arbeider på et hvilket som helst system for ønsket utgang. Så de nødvendige tilkoblingene er som følger:
BME280 fungerer over I2C. Her er eksempel på koblingsskjema, som viser hvordan du kobler til hvert grensesnitt på sensoren. Uten boksen er brettet konfigurert for et I2C-grensesnitt, derfor anbefaler vi å bruke dette grensesnittet hvis du ellers er agnostiker. Alt du trenger er fire ledninger! Bare fire tilkoblinger kreves Vcc, Gnd, SCL og SDA -pinner, og disse er koblet til ved hjelp av I2C -kabel. Disse sammenhengene er vist på bildene ovenfor.
Trinn 4: Overvåkningskode for temperatur, trykk og fuktighet
Den rene versjonen av koden som vi skal bruke til å kjøre denne er tilgjengelig HER.
Mens vi bruker sensormodulen med Arduino, inkluderer vi application.h og spark_wiring_i2c.h biblioteket. "application.h" og spark_wiring_i2c.h biblioteket inneholder funksjonene som letter i2c -kommunikasjonen mellom sensoren og partikkelen.
Klikk HER for å åpne nettsiden for enhetsovervåking
Last opp koden til brettet ditt, og den skal begynne å fungere! Alle dataene kan fås på nettsiden som vist på bildet.
Koden er gitt nedenfor:
// Distribuert med en fri viljelisens. // Bruk den på hvilken som helst måte du vil, fortjeneste eller gratis, forutsatt at den passer inn i lisensene til de tilhørende verkene. // BME280 // Denne koden er designet for å fungere med BME280_I2CS I2C Mini Module tilgjengelig fra ControlEverything.com. #include #include // BME280 I2C -adressen er 0x76 (108) #define Addr 0x76 dobbel cTemp = 0, fTemp = 0, trykk = 0, fuktighet = 0; void setup () {// Angi variabel Particle.variable ("i2cdevice", "BME280"); artikkel.variabel ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Partikkel.variabel ("trykk", trykk); Partikkel.variabel ("fuktighet", fuktighet); // Initialiser I2C -kommunikasjon som MASTER Wire.begin (); // Initialize Serial communication, set baud rate = 9600 Serial.begin (9600); forsinkelse (300); } void loop () {unsigned int b1 [24]; usignerte int -data [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Velg dataregister Wire.write ((136+i)); // Stopp I2C Transmission Wire.endTransmission (); // Be om 1 byte med data Wire.requestFrom (Addr, 1); // Les 24 byte med data hvis (Wire.available () == 1) {b1 = Wire.read (); }} // Konverter dataene // temp koeffisienter 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); // trykkoeffisienter 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); // Velg dataregister Wire.write ((225+i)); // Stopp I2C Transmission Wire.endTransmission (); // Be om 1 byte med data Wire.requestFrom (Addr, 1); // Les 7 byte med data hvis (Wire.available () == 1) {b1 = Wire.read (); }}} // Konverter dataene // fuktighetskoeffisienter 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]; // Start I2C Transmission Wire.beginTransmission (Addr); // Velg dataregister Wire.write (161); // Stopp I2C Transmission Wire.endTransmission (); // Be om 1 byte med data Wire.requestFrom (Addr, 1); // Les 1 byte med data hvis (Wire.available () == 1) {dig_H1 = Wire.read (); } // Start I2C Transmission Wire.beginTransmission (Addr); // Velg kontrollfuktighetsregister Wire.write (0xF2); // Fuktighet over samplingsfrekvens = 1 Wire.write (0x01); // Stopp I2C Transmission Wire.endTransmission (); // Start I2C Transmission Wire.beginTransmission (Addr); // Velg kontrollmålingsregister Wire.write (0xF4); // Normal modus, temperatur og trykk over samplingshastigheten = 1 Wire.write (0x27); // Stopp I2C Transmission Wire.endTransmission (); // Start I2C Transmission Wire.beginTransmission (Addr); // Velg konfigurasjonsregister Wire.write (0xF5); // Standby -tid = 1000ms Wire.write (0xA0); // Stopp I2C Transmission Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Velg dataregister Wire.write ((247+i)); // Stopp I2C Transmission Wire.endTransmission (); // Be om 1 byte med data Wire.requestFrom (Addr, 1); // Les 8 byte med data hvis (Wire.available () == 1) {data = Wire.read (); }}} // Konverter trykk- og temperaturdata til 19-bits lange adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (lang) (data [2] & 0xF0)) / 16; long adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (data [5] & 0xF0)) / 16; // Konverter fuktighetsdata long adc_h = ((long) (data [6] & 0xFF) * 256 + (long) (data [7] & 0xFF)); // Temperaturforskyvningsberegninger dobbel var1 = (((dobbel) adc_t) / 16384.0 - ((dobbel) dig_T1) / 1024.0) * ((dobbel) 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); dobbel t_fine = (lang) (var1 + var2); dobbelt cTemp = (var1 + var2) / 5120,0; dobbelt fTemp = cTemp * 1,8 + 32; // Trykkforskyvningsberegninger var1 = ((dobbel) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((dobbel) dig_P6) / 32768.0; var2 = var2 + var1 * ((dobbel) dig_P5) * 2,0; var2 = (var2 / 4.0) + (((dobbel) dig_P4) * 65536.0); var1 = (((dobbel) dig_P3) * var1 * var1 / 524288.0 + ((dobbel) dig_P2) * var1) / 524288.0; var1 = (1,0 + var1 / 32768,0) * ((dobbel) dig_P1); dobbel p = 1048576.0 - (dobbel) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((dobbel) dig_P9) * p * p / 2147483648.0; var2 = p * ((dobbel) dig_P8) / 32768.0; dobbelt trykk = (p + (var1 + var2 + ((dobbelt) dig_P7)) / 16,0) / 100; // Beregninger av fuktighetsforskyvning dobbel var_H = (((dobbel) t_fin) - 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))); dobbel fuktighet = var_H * (1,0 - dig_H1 * var_H / 524288,0); hvis (fuktighet> 100,0) {fuktighet = 100,0; } annet hvis (fuktighet <0,0) {fuktighet = 0,0; } // Utdata til dashbordet Particle.publish ("Temperature in Celsius:", String (cTemp)); Particle.publish ("Temperatur i Fahrenheit:", String (fTemp)); Particle.publish ("Pressure:", String (press)); Particle.publish ("Relativ fuktighet:", streng (fuktighet)); forsinkelse (1000); }
Trinn 5: Søknader:
BME280 temperatur-, trykk- og relativ fuktighetssensor har forskjellige industrielle applikasjoner som temperaturovervåking, datamaskinens perifere termiske beskyttelse, trykkovervåking i industrien. Vi har også brukt denne sensoren til værstasjonsapplikasjoner samt drivhusovervåkingssystem.
Andre applikasjoner kan omfatte:
- Kontekstbevissthet, f.eks. huddeteksjon, romendringsdeteksjon.
- Treningsovervåking / velvære - Advarsel angående tørrhet eller høye temperaturer.
- Måling av volum og luftstrøm.
- Hjemmeautomatiseringskontroll.
- Kontroller varme, ventilasjon, klimaanlegg (HVAC).
- Internett av ting.
- GPS-forbedring (f.eks. Forbedring av tid til første-reparasjon, dødt oppgjør, deteksjon av skråninger).
- Innendørs navigasjon (endring av gulvdeteksjon, heisdeteksjon).
- Utendørs navigasjon, fritid og sport.
- Værmelding.
- Vertikal hastighetsindikasjon (stigning/synkehastighet)..
Trinn 6: Videoopplæring
Se videoopplæringen vår for å gå gjennom alle trinnene i grensesnitt og fullføring av prosjektet.
Følg med for andre sensorers grensesnitt og arbeidsblogger.
Anbefalt:
M5STACK Slik viser du temperatur, fuktighet og trykk på M5StickC ESP32 ved hjelp av Visuino - Enkelt å gjøre: 6 trinn
M5STACK Slik viser du temperatur, fuktighet og trykk på M5StickC ESP32 ved hjelp av Visuino - enkelt å gjøre: I denne opplæringen lærer vi hvordan du programmerer ESP32 M5Stack StickC med Arduino IDE og Visuino for å vise temperatur, fuktighet og trykk ved hjelp av ENV -sensor (DHT12, BMP280, BMM150)
Overvåkning av temperatur og fuktighet ved bruk av NODE MCU OG BLYNK: 5 trinn
Overvåkning av temperatur og fuktighet ved bruk av NODE MCU OG BLYNK: Hei Gutter I denne instruksen kan vi lære hvordan du får temperatur og fuktighet i atmosfæren ved hjelp av DHT11-temperatur- og fuktighetssensor ved hjelp av Node MCU og BLYNK-appen
DHT -overvåking av temperatur og fuktighet ved bruk av ESP8266 og AskSensors IoT -plattform: 8 trinn
Overvåkning av temperatur og fuktighet i DHT ved bruk av ESP8266 og AskSensors IoT -plattform: I en tidligere instruksjon presenterte jeg en trinnvis veiledning for å komme i gang med ESP8266 -nodenMCU og AskSensors IoT -plattformen. I denne opplæringen kobler jeg til en DHT11 -sensor til noden MCU. DHT11 er en vanlig temperatur og fuktighet
Overvåkning av temperatur og fuktighet ved bruk av ESP-01 & DHT og AskSensors Cloud: 8 trinn
Overvåkning av temperatur og fuktighet ved bruk av ESP-01 & DHT og AskSensors Cloud: I denne instruksen skal vi lære å overvåke temperatur og fuktighetsmålinger ved hjelp av IOT-MCU/ESP-01-DHT11-kortet og AskSensors IoT-plattform .Jeg velger IOT-MCU ESP-01-DHT11-modulen for denne applikasjonen fordi den
Arduino værstasjon ved bruk av BMP280 -DHT11 - Temperatur, fuktighet og trykk: 8 trinn
Arduino værstasjon ved bruk av BMP280 -DHT11 - Temperatur, fuktighet og trykk: I denne opplæringen lærer vi hvordan du lager en værstasjon som viser en TEMPERATUR, Fuktighet og trykk på LCD -skjermen TFT 7735 Se en demonstrasjonsvideo