Բովանդակություն:

Խոնավության, ճնշման և ջերմաստիճանի հաշվարկ ՝ օգտագործելով BME280 և ֆոտոնային միջերես. 6 քայլ
Խոնավության, ճնշման և ջերմաստիճանի հաշվարկ ՝ օգտագործելով BME280 և ֆոտոնային միջերես. 6 քայլ
Anonim
Խոնավության, ճնշման և ջերմաստիճանի հաշվարկ ՝ օգտագործելով BME280 և ֆոտոնային միջերեսներ
Խոնավության, ճնշման և ջերմաստիճանի հաշվարկ ՝ օգտագործելով BME280 և ֆոտոնային միջերեսներ

Մենք հանդիպում ենք տարբեր նախագծերի, որոնք պահանջում են ջերմաստիճանի, ճնշման և խոնավության մոնիտորինգ: Այսպիսով, մենք գիտակցում ենք, որ այս պարամետրերն իրականում կենսական դեր են խաղում տարբեր մթնոլորտային պայմաններում համակարգի աշխատանքի արդյունավետության գնահատման մեջ: Ինչպես արդյունաբերական, այնպես էլ անհատական համակարգերում օպտիմալ ջերմաստիճանը, խոնավությունը և բարոմետրիկ ճնշումը անհրաժեշտ են համակարգի համարժեք աշխատանքի համար:

Ահա թե ինչու մենք տրամադրում ենք այս սենսորի վերաբերյալ ամբողջական ձեռնարկ, այս ձեռնարկում մենք բացատրելու ենք BME280 խոնավության, ճնշման և ջերմաստիճանի տվիչի աշխատանքը մասնիկների ֆոտոնով:

Քայլ 1: BME280 հետազոտություն

BME280 Հետախուզություն
BME280 Հետախուզություն

Էլեկտրոնային հատվածն ակտիվացրել է իր խաղը BME280 սենսորով, որը բնապահպանական տվիչ է `ջերմաստիճանի, բարոմետրիկ ճնշման և խոնավության ցուցանիշներով: Այս սենսորը հիանալի է եղանակի/շրջակա միջավայրի բոլոր տեսակների համար և կարող է օգտագործվել նույնիսկ I2C- ում:

Այս ճշգրիտ սենսոր BME280- ը խոնավության measuring 3% ճշգրտությամբ, բարոմետրիկ ճնշումը ± 1 hPa բացարձակ ճշգրիտ և ջերմաստիճանը ± 1.0 ° C ճշգրտությամբ չափելու լավագույն լուծումն է: Քանի որ ճնշումը փոխվում է բարձրության հետ, և ճնշման չափումները այնքան լավ են, կարող եք նաև օգտագործել որպես բարձրաչափ ± 1 մետր կամ ավելի բարձր ճշգրտությամբ: temperatureերմաստիճանի տվիչը օպտիմիզացված է ամենացածր աղմուկի և ամենաբարձր լուծման համար և օգտագործվում է ջերմաստիճանի փոխհատուցման համար: ճնշման տվիչը և կարող է օգտագործվել նաև շրջակա միջավայրի ջերմաստիճանը գնահատելու համար: BME280- ով չափումները կարող են կատարվել օգտագործողի կողմից կամ կատարվել կանոնավոր պարբերականությամբ:

Տվյալների թերթ. Կտտացրեք BME280 տվիչի տվյալների թերթը նախադիտելու կամ ներբեռնելու համար:

Քայլ 2: Սարքավորման պահանջների ցուցակ

Սարքավորումների պահանջների ցուցակ
Սարքավորումների պահանջների ցուցակ

Մենք ամբողջությամբ օգտագործում էինք Dcube Store- ի մասերը, քանի որ դրանք դյուրին են օգտագործման համար, և սանտիմետր ցանցի վրա գեղեցիկ տեղավորվող ինչ -որ բան իրոք մեզ ստիպում է: Դուք կարող եք օգտագործել այն, ինչ ցանկանում եք, բայց էլեկտրագծերի դիագրամը ենթադրում է, որ դուք օգտագործում եք այս մասերը:

  • BME280 ցուցիչ I²C մինի մոդուլ
  • I²C վահան մասնիկի ֆոտոնի համար
  • Ֆոտոն մասնիկ
  • I²C մալուխ
  • Էլեկտրաէներգիայի ադապտեր

Քայլ 3: Ինտերֆեյս

Ինտերֆեյս
Ինտերֆեյս

Միջերեսային հատվածը հիմնականում բացատրում է սենսորի և մասնիկ ֆոտոնի միջև պահանջվող լարերի միացումները: Connectionsանկալի ելքի համար ցանկացած համակարգի վրա աշխատելիս հիմնական անհրաժեշտությունն է հիմնական կապերի ապահովումը: Այսպիսով, անհրաժեշտ կապերը հետևյալն են.

BME280- ը կաշխատի I2C- ով: Ահա միացման սխեմայի օրինակ, որը ցույց է տալիս, թե ինչպես միացնել սենսորի յուրաքանչյուր միջերեսը: Տուփից դուրս, տախտակը կազմաձևված է I2C ինտերֆեյսի համար, ուստի խորհուրդ ենք տալիս օգտագործել այս ինտերֆեյսը, եթե այլևս ագնոստիկ եք: Ձեզ անհրաժեշտ է չորս լար: Միայն չորս միացում է պահանջվում Vcc, Gnd, SCL և SDA կապում, որոնք միացված են I2C մալուխի օգնությամբ: Այս կապերը ցուցադրվում են վերը նշված նկարներում:

Քայլ 4. peratերմաստիճանի, ճնշման և խոնավության մոնիտորինգի ծածկագիր

Temերմաստիճանի, ճնշման եւ խոնավության մոնիտորինգի կանոնագիրք
Temերմաստիճանի, ճնշման եւ խոնավության մոնիտորինգի կանոնագիրք
Temերմաստիճանի, ճնշման եւ խոնավության մոնիտորինգի կանոնագիրք
Temերմաստիճանի, ճնշման եւ խոնավության մոնիտորինգի կանոնագիրք

Կոդի մաքուր տարբերակը, որը մենք կօգտագործենք սա գործարկելու համար, հասանելի է ԱՅՍՏԵ:

Arduino- ի հետ սենսորային մոդուլն օգտագործելիս մենք ներառում ենք application.h և spark_wiring_i2c.h գրադարանը: «application.h» և spark_wiring_i2c.h գրադարանը պարունակում են գործառույթներ, որոնք հեշտացնում են i2c հաղորդակցությունը սենսորի և մասնիկի միջև:

Սեղմեք ԱՅՍՏԵ device ՝ սարքի մոնիտորինգի համար կայք բացելու համար

Վերբեռնեք ծածկագիրը ձեր տախտակին և այն պետք է սկսի աշխատել: Բոլոր տվյալները կարելի է ձեռք բերել վեբ էջում, ինչպես ցույց է տրված նկարում:

Ստորև բերված է ծածկագիրը.

// Տարածված է ազատ կամքի լիցենզիայի միջոցով: // BME280 // Այս կոդը նախատեսված է BME280_I2CS I2C մինի մոդուլի հետ աշխատելու համար, որը հասանելի է ControlEverything.com կայքում: #ներառել #ներառել // BME280 I2C հասցեն ՝ 0x76 (108) #սահմանել Addr 0x76 կրկնակի cTemp = 0, fTemp = 0, ճնշում = 0, խոնավություն = 0; void setup () {// Սահմանել փոփոխական Particle.variable ("i2cdevice", "BME280"); հոդված. փոփոխական («cTemp», cTemp); Particle.variable («fTemp», fTemp); Մասնիկ. Փոփոխական («ճնշում», ճնշում); Մասնիկ. Փոփոխական («խոնավություն», խոնավություն); // Initialise I2C կապը որպես MASTER Wire.begin (); // Սկզբնականացնել սերիական հաղորդակցություն, սահմանել baud rate = 9600 Serial.begin (9600); ուշացում (300); } void loop () {անստորագիր 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)); // Stop I2C Transmission 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 ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Ընտրեք տվյալների գրանցամատյան Wire.write ((225+i)); // Stop I2C Transmission 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 Փոխանցման տուփը. BeginTransmission (Addr); // Ընտրեք տվյալների գրանցամատյան Wire.write (161); // Stop I2C Transmission Wire.endTransmission (); // Պահանջել 1 բայթ տվյալների Wire.requestFrom (Addr, 1); // Կարդացեք տվյալների 1 բայթ, եթե (Wire.available () == 1) {dig_H1 = Wire.read (); } // Սկսել I2C Փոխանցման տուփը. BeginTransmission (Addr); // Ընտրեք կառավարման խոնավության գրանցամատյան Wire.write (0xF2); // Խոնավություն նմուշառման արագության նկատմամբ = 1 Wire.write (0x01); // Stop I2C Transmission Wire.endTransmission (); // Սկսել I2C Փոխանցման տուփը. BeginTransmission (Addr); // Ընտրեք հսկիչ չափման գրանցամատյան Wire.write (0xF4); // Նորմալ ռեժիմ, ջերմաստիճան և ճնշում ընտրանքի արագության նկատմամբ = 1 Wire.write (0x27); // Stop I2C Transmission Wire.endTransmission (); // Սկսել I2C Փոխանցման տուփը. BeginTransmission (Addr); // Ընտրեք config register Wire.write (0xF5); // Սպասման սպասման ժամանակը = 1000ms Wire.write (0xA0); // Stop I2C Transmission Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Ընտրեք տվյալների գրանցամատյան Wire.write ((247+i)); // Stop I2C Transmission Wire.endTransmission (); // Պահանջել 1 բայթ տվյալների Wire.requestFrom (Addr, 1); // Կարդացեք տվյալների 8 բայթ, եթե (Wire.available () == 1) {data = Wire.read (); }} // pressureնշման և ջերմաստիճանի տվյալները փոխակերպեք 19 բիթ երկարության adc_p = (((երկար) (տվյալներ [0] & 0xFF) * 65536) + ((երկար) (տվյալներ [1] և 0xFF) * 256) + (երկար) (տվյալներ [2] և 0xF0)) / 16; երկար adc_t = (((երկար) (տվյալներ [3] և 0xFF) * 65536) + ((երկար) (տվյալներ [4] և 0xFF) * 256) + (երկար) (տվյալներ [5] և 0xF0)) / 16; // Փոխակերպեք խոնավության տվյալները երկար adc_h = ((երկար) (տվյալները [6] & 0xFF) * 256 + (երկար) (տվյալները [7] & 0xFF)); // Temերմաստիճանի փոխհատուցման հաշվարկներ կրկնակի 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; // Pressնշման փոխհատուցման հաշվարկներ 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; // Խոնավության փոխհատուցման հաշվարկներ կրկնակի 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); եթե (խոնավություն> 100.0) {խոնավություն = 100.0; } else if (խոնավություն <0.0) {խոնավություն = 0.0; } // Տվյալների մուտքագրում Particle.publish- ի վահանակ («elsերմաստիճանը Celsius:", String (cTemp)); Particle.publish ("ahերմաստիճանը Ֆարենհայտում.", Լարային (fTemp)); Particle.publish ("ureնշում.", Լար (ճնշում)); Particle.publish ("Հարաբերական խոնավություն.", String (խոնավություն)); ուշացում (1000); }

Քայլ 5: Դիմումներ

Դիմումներ
Դիմումներ

BME280 ջերմաստիճանի, ճնշման և հարաբերական խոնավության ցուցիչն ունի տարբեր արդյունաբերական ծրագրեր, ինչպիսիք են ջերմաստիճանի մոնիտորինգը, համակարգչային ծայրամասային ջերմային պաշտպանությունը, ճնշման մոնիտորինգը արդյունաբերության մեջ: Մենք նաև օգտագործել ենք այս տվիչը եղանակային կայանների ծրագրերում, ինչպես նաև ջերմոցային մոնիտորինգի համակարգում:

Այլ դիմումները կարող են ներառել.

  1. Համատեքստի իրազեկում, օրինակ. մաշկի հայտնաբերում, սենյակի փոփոխության հայտնաբերում:
  2. Ֆիթնեսի մոնիտորինգ / բարեկեցություն - զգուշացում չորության կամ բարձր ջերմաստիճանի վերաբերյալ:
  3. Volumeավալի և օդի հոսքի չափում:
  4. Տան ավտոմատացման հսկողություն:
  5. Վերահսկեք ջեռուցումը, օդափոխումը, օդորակումը (HVAC):
  6. Իրերի ինտերնետ:
  7. GPS- ի կատարելագործում (օրինակ ՝ ժամանակի առաջին ուղղման բարելավում, մեռած հաշիվների հաշվարկ, լանջերի հայտնաբերում):
  8. Ներքին նավարկություն (հատակի հայտնաբերման փոփոխություն, վերելակի հայտնաբերում):
  9. Բացօթյա նավարկություն, ժամանց և սպորտային ծրագրեր:
  10. Եղանակի տեսություն.
  11. Ուղղահայաց արագության ցուցում (բարձրացման/խորտակման արագություն)..

Քայլ 6: Վիդեո ձեռնարկ

Դիտեք մեր վիդեո ձեռնարկը `նախագիծը փոխազդելու և ավարտելու բոլոր քայլերն անցնելու համար:

Շարունակեք հետևել այլ սենսորների ինտերֆեյսին և աշխատող բլոգերին:

Խորհուրդ ենք տալիս: