Съдържание:
- Стъпка 1: BME280 Проучване
- Стъпка 2: Списък на хардуерните изисквания
- Стъпка 3: Взаимодействие
- Стъпка 4: Код за мониторинг на температура, налягане и влажност
- Стъпка 5: Приложения:
- Стъпка 6: Видео урок
Видео: Изчисляване на влажност, налягане и температура с помощта на BME280 и фотонен интерфейс .: 6 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:50
Попадаме на различни проекти, които изискват мониторинг на температурата, налягането и влажността. Така осъзнаваме, че тези параметри всъщност играят жизненоважна роля за оценката на ефективността на работа на системата при различни атмосферни условия. Както на промишлено ниво, така и на персонални системи, оптималната температура, влажност и барометрично налягане са необходими за адекватната работа на системата.
Ето защо предоставяме пълен урок за този сензор, в този урок ще обясним работата на сензора за влажност, налягане и температура BME280 с фотон на частици.
Стъпка 1: BME280 Проучване
Електронният сектор засили играта си със сензора BME280, сензор за околната среда с температура, барометрично налягане и влажност! Този сензор е чудесен за всякакви метеорологични условия/околна среда и дори може да се използва в I2C.
Този прецизен сензор BME280 е най -доброто сензорно решение за измерване на влажност с ± 3% точност, барометрично налягане с ± 1 hPa абсолютна точност и температура с ± 1,0 ° C точност. Тъй като налягането се променя с надморската височина и измерванията на налягането са толкова добри, можете да го използвате и като висотомер с ± 1 метър или по -добра точност! Температурният сензор е оптимизиран за най -ниския шум и най -високата разделителна способност и се използва за температурна компенсация на сензора за налягане и може да се използва и за оценка на температурата на околната среда. Измерванията с BME280 могат да се извършват от потребителя или да се извършват на редовни интервали.
Информационен лист: Щракнете, за да визуализирате или изтеглите листа с данни на сензора BME280.
Стъпка 2: Списък на хардуерните изисквания
Използвахме изцяло части от Dcube Store, защото са лесни за използване и нещо за всичко, което се вписва добре на сантиметрова решетка, наистина ни кара да работим. Можете да използвате каквото искате, но електрическата схема ще приеме, че използвате тези части.
- BME280 сензор I²C мини модул
- I²C щит за частичен фотон
- Фотон от частици
- I²C кабел
- Захранващ адаптер
Стъпка 3: Взаимодействие
Разделът за свързване основно обяснява необходимите кабелни връзки между сензора и фотона на частиците. Осигуряването на правилни връзки е основната необходимост, докато работите върху всяка система за желания изход. И така, необходимите връзки са както следва:
BME280 ще работи над I2C. Ето примерната електрическа схема, демонстрираща как да свържете всеки интерфейс на сензора. Извън кутията, платката е конфигурирана за I2C интерфейс, като такава препоръчваме да използвате тази връзка, ако не сте агностицист по друг начин. Всичко, от което се нуждаете, са четири проводника! Изискват се само четири връзки Vcc, Gnd, SCL и SDA щифтове и те са свързани с помощта на I2C кабел. Тези връзки са показани на снимките по -горе.
Стъпка 4: Код за мониторинг на температура, налягане и влажност
Чистата версия на кода, която ще използваме, за да го стартираме, е достъпна ТУК.
Докато използваме сензорния модул с Arduino, ние включваме библиотеката application.h и spark_wiring_i2c.h. Библиотеката "application.h" и spark_wiring_i2c.h съдържа функциите, които улесняват i2c комуникацията между сензора и частицата.
Щракнете ТУК, за да отворите уеб страницата за мониторинг на устройството
Качете кода на дъската си и той трябва да започне да работи! Всички данни могат да бъдат получени на уеб страницата, както е показано на снимката.
Кодът е предоставен по -долу:
// Разпространява се с лиценз за свободна воля.// Използвайте го както искате, печелите или безплатно, при условие че се вписва в лицензите на свързаните с него произведения. // BME280 // Този код е проектиран да работи с BME280_I2CS I2C мини модул, достъпен от ControlEverything.com. #include #include // BME280 I2C адресът е 0x76 (108) #define Addr 0x76 двоен cTemp = 0, fTemp = 0, налягане = 0, влажност = 0; void setup () {// Задаване на променлива Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Частица.променлива ("налягане", налягане); Particle.variable ("влажност", влажност); // Инициализира I2C комуникацията като MASTER Wire.begin (); // Инициализиране на серийна комуникация, зададена скорост на предаване = 9600 Serial.begin (9600); забавяне (300); } void loop () {unsigned int b1 [24]; беззнакови int данни [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Стартиране на I2C предаване Wire.beginTransmission (Addr); // Изберете регистър на данни Wire.write ((136+i)); // Спиране на I2C предаване Wire.endTransmission (); // Заявка за 1 байт данни Wire.requestFrom (Addr, 1); // Прочетете 24 байта данни, ако (Wire.available () == 1) {b1 = Wire.read (); }} // Конвертиране на данните // временни коефициенти 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); // коефициенти на налягане 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 ++) {// Стартиране на I2C предаване Wire.beginTransmission (Addr); // Изберете регистър на данни Wire.write ((225+i)); // Спиране на I2C предаване Wire.endTransmission (); // Заявка за 1 байт данни Wire.requestFrom (Addr, 1); // Прочетете 7 байта данни, ако (Wire.available () == 1) {b1 = Wire.read (); }} // Конвертиране на данните // коефициенти на влажност 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]; // Стартиране на I2C предаване Wire.beginTransmission (Addr); // Изберете регистър на данни Wire.write (161); // Спиране на I2C предаване Wire.endTransmission (); // Заявка за 1 байт данни Wire.requestFrom (Addr, 1); // Прочетете 1 байт данни, ако (Wire.available () == 1) {dig_H1 = Wire.read (); } // Стартиране на I2C предаване Wire.beginTransmission (Addr); // Изберете регистър за влажност на контрола Wire.write (0xF2); // Влажност над честотата на дискретизация = 1 Wire.write (0x01); // Спиране на I2C предаване Wire.endTransmission (); // Стартиране на I2C предаване Wire.beginTransmission (Addr); // Изберете регистър за контролно измерване Wire.write (0xF4); // Нормален режим, температура и налягане над честотата на вземане на проби = 1 Wire.write (0x27); // Спиране на I2C предаване Wire.endTransmission (); // Стартиране на I2C предаване Wire.beginTransmission (Addr); // Изберете конфигурационен регистър Wire.write (0xF5); // Време на изчакване = 1000ms Wire.write (0xA0); // Спиране на I2C предаване Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Стартиране на I2C предаване Wire.beginTransmission (Addr); // Изберете регистър на данни Wire.write ((247+i)); // Спиране на I2C предаване Wire.endTransmission (); // Заявка за 1 байт данни Wire.requestFrom (Addr, 1); // Прочетете 8 байта данни, ако (Wire.available () == 1) {data = Wire.read (); }} // Преобразуване на данни за налягане и температура в 19-битови дълги adc_p = (((long) (data [0] & 0xFF) * 65536) + ((long) (data [1] & 0xFF) * 256) + (дълго) (данни [2] & 0xF0)) / 16; дълъг adc_t = (((дълъг) (данни [3] & 0xFF) * 65536) + ((дълъг) (данни [4] & 0xFF) * 256) + (дълъг) (данни [5] & 0xF0)) / 16; // Конвертираме данните за влажността дълги adc_h = ((дълги) (данни [6] & 0xFF) * 256 + (дълги) (данни [7] & 0xFF)); // Изчисления на изместване на температурата 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); двойно t_fine = (дълго) (var1 + var2); двоен cTemp = (var1 + var2) / 5120.0; двоен fTemp = cTemp * 1.8 + 32; // Изчисления на отместване на налягането var1 = ((двойно) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((двойно) dig_P6) / 32768.0; var2 = var2 + var1 * ((двойно) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((двойно) dig_P4) * 65536.0); var1 = (((двойно) dig_P3) * var1 * var1 / 524288.0 + ((двойно) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((двойно) dig_P1); двойно p = 1048576.0 - (двойно) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((двойно) dig_P9) * p * p / 2147483648.0; var2 = p * ((двойно) dig_P8) / 32768.0; двойно налягане = (p + (var1 + var2 + ((двойно) dig_P7)) / 16.0) / 100; // Изчисления на изместване на влажността 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))); двойна влажност = var_H * (1.0 - dig_H1 * var_H / 524288.0); ако (влажност> 100,0) {влажност = 100,0; } иначе if (влажност <0.0) {влажност = 0.0; } // Извеждане на данни към таблото за управление Particle.publish ("Температура в Целзий:", String (cTemp)); Particle.publish ("Температура по Фаренхайт:", String (fTemp)); Particle.publish ("Налягане:", Низ (налягане)); Particle.publish ("Относителна влажност:", низ (влажност)); забавяне (1000); }
Стъпка 5: Приложения:
BME280 сензор за температура, налягане и относителна влажност има различни индустриални приложения като мониторинг на температурата, компютърна периферна термична защита, мониторинг на налягането в промишлеността. Ние също използваме този сензор в приложенията на метеорологичните станции, както и в системата за наблюдение на оранжерии.
Други приложения могат да включват:
- Осъзнаване на контекста, напр. откриване на кожата, откриване на промени в стаята.
- Контрол на физическото състояние / благосъстояние - Предупреждение относно сухота или високи температури.
- Измерване на обема и въздушния поток.
- Управление на домашната автоматизация.
- Управление на отоплението, вентилацията, климатизацията (ОВК).
- Интернет на нещата.
- Подобрение на GPS (напр. Подобряване на времето до първото поправяне, мъртви сметки, откриване на наклон).
- Вътрешна навигация (промяна на откриване на пода, откриване на асансьор).
- Външна навигация, приложения за отдих и спорт.
- Прогноза за времето.
- Индикация за вертикална скорост (покачване/потъване)..
Стъпка 6: Видео урок
Гледайте нашия видеоурок, за да преминете през всички стъпки в свързването и завършването на проекта.
Следете за взаимодействащите и работещи блогове на други сензори.
Препоръчано:
M5STACK Как да показвате температура, влажност и налягане на M5StickC ESP32 с помощта на Visuino - Лесно за изпълнение: 6 стъпки
M5STACK Как да показвате температура, влажност и налягане на M5StickC ESP32 с помощта на Visuino - Лесно за правене: В този урок ще се научим как да програмираме ESP32 M5Stack StickC с Arduino IDE и Visuino за показване на температурата, влажността и налягането с помощта на сензор ENV (DHT12, BMP280, BMM150)
Надморска височина, налягане и температура с помощта на Raspberry Pi с MPL3115A2: 6 стъпки
Надморска височина, налягане и температура с помощта на Raspberry Pi с MPL3115A2: Звучи интересно. Това е напълно възможно в този момент, когато всички ние влизаме в поколението на IoT. Като изрод за електроника, ние играхме с Raspberry Pi и решихме да правим интересни проекти, използвайки тези знания. В този проект ние ще
Метеорологична станция Arduino, използваща BMP280 -DHT11 - Температура, влажност и налягане: 8 стъпки
Метеорологична станция Arduino, използваща BMP280 -DHT11 - Температура, влажност и налягане: В този урок ще се научим как да направим метеорологична станция, която ще показва ТЕМПЕРАТУРА, ВЛАЖНОСТ И НАЛЯГАНЕ на LCD дисплея TFT 7735 Гледайте демонстрационен видеоклип
Визуализиране на барометричното налягане и температура с помощта на Infineon XMC4700 RelaxKit, Infineon DPS422 и AWS .: 8 стъпки
Визуализиране на барометричното налягане и температура с помощта на Infineon XMC4700 RelaxKit, Infineon DPS422 и AWS .: Това е прост проект за улавяне на барометричното налягане и температура с помощта на Infineon DPS 422. Става неудобно да се проследяват налягането и температурата за определен период от време. Тук се появява анализът, прозрението за промяната в
Температура, относителна влажност, регистратор на атмосферно налягане с помощта на Raspberry Pi и TE свързаност MS8607-02BA01: 22 стъпки (със снимки)
Температура, относителна влажност, регистратор на атмосферно налягане с помощта на Raspberry Pi и TE свързаност MS8607-02BA01: Въведение: В този проект ще ви покажа как да изградите настройка по стъпка система за регистриране на температурата на влажността и атмосферното налягане. Този проект се основава на чипа за околната среда Raspberry Pi 3 Model B и TE Connectivity MS8607-02BA