Taula de continguts:

Càlcul d’humitat, pressió i temperatura mitjançant BME280 i interfície de fotons: 6 passos
Càlcul d’humitat, pressió i temperatura mitjançant BME280 i interfície de fotons: 6 passos

Vídeo: Càlcul d’humitat, pressió i temperatura mitjançant BME280 i interfície de fotons: 6 passos

Vídeo: Càlcul d’humitat, pressió i temperatura mitjançant BME280 i interfície de fotons: 6 passos
Vídeo: ИНКУБАТОР, как ПОНИЖАТЬ или ПОВЫШАТЬ ВЛАЖНОСТЬ. 2024, Juliol
Anonim
Càlcul d’humitat, pressió i temperatura mitjançant BME280 i interfície de fotons
Càlcul d’humitat, pressió i temperatura mitjançant BME280 i interfície de fotons

Ens trobem amb diversos projectes que requereixen un control de temperatura, pressió i humitat. Per tant, ens adonem que aquests paràmetres realment tenen un paper vital a l’hora de tenir una estimació de l’eficiència de treball d’un sistema en diferents condicions atmosfèriques. Tant a nivell industrial com als sistemes personals, es requereix un nivell òptim de temperatura, humitat i pressió baromètrica per al funcionament adequat del sistema.

És per això que proporcionem un tutorial complet sobre aquest sensor, en aquest tutorial explicarem el funcionament del sensor d’humitat, pressió i temperatura BME280 amb fotó de partícules.

Pas 1: exploració BME280

Exploració BME280
Exploració BME280

El sector electrònic ha intensificat el seu joc amb el sensor BME280, un sensor ambiental amb temperatura, pressió baromètrica i humitat. Aquest sensor és ideal per a tota mena de detecció meteorològica / ambiental i fins i tot es pot utilitzar a I2C.

Aquest sensor de precisió BME280 és la millor solució de detecció per mesurar la humitat amb una precisió del ± 3%, la pressió baromètrica amb una precisió absoluta de ± 1 hPa i la temperatura amb una precisió de ± 1,0 ° C. Com que la pressió canvia amb l’altitud i les mesures de pressió són tan bones, també podeu utilitzar-lo com a altímetre amb una precisió de ± 1 metre o millor. El sensor de temperatura s’ha optimitzat per obtenir el màxim soroll i la màxima resolució i s’utilitza per el sensor de pressió i també es pot utilitzar per estimar la temperatura ambiental. Les mesures amb el BME280 poden ser realitzades per l'usuari o realitzades a intervals regulars.

Full de dades: feu clic per previsualitzar o descarregar el full de dades del sensor BME280.

Pas 2: llista de requisits de maquinari

Llista de requisits de maquinari
Llista de requisits de maquinari

Vam fer servir Dcube Store Parts completament perquè són fàcils d’utilitzar i alguna cosa sobre tot allò que s’adapta bé a una quadrícula de centímetres ens fa tirar endavant. Podeu utilitzar el que vulgueu, però el diagrama de cablejat suposarà que esteu utilitzant aquestes parts.

  • Mini mòdul BME280 Sensor I²C
  • Escut I²C per a fotons de partícules
  • Fotó de partícules
  • Cable I²C
  • Adaptador de corrent

Pas 3: Interfície

Interfície
Interfície

La secció d'interfície explica bàsicament les connexions de cablejat necessàries entre el sensor i el fotó de partícules. Garantir connexions correctes és la necessitat bàsica mentre es treballa en qualsevol sistema per a la sortida desitjada. Per tant, les connexions necessàries són les següents:

El BME280 funcionarà sobre I2C. Aquí teniu un exemple de diagrama de cablejat, que demostra com connectar cada interfície del sensor. Fora de la caixa, la placa està configurada per a una interfície I2C, per tant, us recomanem que utilitzeu aquesta interfície si no sou agnòstic. Tot el que necessiteu són quatre cables. Només es necessiten quatre connexions pins Vcc, Gnd, SCL i SDA i es connecten amb l'ajut del cable I2C. Aquestes connexions es mostren a les imatges anteriors.

Pas 4: Codi de control de temperatura, pressió i humitat

Codi de control de temperatura, pressió i humitat
Codi de control de temperatura, pressió i humitat
Codi de control de temperatura, pressió i humitat
Codi de control de temperatura, pressió i humitat

La versió neta del codi que farem servir per executar-la està disponible AQUÍ.

Mentre s’utilitza el mòdul de sensor amb l’Arduino, incloem la biblioteca application.h i spark_wiring_i2c.h. La biblioteca "application.h" i spark_wiring_i2c.h conté les funcions que faciliten la comunicació i2c entre el sensor i la partícula.

Feu clic AQUÍ per obrir la pàgina web per controlar el dispositiu

Pengeu el codi al vostre tauler i hauria de començar a funcionar. Totes les dades es poden obtenir a la pàgina web tal com es mostra a la imatge.

A continuació es proporciona el codi:

// Distribuïda amb una llicència de lliure voluntat.// Utilitzeu-la de la manera que vulgueu, de forma gratuïta o gratuïta, sempre que encaixi en les llicències de les seves obres associades. // BME280 // Aquest codi està dissenyat per funcionar amb el mini mòdul BME280_I2CS I2C disponible a ControlEverything.com. #include #include // L'adreça BME280 I2C és 0x76 (108) #define Addr 0x76 doble cTemp = 0, fTemp = 0, pressió = 0, humitat = 0; void setup () {// Estableix la variable Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Particle.variable ("pressió", pressió); Particle.variable ("humitat", humitat); // Inicialitzar la comunicació I2C com a MASTER Wire.begin (); // Inicialitzar la comunicació sèrie, establir la velocitat de transmissió = 9600 Serial.begin (9600); retard (300); } void loop () {unsigned int b1 [24]; dades int sense signar [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Inicia la transmissió I2C Wire.beginTransmission (Addr); // Selecciona el registre de dades Wire.write ((136 + i)); // Atura la transmissió I2C Wire.endTransmission (); // Sol·liciteu 1 byte de dades Wire.requestFrom (Addr, 1); // Llegiu 24 bytes de dades si (Wire.available () == 1) {b1 = Wire.read (); }} // Converteix les dades // coeficients temporals 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); // coeficients de pressió 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 ++) {// Inicia la transmissió I2C Wire.beginTransmission (Addr); // Seleccioneu registre de dades Wire.write ((225 + i)); // Atura la transmissió I2C Wire.endTransmission (); // Sol·liciteu 1 byte de dades Wire.requestFrom (Addr, 1); // Llegiu 7 bytes de dades si (Wire.available () == 1) {b1 = Wire.read (); }} // Converteix les dades // coeficients d'humitat 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]; // Inicia la transmissió I2C Wire.beginTransmission (Addr); // Selecciona el registre de dades Wire.write (161); // Atura la transmissió I2C Wire.endTransmission (); // Sol·liciteu 1 byte de dades Wire.requestFrom (Addr, 1); // Llegiu 1 byte de dades si (Wire.available () == 1) {dig_H1 = Wire.read (); } // Inicia la transmissió I2C Wire.beginTransmission (Addr); // Selecciona el registre d'humitat de control Wire.write (0xF2); // Humitat sobre la freqüència de mostreig = 1 Wire.write (0x01); // Atura la transmissió I2C Wire.endTransmission (); // Inicia la transmissió I2C Wire.beginTransmission (Addr); // Seleccioneu el registre de mesurament de control Wire.write (0xF4); // Mode normal, temperatura i pressió sobre la freqüència de mostreig = 1 Wire.write (0x27); // Atura la transmissió I2C Wire.endTransmission (); // Inicia la transmissió I2C Wire.beginTransmission (Addr); // Selecciona el registre de configuració Wire.write (0xF5); // Temps d'espera = 1000ms Wire.write (0xA0); // Atura la transmissió I2C Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Inicia la transmissió I2C Wire.beginTransmission (Addr); // Selecciona el registre de dades Wire.write ((247 + i)); // Atura la transmissió I2C Wire.endTransmission (); // Sol·liciteu 1 byte de dades Wire.requestFrom (Addr, 1); // Llegiu 8 bytes de dades si (Wire.available () == 1) {data = Wire.read (); }} // Converteix les dades de pressió i temperatura a 19 bits de llarg adc_p = (((llarg) (dades [0] i 0xFF) * 65536) + ((llarg) (dades [1] i 0xFF) * 256) + (llarg) (dades [2] i 0xF0)) / 16; llarg adc_t = (((llarg) (dades [3] i 0xFF) * 65536) + ((llarg) (dades [4] i 0xFF) * 256) + (llarg) (dades [5] i 0xF0)) / 16; // Converteix les dades d'humitat llargues adc_h = ((llargues) (dades [6] i 0xFF) * 256 + (llargues) (dades [7] i 0xFF)); // Càlculs de compensació de temperatura doble var1 = (((doble) adc_t) / 16384.0 - ((doble) dig_T1) / 1024.0) * ((doble) 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); doble t_fine = (llarg) (var1 + var2); doble cTemp = (var1 + var2) / 5120,0; doble fTemp = cTemp * 1,8 + 32; // Càlculs de compensació de pressió var1 = ((doble) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((doble) dig_P6) / 32768.0; var2 = var2 + var1 * ((doble) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((doble) dig_P4) * 65536.0); var1 = (((doble) dig_P3) * var1 * var1 / 524288.0 + ((doble) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((doble) dig_P1); doble p = 1048576,0 - (doble) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((doble) dig_P9) * p * p / 2147483648.0; var2 = p * ((doble) dig_P8) / 32768.0; pressió doble = (p + (var1 + var2 + ((doble) dig_P7)) / 16,0) / 100; // Càlculs de compensació d'humitat doble var_H = (((doble) 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))); doble humitat = var_H * (1.0 - dig_H1 * var_H / 524288.0); si (humitat> 100,0) {humitat = 100,0; } else if (humitat <0,0) {humitat = 0,0; } // Data de sortida al tauler Particle.publish ("Temperatura en centígrads", String (cTemp)); Particle.publish ("Temperatura en Fahrenheit:", String (fTemp)); Particle.publish ("Pressió", String (pressió)); Particle.publish ("Humitat relativa:", String (humitat)); retard (1000); }

Pas 5: aplicacions:

Aplicacions
Aplicacions

El sensor de temperatura, pressió i humitat relativa BME280 té diverses aplicacions industrials, com ara monitoratge de temperatura, protecció tèrmica perifèrica de l’ordinador i control de pressió a la indústria. També hem utilitzat aquest sensor en aplicacions d’estacions meteorològiques, així com en un sistema de control d’hivernacle.

Altres aplicacions poden incloure:

  1. Consciència de context, p. Ex. detecció de pell, detecció de canvis d'habitació.
  2. Supervisió de la forma física / benestar: advertència sobre la sequedat o les altes temperatures.
  3. Mesura del volum i del cabal d’aire.
  4. Control domòtic.
  5. Control de calefacció, ventilació, aire condicionat (HVAC).
  6. Internet de les coses.
  7. Millora del GPS (per exemple, millora del temps per a la primera solució, recompte, detecció de pendent).
  8. Navegació interior (canvi de detecció de sòl, detecció d’ascensors).
  9. Aplicacions esportives i de navegació a l’aire lliure.
  10. Pronòstic del temps.
  11. Indicació de velocitat vertical (velocitat de pujada / enfonsament)..

Pas 6: tutorial de vídeo

Mireu el nostre vídeo tutorial per seguir tots els passos de la interfície i la realització del projecte.

Estigueu atents a la interfície i el bloc de treball d’altres sensors.

Recomanat: