Spisu treści:
- Krok 1: Eksploracja BME280
- Krok 2: Lista wymagań sprzętowych
- Krok 3: Połączenie
- Krok 4: Kod monitorowania temperatury, ciśnienia i wilgotności
- Krok 5: Aplikacje:
- Krok 6: Samouczek wideo
Wideo: Obliczanie wilgotności, ciśnienia i temperatury przy użyciu BME280 i interfejsu fotonowego.: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:27
Spotykamy się z różnymi projektami, które wymagają monitorowania temperatury, ciśnienia i wilgotności. W ten sposób zdajemy sobie sprawę, że parametry te faktycznie odgrywają kluczową rolę w oszacowaniu wydajności pracy systemu w różnych warunkach atmosferycznych. Zarówno na poziomie przemysłowym, jak i systemach osobistych, optymalna temperatura, wilgotność i poziom ciśnienia barometrycznego są niezbędne dla odpowiedniej wydajności systemu.
Dlatego udostępniamy kompletny samouczek dotyczący tego czujnika, w tym samouczku wyjaśnimy działanie czujnika wilgotności, ciśnienia i temperatury BME280 z fotonem cząstek.
Krok 1: Eksploracja BME280
Sektor elektroniczny przyspieszył swoją grę dzięki czujnikowi BME280, czujnikowi środowiskowemu z temperaturą, ciśnieniem barometrycznym i wilgotnością! Ten czujnik doskonale nadaje się do wszelkiego rodzaju czujników pogodowych/środowiskowych, a nawet może być używany w I2C.
Ten precyzyjny czujnik BME280 jest najlepszym rozwiązaniem do pomiaru wilgotności z dokładnością ±3%, ciśnienia barometrycznego z dokładnością bezwzględną ±1 hPa oraz temperatury z dokładnością ±1,0°C. Ponieważ ciśnienie zmienia się wraz z wysokością, a pomiary ciśnienia są tak dobre, można go również używać jako wysokościomierza z dokładnością ±1 metra lub lepszą!Czujnik temperatury został zoptymalizowany pod kątem najniższego poziomu hałasu i najwyższej rozdzielczości i służy do kompensacji temperatury czujnik ciśnienia i może być również używany do szacowania temperatury otoczenia. Pomiary za pomocą BME280 mogą być wykonywane przez użytkownika lub wykonywane w regularnych odstępach czasu.
Arkusz danych: Kliknij, aby wyświetlić podgląd lub pobrać arkusz danych czujnika BME280.
Krok 2: Lista wymagań sprzętowych
Użyliśmy wyłącznie części Dcube Store Parts, ponieważ są one łatwe w użyciu, a coś o tym, że wszystko ładnie pasuje na centymetrowej siatce, naprawdę nas pobudza. Możesz użyć czegokolwiek, ale schemat połączeń zakłada, że używasz tych części.
- BME280 Czujnik I²C Mini Moduł
- Tarcza I²C dla fotonu cząsteczkowego
- Foton cząstek
- Kabel I²C
- Zasilacz
Krok 3: Połączenie
Sekcja poświęcona interfejsom zasadniczo wyjaśnia połączenia przewodów wymagane między czujnikiem a fotonem cząstek. Zapewnienie prawidłowych połączeń jest podstawową koniecznością podczas pracy na dowolnym systemie o pożądanej mocy. Tak więc wymagane połączenia są następujące:
BME280 będzie pracował przez I2C. Oto przykładowy schemat okablowania, pokazujący, jak okablować każdy interfejs czujnika. Po wyjęciu z pudełka, płyta jest skonfigurowana do interfejsu I2C, dlatego zalecamy korzystanie z tego interfejsu, jeśli jesteś agnostykiem. Wszystko czego potrzebujesz to cztery przewody! Wymagane są tylko cztery połączenia Vcc, Gnd, SCL i SDA, które są połączone za pomocą kabla I2C. Połączenia te są pokazane na powyższych zdjęciach.
Krok 4: Kod monitorowania temperatury, ciśnienia i wilgotności
Czysta wersja kodu, której użyjemy do uruchomienia tego, jest dostępna TUTAJ.
Podczas korzystania z modułu czujnika z Arduino dołączamy bibliotekę application.h oraz spark_wiring_i2c.h. Biblioteka "application.h" oraz spark_wiring_i2c.h zawiera funkcje ułatwiające komunikację i2c pomiędzy czujnikiem a cząsteczką.
Kliknij TUTAJ, aby otworzyć stronę internetową do monitorowania urządzeń
Prześlij kod na swoją tablicę i powinien zacząć działać! Wszystkie dane można uzyskać na stronie internetowej, jak pokazano na obrazku.
Kod znajduje się poniżej:
// Rozprowadzany z wolną licencją.// Używaj go w dowolny sposób, z zyskiem lub za darmo, pod warunkiem, że pasuje do licencji powiązanych z nim dzieł. // BME280 // Ten kod jest przeznaczony do współpracy z modułem mini BME280_I2CS I2C dostępnym na stronie ControlEverything.com. #include #include // adres BME280 I2C to 0x76(108) #define Addr 0x76 double cTemp = 0, fTemp = 0, ciśnienie = 0, wilgotność = 0; void setup() { // Ustaw zmienną Particle.variable("i2cdevice", "BME280"); article.variable("cTemp", cTemp); Particle.variable("fTemp", fTemp); Particle.variable("ciśnienie", ciśnienie); Particle.variable("wilgotność", wilgotność); // Zainicjuj komunikację I2C jako MASTER Wire.begin(); // Zainicjuj komunikację szeregową, ustaw szybkość transmisji = 9600 Serial.begin(9600); opóźnienie(300); } void loop() { unsigned int b1[24]; dane int bez znaku[8]; int dig_H1 = 0; for(int i = 0; i < 24; i++) { // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybierz rejestr danych Wire.write((136+i)); // Zatrzymaj transmisję I2C Wire.endTransmission(); // Żądaj 1 bajtu danych Wire.requestFrom(Addr, 1); // Odczytaj 24 bajty danych if(Wire.available() == 1) { b1 = Wire.read(); } } // Konwersja danych // współczynniki 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); // współczynniki ciśnienia 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++) { // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybierz rejestr danych Wire.write((225+i)); // Zatrzymaj transmisję I2C Wire.endTransmission(); // Żądaj 1 bajtu danych Wire.requestFrom(Addr, 1); // Odczytaj 7 bajtów danych if(Wire.available() == 1) { b1 = Wire.read(); } } // Konwersja danych // współczynniki wilgotności 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]; // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybierz rejestr danych Wire.write(161); // Zatrzymaj transmisję I2C Wire.endTransmission(); // Żądaj 1 bajtu danych Wire.requestFrom(Addr, 1); // Odczytaj 1 bajt danych if(Wire.available() == 1) { dig_H1 = Wire.read(); } // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybór rejestru kontrolnego wilgotności Wire.write(0xF2); // Wilgotność powyżej częstotliwości próbkowania = 1 Wire.write(0x01); // Zatrzymaj transmisję I2C Wire.endTransmission(); // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybierz rejestr pomiarów kontrolnych Wire.write(0xF4); // Tryb normalny, temperatura i ciśnienie powyżej częstotliwości próbkowania = 1 Wire.write(0x27); // Zatrzymaj transmisję I2C Wire.endTransmission(); // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybierz rejestr konfiguracji Wire.write(0xF5); // Czas czuwania = 1000ms Wire.write(0xA0); // Zatrzymaj transmisję I2C Wire.endTransmission(); for(int i = 0; i <8; i++) { // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybierz rejestr danych Wire.write((247+i)); // Zatrzymaj transmisję I2C Wire.endTransmission(); // Żądaj 1 bajtu danych Wire.requestFrom(Addr, 1); // Odczytaj 8 bajtów danych if(Wire.available() == 1) { data = Wire.read(); } } // Konwertuj dane ciśnienia i temperatury na 19-bitowe adc_p = (((long)(data[0] & 0xFF) * 65536) + ((long)(data[1] & 0xFF) * 256) + (długi)(dane[2] i 0xF0)) / 16; long adc_t = (((long)(data[3] & 0xFF) * 65536) + ((long)(data[4] & 0xFF) * 256) + (long)(data[5] & 0xF0)) / 16; // Konwertuj dane wilgotności long adc_h = ((long)(data[6] & 0xFF) * 256 + (long)(data[7] & 0xFF)); // Obliczenia przesunięcia temperatury double var1 = (((double)adc_t) / 16384.0 - ((double)dig_T1) / 1024.0) * ((double)dig_T2); podwójna var2 = ((((podwójny)adc_t) / 131072.0 - ((podwójny)dig_T1) / 8192.0) * (((podwójny)adc_t)/131072.0 - ((podwójny)dig_T1)/8192.0)) * ((podwójny)dig_T3); double t_fine = (long)(var1 + var2); podwójne cTemp = (var1 + var2) / 5120.0; podwójne fTemp = cTemp * 1,8 + 32; // Obliczenia przesunięcia ciśnienia var1 = ((double)t_fine / 2.0) - 64000.0; zm2 = zm1 * zm1 * ((podwójny)dig_P6) / 32768,0; zm2 = zm2 + zm1 * ((podwójny)dig_P5) * 2,0; var2 = (var2 / 4.0) + (((podwójny)dig_P4) * 65536.0); var1 = (((podwójny) dig_P3) * var1 * var1 / 524288.0 + ((podwójny) dig_P2) * var1) / 524288.0; var1 = (1,0 + var1 / 32768,0) * ((podwójny)dig_P1); podwójne p = 1048576,0 - (podwójne)adc_p; p = (p - (zmienna2 / 4096,0)) * 6250,0 / zmienna1; var1 = ((podwójny) dig_P9) * p * p / 2147483648.0; var2 = p * ((podwójny) dig_P8) / 32768,0; podwójne ciśnienie = (p + (var1 + var2 + ((podwójne)dig_P7)) / 16.0) / 100; // Obliczenia przesunięcia wilgotności 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))); podwójna wilgotność = var_H * (1,0 - dig_H1 * var_H / 524288.0); if(wilgotność> 100,0) { wilgotność = 100,0; } else if(wilgotność < 0,0) { wilgotność = 0,0; } // Dane wyjściowe do pulpitu nawigacyjnego Particle.publish("Temperatura w stopniach Celsjusza: ", String(cTemp)); Particle.publish("Temperatura w stopniach Fahrenheita: ", String(fTemp)); Particle.publish("Ciśnienie: ", Ciąg(nacisk)); Particle.publish("Wilgotność względna: ", String(wilgotność)); opóźnienie (1000); }
Krok 5: Aplikacje:
Czujnik temperatury, ciśnienia i wilgotności względnej BME280 ma różne zastosowania przemysłowe, takie jak monitorowanie temperatury, ochrona termiczna peryferyjnych komputerów, monitorowanie ciśnienia w przemyśle. Zastosowaliśmy ten czujnik również w aplikacjach stacji pogodowej, a także w systemie monitorowania szklarni.
Inne aplikacje mogą obejmować:
- Świadomość kontekstu, np. wykrywanie skóry, wykrywanie zmiany pomieszczenia.
- Monitorowanie kondycji / dobrego samopoczucia - Ostrzeżenie dotyczące suchości lub wysokich temperatur.
- Pomiar objętości i przepływu powietrza.
- Sterowanie automatyką domową.
- Sterowanie ogrzewaniem, wentylacją, klimatyzacją (HVAC).
- Internet przedmiotów.
- Ulepszenie GPS (np. poprawa czasu do pierwszej naprawy, martwe liczenie, wykrywanie nachylenia).
- Nawigacja wewnętrzna (wykrywanie zmiany piętra, wykrywanie windy).
- Nawigacja zewnętrzna, aplikacje rekreacyjne i sportowe.
- Prognoza pogody.
- Wskaźnik prędkości pionowej (prędkość wznoszenia/opadania).
Krok 6: Samouczek wideo
Obejrzyj nasz samouczek wideo, aby przejść przez wszystkie etapy łączenia i ukończenia projektu.
Bądź na bieżąco z interfejsami innych czujników i blogami roboczymi.
Zalecana:
Monitorowanie temperatury i wilgotności przy użyciu AWS-ESP32: 8 kroków
Monitoring-Temp-and-Humidity-using-AWS-ESP32: W tym samouczku zmierzymy różne dane temperatury i wilgotności za pomocą czujnika temperatury i wilgotności. Dowiesz się również, jak przesłać te dane do AWS
Neopixel Ws2812 Rainbow LED Glow z M5stick-C - Uruchamianie Rainbow na Neopixel Ws2812 przy użyciu M5stack M5stick C przy użyciu Arduino IDE: 5 kroków
Neopixel Ws2812 Rainbow LED Glow z M5stick-C | Uruchamianie Rainbow na Neopixel Ws2812 Używając M5stack M5stick C Używając Arduino IDE: Cześć chłopaki, w tej instrukcji dowiemy się, jak używać neopikselowych ws2812 LED lub taśmy LED lub matrycy LED lub pierścienia LED z płytką rozwojową m5stack m5stick-C z Arduino IDE i zrobimy wzór tęczy z nim
Obliczanie natężenia światła przy użyciu BH1715 i Arduino Nano: 5 kroków
Obliczanie natężenia światła przy użyciu BH1715 i Arduino Nano: Wczoraj pracowaliśmy nad wyświetlaczami LCD i podczas pracy nad nimi zdaliśmy sobie sprawę, jak ważne jest obliczanie natężenia światła. Intensywność światła jest ważna nie tylko w fizycznej domenie tego świata, ale ma również dobrze opisaną rolę w biologii
Obliczanie natężenia światła przy użyciu BH1715 i fotonu cząstek: 5 kroków
Obliczanie natężenia światła przy użyciu BH1715 i Particle Photon: Wczoraj pracowaliśmy nad wyświetlaczami LCD i podczas pracy nad nimi zdaliśmy sobie sprawę, jak ważne jest obliczanie natężenia światła. Intensywność światła jest ważna nie tylko w fizycznej domenie tego świata, ale ma również dobrze opisaną rolę w biologii
Serwer sieciowy temperatury i wilgotności Esp32 przy użyciu PYTHON i Zerynth IDE: 3 kroki
Serwer sieciowy temperatury i wilgotności Esp32 przy użyciu PYTHON i Zerynth IDE: Esp32 to wspaniały mikrokontroler, jest potężny jak Arduino, ale jeszcze lepszy! Posiada łączność Wi-Fi, umożliwiającą tanie i łatwe opracowywanie projektów IOT. Ale praca z Esp urządzenia frustrujące, Po pierwsze nie jest stabilny, Secon