Table des matières:

Calcul de l'humidité, de la pression et de la température à l'aide du BME280 et de l'interfaçage photonique : 6 étapes
Calcul de l'humidité, de la pression et de la température à l'aide du BME280 et de l'interfaçage photonique : 6 étapes

Vidéo: Calcul de l'humidité, de la pression et de la température à l'aide du BME280 et de l'interfaçage photonique : 6 étapes

Vidéo: Calcul de l'humidité, de la pression et de la température à l'aide du BME280 et de l'interfaçage photonique : 6 étapes
Vidéo: Mesurer la température et l'humidité avec le capteur DHT11 | ARDUINO #30 2024, Novembre
Anonim
Calcul de l'humidité, de la pression et de la température à l'aide du BME280 et de l'interfaçage de photons
Calcul de l'humidité, de la pression et de la température à l'aide du BME280 et de l'interfaçage de photons

Nous rencontrons divers projets qui nécessitent une surveillance de la température, de la pression et de l'humidité. Ainsi, nous réalisons que ces paramètres jouent en fait un rôle vital pour avoir une estimation de l'efficacité de fonctionnement d'un système à différentes conditions atmosphériques. Tant au niveau industriel que pour les systèmes personnels, un niveau optimal de température, d'humidité et de pression barométrique est requis pour une performance adéquate du système.

C'est pourquoi nous proposons un tutoriel complet sur ce capteur, dans ce tutoriel nous allons vous expliquer le fonctionnement du capteur d'humidité, de pression et de température BME280 à photon particulaire.

Étape 1: Exploration du BME280

Exploration BME280
Exploration BME280

Le secteur électronique a intensifié son jeu avec le capteur BME280, un capteur environnemental avec température, pression barométrique et humidité ! Ce capteur est idéal pour toutes sortes de détection météorologique/environnementale et peut même être utilisé en I2C.

Ce capteur de précision BME280 est la meilleure solution de détection pour mesurer l'humidité avec une précision de ± 3 %, la pression barométrique avec une précision absolue de ± 1 hPa et la température avec une précision de ± 1,0 °C. Parce que la pression change avec l'altitude et que les mesures de pression sont si bonnes, vous pouvez également l'utiliser comme altimètre avec une précision de ± 1 mètre ou mieux ! Le capteur de température a été optimisé pour le bruit le plus bas et la résolution la plus élevée et est utilisé pour la compensation de température de le capteur de pression et peut également être utilisé pour l'estimation de la température ambiante. Les mesures avec le BME280 peuvent être effectuées par l'utilisateur ou effectuées à intervalles réguliers.

Fiche technique: Cliquez pour prévisualiser ou télécharger la fiche technique du capteur BME280.

Étape 2: Liste des exigences matérielles

Liste des exigences matérielles
Liste des exigences matérielles

Nous avons entièrement utilisé les pièces Dcube Store parce qu'elles sont faciles à utiliser et que quelque chose à propos de tout s'adapte bien sur une grille centimétrique nous permet vraiment de démarrer. Vous pouvez utiliser ce que vous voulez, mais le schéma de câblage supposera que vous utilisez ces pièces.

  • Capteur BME280 Mini Module I²C
  • Bouclier I²C pour les photons de particules
  • Photon de particule
  • Câble I²C
  • Adaptateur secteur

Étape 3: Interfaçage

Interfaçage
Interfaçage

La section d'interfaçage explique essentiellement les connexions de câblage nécessaires entre le capteur et le photon particulaire. Assurer des connexions correctes est la nécessité de base tout en travaillant sur n'importe quel système pour la sortie souhaitée. Ainsi, les connexions requises sont les suivantes:

Le BME280 fonctionnera sur I2C. Voici l'exemple de schéma de câblage, montrant comment câbler chaque interface du capteur. Prête à l'emploi, la carte est configurée pour une interface I2C, en tant que telle, nous vous recommandons d'utiliser cette interface si vous êtes par ailleurs agnostique. Tout ce dont vous avez besoin, c'est de quatre fils ! Seules quatre connexions sont nécessaires pour les broches Vcc, Gnd, SCL et SDA et celles-ci sont connectées à l'aide d'un câble I2C. Ces connexions sont illustrées dans les images ci-dessus.

Étape 4: Code de surveillance de la température, de la pression et de l'humidité

Code de surveillance de la température, de la pression et de l'humidité
Code de surveillance de la température, de la pression et de l'humidité
Code de surveillance de la température, de la pression et de l'humidité
Code de surveillance de la température, de la pression et de l'humidité

La version propre du code que nous utiliserons pour l'exécuter est disponible ICI.

Lors de l'utilisation du module de capteur avec l'Arduino, nous incluons les bibliothèques application.h et spark_wiring_i2c.h. Les bibliothèques "application.h" et spark_wiring_i2c.h contiennent les fonctions qui facilitent la communication i2c entre le capteur et la particule.

Cliquez ICI pour ouvrir la page Web pour la surveillance des appareils

Téléchargez le code sur votre tableau et il devrait commencer à fonctionner ! Toutes les données peuvent être obtenues sur la page Web comme indiqué dans l'image.

Le code est fourni ci-dessous:

// Distribué avec une licence libre-arbitre.// Utilisez-le comme vous le souhaitez, à profit ou gratuitement, à condition qu'il rentre dans les licences de ses œuvres associées. // BME280 // Ce code est conçu pour fonctionner avec le mini module BME280_I2CS I2C disponible sur ControlEverything.com. #include #include // L'adresse I2C du BME280 est 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, pressure = 0, humidity = 0; void setup() { // Définir la variable Particle.variable("i2cdevice", "BME280"); article.variable("cTemp", cTemp); Particule.variable("fTemp", fTemp); Particle.variable("pression", pression); Particle.variable("humidité", humidité); // Initialise la communication I2C en tant que MASTER Wire.begin(); // Initialiser la communication série, définir le débit en bauds = 9600 Serial.begin(9600); retard (300); } void loop() { unsigned int b1[24]; données int non signées[8]; int dig_H1 = 0; for(int i = 0; i < 24; i++) { // Démarrer le fil de transmission I2C.beginTransmission(Adr); // Sélection du registre de données Wire.write((136+i)); // Arrêter la transmission I2C Wire.endTransmission(); // Demande 1 octet de données Wire.requestFrom(Addr, 1); // Lit 24 octets de données if(Wire.available() == 1) { b1 = Wire.read(); } } // Convertir les données // coefficients temp 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); // coefficients de pression 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++) { // Démarrer le fil de transmission I2C.beginTransmission(Adr); // Sélection du registre de données Wire.write((225+i)); // Arrêter la transmission I2C Wire.endTransmission(); // Demande 1 octet de données Wire.requestFrom(Addr, 1); // Lit 7 octets de données if(Wire.available() == 1) { b1 = Wire.read(); } } // Convertir les données // coefficients d'humidité 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]; // Démarrer la transmission I2C Wire.beginTransmission(Adr); // Sélection du registre de données Wire.write(161); // Arrêter la transmission I2C Wire.endTransmission(); // Demande 1 octet de données Wire.requestFrom(Addr, 1); // Lit 1 octet de données if(Wire.available() == 1) { dig_H1 = Wire.read(); } // Démarrer I2C Transmission Wire.beginTransmission(Adr); // Sélection du registre d'humidité de contrôle Wire.write(0xF2); // Humidité sur le taux d'échantillonnage = 1 Wire.write(0x01); // Arrêter la transmission I2C Wire.endTransmission(); // Démarrer la transmission I2C Wire.beginTransmission(Adr); // Sélection du registre de mesure de contrôle Wire.write(0xF4); // Mode normal, température et pression sur le taux d'échantillonnage = 1 Wire.write (0x27); // Arrêter la transmission I2C Wire.endTransmission(); // Démarrer la transmission I2C Wire.beginTransmission(Adr); // Sélectionnez le registre de configuration Wire.write(0xF5); // Temps de veille = 1000ms Wire.write(0xA0); // Arrêter la transmission I2C Wire.endTransmission(); for(int i = 0; i <8; i++) { // Démarrer le fil de transmission I2C.beginTransmission(Adr); // Sélection du registre de données Wire.write((247+i)); // Arrêter la transmission I2C Wire.endTransmission(); // Demande 1 octet de données Wire.requestFrom(Addr, 1); // Lit 8 octets de données if(Wire.available() == 1) { data = Wire.read(); } } // Convertir les données de pression et de température en 19 bits adc_p = (((long)(data[0] & 0xFF) * 65536) + ((long)(data[1] & 0xFF) * 256) + (long)(données[2] & 0xF0)) / 16; long adc_t = (((long)(données[3] & 0xFF) * 65536) + ((long)(données[4] & 0xFF) * 256) + (long)(données[5] & 0xF0)) / 16; // Convertir les données d'humidité long adc_h = ((long)(data[6] & 0xFF) * 256 + (long)(data[7] & 0xFF)); // Calculs de décalage de température 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_fin = (long)(var1 + var2); double cTemp = (var1 + var2) / 5120,0; double fTemp = cTemp * 1,8 + 32; // Calculs de décalage de pression var1 = ((double)t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((double)dig_P6) / 32768.0; var2 = var2 + var1 * ((double)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) * ((double)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 * ((double) dig_P8) / 32768.0; double pression = (p + (var1 + var2 + ((double)dig_P7)) / 16,0) / 100; // Calculs de décalage d'humidité 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))); double humidité = var_H * (1,0 - dig_H1 * var_H / 524288.0); if(humidité> 100,0) { humidité = 100,0; } else if(humidité < 0,0) { humidité = 0,0; } // Sortie des données vers le tableau de bord Particle.publish("Temperature in Celsius: ", String(cTemp)); Particle.publish("Température en Fahrenheit: ", String(fTemp)); Particle.publish("Pression: ", String(pression)); Particle.publish("Humidité relative: ", String(humidité)); retard(1000); }

Étape 5: Candidatures:

Applications
Applications

Le capteur de température, de pression et d'humidité relative BME280 a diverses applications industrielles telles que la surveillance de la température, la protection thermique des périphériques informatiques, la surveillance de la pression dans l'industrie. Nous avons également utilisé ce capteur dans des applications de station météorologique ainsi que dans un système de surveillance des serres.

D'autres applications peuvent inclure:

  1. Conscience du contexte, par ex. détection de peau, détection de changement de pièce.
  2. Suivi fitness / bien-être - Avertissement concernant la sécheresse ou les températures élevées.
  3. Mesure du volume et du débit d'air.
  4. Contrôle domotique.
  5. Contrôler le chauffage, la ventilation, la climatisation (HVAC).
  6. Internet des objets.
  7. Amélioration du GPS (par exemple, amélioration du temps de premier repère, navigation à l'estime, détection de pente).
  8. Navigation intérieure (détection de changement d'étage, détection d'ascenseur).
  9. Applications de navigation outdoor, loisirs et sports.
  10. Prévisions météorologiques.
  11. Indication de la vitesse verticale (vitesse de montée/descente).

Étape 6: Tutoriel vidéo

Regardez notre didacticiel vidéo pour parcourir toutes les étapes d'interfaçage et de réalisation du projet.

Restez à l'écoute pour l'interfaçage d'autres capteurs et les blogs de travail.

Conseillé: