Table des matières:
- Étape 1: Exploration du BME280
- Étape 2: Liste des exigences matérielles
- Étape 3: Interfaçage
- Étape 4: Code de surveillance de la température, de la pression et de l'humidité
- Étape 5: Candidatures:
- Étape 6: Tutoriel vidéo
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
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
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
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
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
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é
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:
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:
- Conscience du contexte, par ex. détection de peau, détection de changement de pièce.
- Suivi fitness / bien-être - Avertissement concernant la sécheresse ou les températures élevées.
- Mesure du volume et du débit d'air.
- Contrôle domotique.
- Contrôler le chauffage, la ventilation, la climatisation (HVAC).
- Internet des objets.
- Amélioration du GPS (par exemple, amélioration du temps de premier repère, navigation à l'estime, détection de pente).
- Navigation intérieure (détection de changement d'étage, détection d'ascenseur).
- Applications de navigation outdoor, loisirs et sports.
- Prévisions météorologiques.
- 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é:
M5STACK Comment afficher la température, l'humidité et la pression sur le M5StickC ESP32 à l'aide de Visuino - Facile à faire : 6 étapes
M5STACK Comment afficher la température, l'humidité et la pression sur M5StickC ESP32 à l'aide de Visuino - Facile à faire: Dans ce tutoriel, nous allons apprendre à programmer ESP32 M5Stack StickC avec Arduino IDE et Visuino pour afficher la température, l'humidité et la pression à l'aide du capteur ENV (DHT12, BMP280, BMM150)
Station météo Arduino utilisant BMP280-DHT11 - Température, humidité et pression : 8 étapes
Station météo Arduino utilisant BMP280-DHT11 - Température, humidité et pression : Dans ce tutoriel, nous allons apprendre à créer une station météo qui affichera une TEMPÉRATURE, UNE HUMIDITÉ ET UNE PRESSION sur l'écran LCD TFT 7735Regardez une vidéo de démonstration
ESP8266 Surveillance de la température Nodemcu à l'aide de DHT11 sur un serveur Web local - Obtenez la température et l'humidité de la pièce sur votre navigateur : 6 étapes
ESP8266 Surveillance de la température Nodemcu à l'aide de DHT11 sur un serveur Web local | Obtenez la température et l'humidité de la pièce sur votre navigateur : Salut les gars, aujourd'hui, nous allons faire une analyse de l'humidité et de l'humidité; système de surveillance de la température utilisant ESP 8266 NODEMCU & Capteur de température DHT11. La température et l'humidité seront obtenues à partir du capteur DHT11 et de l'amp; il peut être vu sur un navigateur quelle page Web sera gérée
Construire un capteur de température Apple HomeKit (BME280) à l'aide d'un RaspberryPI et d'un BME280 : 5 étapes
Construire un capteur de température Apple HomeKit (BME280) à l'aide d'un RaspberryPI et d'un BME280 : j'ai joué avec des appareils IOT au cours des derniers mois et j'ai déployé environ 10 capteurs différents pour surveiller les conditions autour de ma maison et de mon chalet. Et j'avais à l'origine commencé à utiliser le capteur d'humidité tempérée AOSONG DHT22
Enregistreur de température, d'humidité relative et de pression atmosphérique utilisant Raspberry Pi et TE Connectivity MS8607-02BA01 : 22 étapes (avec photos)
Enregistreur de température, d'humidité relative et de pression atmosphérique à l'aide de Raspberry Pi et de la connectivité TE MS8607-02BA01 : Introduction : Dans ce projet, je vais vous montrer comment configurer par étape un système d'enregistrement de la température, de l'humidité et de la pression atmosphérique. Ce projet est basé sur la puce de capteur environnemental Raspberry Pi 3 Model B et TE Connectivity MS8607-02BA