Мазмұны:

Ылғалдылық, қысым және температураны есептеу BME280 және фотон интерфейсін қолдана отырып: 6 қадам
Ылғалдылық, қысым және температураны есептеу BME280 және фотон интерфейсін қолдана отырып: 6 қадам

Бейне: Ылғалдылық, қысым және температураны есептеу BME280 және фотон интерфейсін қолдана отырып: 6 қадам

Бейне: Ылғалдылық, қысым және температураны есептеу BME280 және фотон интерфейсін қолдана отырып: 6 қадам
Бейне: Географиялық есептер. АУА ТЕМПЕРАТУРАСЫ | Атмосфера тарауы | ГЕОГРАФИЯ 2024, Қараша
Anonim
Ылғалдылық, қысым мен температураны есептеу BME280 және фотонды интерфейсті қолдану
Ылғалдылық, қысым мен температураны есептеу BME280 және фотонды интерфейсті қолдану

Біз температураны, қысымды және ылғалдылықты бақылауды қажет ететін түрлі жобаларды кездестіреміз. Біз бұл параметрлер әр түрлі атмосфералық жағдайларда жүйенің жұмыс тиімділігін бағалауда маңызды рөл атқаратынын түсінеміз. Өнеркәсіптік деңгейде де, жеке жүйеде де температураның, ылғалдылықтың және барометрлік қысымның оңтайлы деңгейі жүйенің тиісті жұмыс істеуі үшін қажет.

Сондықтан біз бұл сенсор туралы толық оқулықты ұсынамыз, бұл оқулықта BME280 ылғалдылық, қысым мен температура датчигінің фотонды бөлшектермен жұмыс істеуін түсіндіреміз.

1 -қадам: BME280 барлау

BME280 барлау
BME280 барлау

Электрондық сектор BME280 сенсорымен, температурасы, барометрлік қысымы мен ылғалдылығы бар экологиялық сенсормен өз ойын арттырды! Бұл сенсор ауа -райының барлық түрлеріне өте ыңғайлы және оны I2C -де қолдануға болады.

Бұл BME280 дәлдік датчигі ылғалдылықты ± 3% дәлдікпен, барометрлік қысымды ± 1 гПа абсолютті дәлдікпен және температураны ± 1,0 ° C дәлдікпен өлшеуге арналған ең жақсы сенсорлық шешім болып табылады. Қысым биіктікке қарай өзгеретіндіктен және қысымды өлшеу өте жақсы болғандықтан, оны ± 1 метр немесе дәлірек биіктік өлшеуіш ретінде пайдалануға болады! қысым датчигі және оны қоршаған ортаның температурасын бағалау үшін де қолдануға болады. BME280 көмегімен өлшеуді пайдаланушы орындауы мүмкін немесе белгілі бір уақыт аралығында орындалуы мүмкін.

Деректер кестесі: BME280 сенсорының деректер кестесін қарау немесе жүктеу үшін басыңыз.

2 -қадам: аппараттық құралдарға қойылатын талаптар тізімі

Аппараттық құралдарға қойылатын талаптар тізімі
Аппараттық құралдарға қойылатын талаптар тізімі

Біз Dcube дүкенінің бөлшектерін толығымен қолдандық, себебі оларды пайдалану оңай, және сантиметрлік торға жақсы сәйкес келетін барлық нәрсе бізді шынымен де алға жетелейді. Сіз қалаған нәрсені пайдалана аласыз, бірақ электр схемасы сіз бұл бөлшектерді қолданасыз деп болжайды.

  • 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 // Бұл код ControlEverything.com сайтынан қол жетімді BME280_I2CS I2C шағын модулімен жұмыс істеуге арналған. #include #include // BME280 I2C мекенжайы - 0x76 (108) #анықтаңыз Addr 0x76 қос cTemp = 0, fTemp = 0, қысым = 0, ылғалдылық = 0; void setup () {// Particle.variable айнымалы мәнін орнату («i2cdevice», «BME280»); article.variable («cTemp», cTemp); Particle.variable («fTemp», fTemp); Бөлшек.өзгермелі («қысым», қысым); Бөлшек.өзгермелі («ылғалдылық», ылғалдылық); // 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 ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Wire.write деректер регистрін таңдаңыз ((136+i)); // I2C Transmission Wire.endTransmission тоқтату (); // Wire.requestFrom деректерінің 1 байтын сұрау (Addr, 1); // Деректердің 24 байтын оқыңыз, егер (Wire.available () == 1) {b1 = Wire.read (); }} // Деректерді түрлендіру // 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); // қысым коэффициенттері 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 ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Wire.write деректер регистрін таңдаңыз ((225+i)); // I2C Transmission Wire.endTransmission тоқтату (); // Wire.requestFrom деректерінің 1 байтын сұрау (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]; // Start I2C Transmission Wire.beginTransmission (Addr); // Wire.write деректер регистрін таңдаңыз (161); // I2C Transmission Wire.endTransmission тоқтату (); // Wire.requestFrom деректерінің 1 байтын сұрау (Addr, 1); // 1 байт деректерді оқыңыз, егер (Wire.available () == 1) {dig_H1 = Wire.read (); } // I2C Transmission Wire.beginTransmission (Addr) іске қосыңыз; // Wire.write бақылау ылғалдылық регистрін таңдаңыз (0xF2); // Ылғалдылық іріктеу жылдамдығынан = 1 Wire.write (0x01); // I2C Transmission Wire.endTransmission тоқтату (); // Start I2C Transmission Wire.beginTransmission (Addr); // Wire.write бақылау өлшеу регистрін таңдаңыз (0xF4); // Қалыпты режим, іріктеу жылдамдығындағы температура мен қысым = 1 Wire.write (0x27); // I2C Transmission Wire.endTransmission тоқтату (); // Start I2C Transmission Wire.beginTransmission (Addr); // Wire.write (0xF5) тіркеу регистрін таңдаңыз; // Күту уақыты = 1000ms Wire.write (0xA0); // I2C Transmission Wire.endTransmission тоқтату (); for (int i = 0; i <8; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Wire.write деректер регистрін таңдаңыз ((247+i)); // I2C Transmission Wire.endTransmission тоқтату (); // Wire.requestFrom деректерінің 1 байтын сұрау (Addr, 1); // Деректердің 8 байтын оқыңыз, егер (Wire.available () == 1) {data = Wire.read (); }} // Қысым мен температура туралы мәліметтерді 19 биттікке түрлендіру adc_p = (((ұзақ) (деректер [0] & 0xFF) * 65536) + ((ұзын) (деректер [1] & 0xFF) * 256) + (ұзақ) (деректер [2] & 0xF0)) / 16; long adc_t = (((ұзақ) (деректер [3] & 0xFF) * 65536) + ((ұзын) (деректер [4] & 0xFF) * 256) + (ұзын) (деректер [5] & 0xF0)) / 16; // Ылғалдылық деректерін ұзақ түрлендіру adc_h = ((ұзақ) (деректер [6] & 0xFF) * 256 + (ұзын) (деректер [7] & 0xFF)); // Температураның ығысуы бойынша есептеулер қос var1 = (((қос) adc_t) / 16384.0 - ((қос) dig_T1) / 1024.0) * ((қос) dig_T2); қос var2 = ((((қос) adc_t) / 131072.0 - ((қос) dig_T1) / 8192.0) * (((қос) adc_t) /131072.0 - ((қос) dig_T1) /8192.0)) * ((қос) dig_T3); қос t_fine = (ұзын) (var1 + var2); қос cTemp = (var1 + var2) / 5120.0; қос fTemp = cTemp * 1.8 + 32; // Қысымның ығысуы бойынша есептеулер var1 = ((double) 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; // Ылғалдылықты есепке алу еселенген var_H = (((қос) 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); if (ылғалдылық> 100,0) {ылғалдылық = 100,0; } else if (ылғалдылық <0.0) {ылғалдылық = 0.0; } // Деректерді бақылау тақтасына шығару Particle.publish («Цельсий бойынша температура:», String (cTemp)); Particle.publish («Фаренгейт температурасы:», String (fTemp)); Particle.publish («Қысым:», Жол (қысым)); Particle.publish («Салыстырмалы ылғалдылық:», Жол (ылғалдылық)); кешіктіру (1000); }

5 -қадам: Өтініштер:

Қолданбалар
Қолданбалар

BME280 температура, қысым және салыстырмалы ылғалдылық сенсорында температураны бақылау, компьютердің перифериялық термиялық қорғанысы, өнеркәсіптегі қысымды бақылау сияқты түрлі өнеркәсіптік қосымшалар бар. Біз сондай -ақ бұл сенсорды метеорологиялық станцияларда, сондай -ақ жылыжайдың бақылау жүйесінде қолдандық.

Басқа қосымшаларға мыналар кіруі мүмкін:

  1. Мәтінмәндік хабардарлық, мысалы. теріні анықтау, бөлменің өзгеруін анықтау.
  2. Фитнес мониторингі / әл -ауқат - құрғақтық немесе жоғары температура туралы ескерту.
  3. Ауа көлемі мен көлемін өлшеу.
  4. Үйде автоматтандыруды басқару.
  5. Жылытуды, желдетуді, кондиционерлеуді (HVAC) басқару.
  6. Интернет заттары.
  7. GPS-ті жақсарту (мысалы, уақытты бірінші рет жақсарту, өлі есептер, көлбеуді анықтау).
  8. Ішкі навигация (еденді анықтауды өзгерту, лифтті анықтау).
  9. Сыртта навигация, демалыс және спорттық қосымшалар.
  10. Ауа райы болжамы.
  11. Тік жылдамдық көрсеткіші (көтерілу/түсу жылдамдығы).

6 -қадам: Бейне оқулық

Жобаны іске қосу мен аяқтаудың барлық кезеңдерінен өту үшін біздің бейне оқулықты қараңыз.

Басқа сенсордың интерфейсі мен жұмыс блогын қадағалаңыз.

Ұсынылған: