Taula de continguts:
- Pas 1: exploració BME280
- Pas 2: llista de requisits de maquinari
- Pas 3: Interfície
- Pas 4: Codi de control de temperatura, pressió i humitat
- Pas 5: aplicacions:
- Pas 6: tutorial de vídeo
Vídeo: Càlcul d’humitat, pressió i temperatura mitjançant BME280 i interfície de fotons: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
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
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
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
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
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:
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:
- Consciència de context, p. Ex. detecció de pell, detecció de canvis d'habitació.
- Supervisió de la forma física / benestar: advertència sobre la sequedat o les altes temperatures.
- Mesura del volum i del cabal d’aire.
- Control domòtic.
- Control de calefacció, ventilació, aire condicionat (HVAC).
- Internet de les coses.
- Millora del GPS (per exemple, millora del temps per a la primera solució, recompte, detecció de pendent).
- Navegació interior (canvi de detecció de sòl, detecció d’ascensors).
- Aplicacions esportives i de navegació a l’aire lliure.
- Pronòstic del temps.
- 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:
M5STACK Com mostrar temperatura, humitat i pressió a M5StickC ESP32 mitjançant Visuino - Fàcil de fer: 6 passos
M5STACK Com mostrar temperatura, humitat i pressió a M5StickC ESP32 mitjançant Visuino: fàcil de fer: en aquest tutorial aprendrem a programar ESP32 M5Stack StickC amb Arduino IDE i Visuino per mostrar la temperatura, humitat i pressió mitjançant el sensor ENV (DHT12, BMP280, BMM150)
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32: 8 passos
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32s: en aquest tutorial, aprendreu tot sobre com iniciar, connectar-se i aconseguir que el dispositiu I2C (acceleròmetre) funcioni amb el controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Anàlisi de dades de temperatura / humitat mitjançant Ubidots i Fulls de càlcul de Google: 6 passos
Anàlisi de dades de temperatura / humitat mitjançant Ubidots i Google-Sheets: en aquest tutorial, mesurarem diferents dades de temperatura i humitat mitjançant el sensor de temperatura i humitat. També aprendreu a enviar aquestes dades a Ubidots. De manera que pugueu analitzar-lo des de qualsevol lloc per a diferents aplicacions. També enviant
Estació meteorològica Arduino amb BMP280-DHT11: temperatura, humitat i pressió: 8 passos
Estació meteorològica Arduino amb BMP280-DHT11 - Temperatura, humitat i pressió: en aquest tutorial aprendrem com fer una estació meteorològica que mostri TEMPERATURA, HUMITAT I PRESSIÓ a la pantalla LCD TFT 7735 Veure un vídeo de demostració
Registrador de temperatura, humitat relativa i pressió atmosfèrica mitjançant connectivitat Raspberry Pi i TE MS8607-02BA01: 22 passos (amb imatges)
Registrador de temperatura, humitat relativa i pressió atmosfèrica mitjançant Raspberry Pi i connectivitat TE MS8607-02BA01: Introducció: en aquest projecte us mostraré com construir la configuració per passos d’un sistema de registre per a la humitat de la temperatura i la pressió atmosfèrica. Aquest projecte es basa en el xip del sensor ambiental Raspberry Pi 3 Model B i TE Connectivity MS8607-02BA