Sommario:
- Passaggio 1: esplorazione del BME280
- Passaggio 2: elenco dei requisiti hardware
- Passaggio 3: interfacciamento
- Passaggio 4: codice di monitoraggio di temperatura, pressione e umidità
- Passaggio 5: applicazioni:
- Passaggio 6: video tutorial
Video: Calcolo di umidità, pressione e temperatura utilizzando BME280 e interfaccia fotonica: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
Ci imbattiamo in vari progetti che richiedono il monitoraggio di temperatura, pressione e umidità. Quindi ci rendiamo conto che questi parametri giocano effettivamente un ruolo vitale nell'avere una stima dell'efficienza di lavoro di un sistema in diverse condizioni atmosferiche. Sia a livello industriale che personale è richiesto un livello ottimale di temperatura, umidità e pressione barometrica per il corretto funzionamento del sistema.
Ecco perché forniamo un tutorial completo su questo sensore, in questo tutorial spiegheremo il funzionamento del sensore di umidità, pressione e temperatura BME280 con fotone particellare.
Passaggio 1: esplorazione del BME280
Il settore elettronico ha intensificato il proprio gioco con il sensore BME280, un sensore ambientale con temperatura, pressione barometrica e umidità! Questo sensore è ottimo per tutti i tipi di rilevamento meteorologico/ambientale e può essere utilizzato anche in I2C.
Questo sensore di precisione BME280 è la migliore soluzione di rilevamento per misurare l'umidità con una precisione di ±3%, la pressione barometrica con una precisione assoluta di ±1 hPa e la temperatura con una precisione di ±1,0°C. Poiché la pressione cambia con l'altitudine e le misurazioni della pressione sono così buone, puoi anche usarlo come altimetro con una precisione di ± 1 metro o migliore! Il sensore di temperatura è stato ottimizzato per il rumore più basso e la risoluzione più alta e viene utilizzato per la compensazione della temperatura di il sensore di pressione e può essere utilizzato anche per la stima della temperatura ambiente. Le misurazioni con il BME280 possono essere eseguite dall'utente o eseguite a intervalli regolari.
Scheda tecnica: fare clic per visualizzare in anteprima o scaricare la scheda tecnica del sensore BME280.
Passaggio 2: elenco dei requisiti hardware
Abbiamo utilizzato interamente le parti del negozio Dcube perché sono facili da usare e qualcosa su tutto ciò che si adatta bene su una griglia di centimetri ci fa davvero andare avanti. Puoi usare quello che vuoi, ma lo schema elettrico presume che tu stia usando queste parti.
- Mini modulo I²C sensore BME280
- Scudo I²C per fotoni di particelle
- Fotone particellare
- Cavo I²C
- Adattatore di alimentazione
Passaggio 3: interfacciamento
La sezione di interfacciamento spiega fondamentalmente i collegamenti di cablaggio richiesti tra il sensore e il fotone della particella. Garantire connessioni corrette è la necessità di base mentre si lavora su qualsiasi sistema per l'output desiderato. Quindi, i collegamenti necessari sono i seguenti:
Il BME280 funzionerà su I2C. Ecco lo schema elettrico di esempio, che mostra come cablare ciascuna interfaccia del sensore. Di default, la scheda è configurata per un'interfaccia I2C, pertanto ti consigliamo di utilizzare questa interfaccia se sei altrimenti agnostico. Tutto ciò di cui hai bisogno sono quattro fili! Sono necessarie solo quattro connessioni pin Vcc, Gnd, SCL e SDA e questi sono collegati con l'aiuto del cavo I2C. Queste connessioni sono mostrate nelle immagini sopra.
Passaggio 4: codice di monitoraggio di temperatura, pressione e umidità
La versione pulita del codice che utilizzeremo per eseguirlo è disponibile QUI.
Durante l'utilizzo del modulo sensore con Arduino, includiamo la libreria application.h e spark_wiring_i2c.h. La libreria "application.h" e spark_wiring_i2c.h contiene le funzioni che facilitano la comunicazione i2c tra il sensore e la particella.
Clicca QUI per aprire la pagina web per il monitoraggio del dispositivo
Carica il codice sulla tua scheda e dovrebbe iniziare a funzionare! Tutti i dati possono essere ottenuti sulla pagina web come mostrato nell'immagine.
Il codice è fornito di seguito:
// Distribuito con una licenza di libero arbitrio.// Usalo come vuoi, a scopo di lucro o gratuito, a condizione che si adatti alle licenze delle opere associate. // BME280 // Questo codice è progettato per funzionare con il Mini Modulo BME280_I2CS I2C disponibile su ControlEverything.com. #include #include // L'indirizzo I2C del BME280 è 0x76(108) #define Addr 0x76 double cTemp = 0, fTemp = 0, pressione = 0, umidità = 0; void setup() { // Imposta variabile Particle.variable("i2cdevice", "BME280"); articolo.variabile("cTemp", cTemp); Particle.variable("fTemp", fTemp); Particle.variable("pressione", pressione); Particle.variable("umidità", umidità); // Inizializza la comunicazione I2C come MASTER Wire.begin(); // Inizializza la comunicazione seriale, imposta baud rate = 9600 Serial.begin(9600); ritardo(300); } void loop() { unsigned int b1[24]; dati int non firmati[8]; int dig_H1 = 0; for(int i = 0; i < 24; i++) { // Avvia la trasmissione I2C Wire.beginTransmission(Addr); // Seleziona il registro dati Wire.write((136+i)); // Arresta la trasmissione I2C Wire.endTransmission(); // Richiedi 1 byte di dati Wire.requestFrom(Addr, 1); // Legge 24 byte di dati if(Wire.available() == 1) { b1 = Wire.read(); } } // Converti i dati // coefficienti temporanei 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); // coefficienti di pressione 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++) { // Avvia la trasmissione I2C Wire.beginTransmission(Addr); // Seleziona il registro dati Wire.write((225+i)); // Arresta la trasmissione I2C Wire.endTransmission(); // Richiedi 1 byte di dati Wire.requestFrom(Addr, 1); // Legge 7 byte di dati if(Wire.available() == 1) { b1 = Wire.read(); } } // Converti i dati // coefficienti di umidità 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]; // Avvia la trasmissione I2C Wire.beginTransmission(Addr); // Seleziona il registro dati Wire.write(161); // Arresta la trasmissione I2C Wire.endTransmission(); // Richiedi 1 byte di dati Wire.requestFrom(Addr, 1); // Legge 1 byte di dati if(Wire.available() == 1) { dig_H1 = Wire.read(); } // Avvia la trasmissione I2C Wire.beginTransmission(Addr); // Seleziona il registro dell'umidità di controllo Wire.write(0xF2); // Umidità sulla frequenza di campionamento = 1 Wire.write(0x01); // Arresta la trasmissione I2C Wire.endTransmission(); // Avvia la trasmissione I2C Wire.beginTransmission(Addr); // Seleziona il registro di misura di controllo Wire.write(0xF4); // Modalità normale, temperatura e pressione oltre la frequenza di campionamento = 1 Wire.write(0x27); // Arresta la trasmissione I2C Wire.endTransmission(); // Avvia la trasmissione I2C Wire.beginTransmission(Addr); // Seleziona il registro di configurazione Wire.write(0xF5); // Tempo di attesa = 1000ms Wire.write(0xA0); // Arresta la trasmissione I2C Wire.endTransmission(); for(int i = 0; i <8; i++) { // Avvia la trasmissione I2C Wire.beginTransmission(Addr); // Seleziona il registro dati Wire.write((247+i)); // Arresta la trasmissione I2C Wire.endTransmission(); // Richiedi 1 byte di dati Wire.requestFrom(Addr, 1); // Legge 8 byte di dati if(Wire.available() == 1) { data = Wire.read(); } } // Converte i dati di pressione e temperatura in una lunghezza di 19 bit adc_p = (((long)(data[0] & 0xFF) * 65536) + ((long)(data[1] & 0xFF) * 256) + (lungo)(dati[2] & 0xF0)) / 16; long adc_t = (((long)(data[3] & 0xFF) * 65536) + ((long)(data[4] & 0xFF) * 256) + (long)(data[5] & 0xF0)) / 16; // Converti i dati di umidità long adc_h = ((long)(data[6] & 0xFF) * 256 + (long)(data[7] & 0xFF)); // Calcoli dell'offset di temperatura double var1 = (((double)adc_t) / 16384.0 - ((double)dig_T1) / 1024.0) * ((double)dig_T2); double var2 = ((((doppio)adc_t) / 131072.0 - ((doppio)dig_T1) / 8192.0) * (((doppio)adc_t)/131072.0 - ((doppio)dig_T1)/8192.0)) * ((doppio)dig_T3); double t_fine = (long)(var1 + var2); double cTemp = (var1 + var2) / 5120.0; doppia fTemp = cTemp * 1,8 + 32; // Calcoli dell'offset di pressione var1 = ((double)t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((doppio)dig_P6) / 32768.0; var2 = var2 + var1 * ((doppio)dig_P5) * 2.0; var2 = (var2 / 4.0) + (((doppio)dig_P4) * 65536.0); var1 = (((doppio) dig_P3) * var1 * var1 / 524288.0 + ((doppio) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((doppio)dig_P1); doppio p = 1048576,0 - (doppio)adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((doppio) dig_P9) * p * p / 2147483648.0; var2 = p * ((doppio) dig_P8) / 32768.0; doppia pressione = (p + (var1 + var2 + ((double)dig_P7)) / 16,0) / 100; // Calcoli dell'offset dell'umidità 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))); doppia umidità = var_H * (1.0 - dig_H1 * var_H / 524288.0); if(umidità> 100,0) { umidità = 100,0; } else if(umidità < 0,0) { umidità = 0,0; } // Invia i dati al dashboard Particle.publish("Temperature in Celsius: ", String(cTemp)); Particle.publish("Temperature in Fahrenheit: ", String(fTemp)); Particle.publish("Pressione: ", String(pressione)); Particle.publish("Umidità relativa: ", String(umidità)); ritardo(1000); }
Passaggio 5: applicazioni:
Il sensore di temperatura, pressione e umidità relativa BME280 ha varie applicazioni industriali come il monitoraggio della temperatura, la protezione termica delle periferiche del computer, il monitoraggio della pressione nell'industria. Abbiamo anche utilizzato questo sensore in applicazioni per stazioni meteorologiche e sistemi di monitoraggio delle serre.
Altre applicazioni possono includere:
- Consapevolezza del contesto, ad es. rilevamento della pelle, rilevamento del cambiamento di stanza.
- Monitoraggio fitness/benessere - Avvertenza per secchezza o temperature elevate.
- Misura del volume e del flusso d'aria.
- Controllo domotico.
- Controllo riscaldamento, ventilazione, aria condizionata (HVAC).
- Internet delle cose.
- Miglioramento del GPS (ad es. miglioramento del tempo per il primo fix, stima stimata, rilevamento della pendenza).
- Navigazione indoor (rilevamento cambio piano, rilevamento ascensore).
- Navigazione outdoor, applicazioni per il tempo libero e lo sport.
- Previsioni del tempo.
- Indicazione della velocità verticale (velocità di salita/discesa)..
Passaggio 6: video tutorial
Guarda il nostro video tutorial per seguire tutti i passaggi per interfacciare e completare il progetto.
Resta sintonizzato per l'interfacciamento di altri sensori e per i blog funzionanti.
Consigliato:
M5STACK Come visualizzare temperatura, umidità e pressione su M5StickC ESP32 utilizzando Visuino - Facile da eseguire: 6 passaggi
M5STACK Come visualizzare temperatura, umidità e pressione su M5StickC ESP32 utilizzando Visuino - Facile da fare: in questo tutorial impareremo come programmare ESP32 M5Stack StickC con Arduino IDE e Visuino per visualizzare la temperatura, l'umidità e la pressione utilizzando il sensore ENV (DHT12, BMP280, BMM150)
Iniziare con l'interfaccia del sensore I2C?? - Interfaccia il tuo MMA8451 utilizzando ESP32: 8 passaggi
Iniziare con l'interfaccia del sensore I2C?? - Interfaccia il tuo MMA8451 utilizzando ESP32: in questo tutorial imparerai tutto su come avviare, connettere e far funzionare il dispositivo I2C (accelerometro) con il controller (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Stazione meteo Arduino con BMP280-DHT11 - Temperatura, umidità e pressione: 8 passaggi
Arduino Weather Station Using BMP280-DHT11 - Temperatura, Umidità e Pressione: In questo tutorial impareremo come realizzare una stazione meteo che visualizzerà TEMPERATURA, UMIDITÀ E PRESSIONE sul Display LCD TFT 7735Guarda un video dimostrativo
ESP8266 Nodemcu Monitoraggio della temperatura utilizzando DHT11 su un server Web locale - Ottieni la temperatura e l'umidità della stanza sul tuo browser: 6 passaggi
ESP8266 Nodemcu Monitoraggio della temperatura utilizzando DHT11 su un server Web locale | Ottieni la temperatura e l'umidità della stanza sul tuo browser: Ciao ragazzi, oggi faremo un'umidità e l'umidità; sistema di monitoraggio della temperatura utilizzando ESP 8266 NODEMCU & Sensore di temperatura DHT11. La temperatura e l'umidità saranno ottenute da DHT11 Sensor & può essere visto su un browser quale pagina web verrà gestita
Registratore di temperatura, umidità relativa, pressione atmosferica utilizzando Raspberry Pi e TE Connectivity MS8607-02BA01: 22 passaggi (con immagini)
Registratore di temperatura, umidità relativa, pressione atmosferica utilizzando Raspberry Pi e TE Connectivity MS8607-02BA01: Introduzione: In questo progetto ti mostrerò come costruire passo dopo passo un sistema di registrazione per l'umidità della temperatura e la pressione atmosferica. Questo progetto si basa sul chip del sensore ambientale Raspberry Pi 3 Modello B e TE Connectivity MS8607-02BA