Orodha ya maudhui:

Unyevu, Shinikizo na Usomaji wa Joto Kutumia BME280 na Photon Interfacing .: 6 Hatua
Unyevu, Shinikizo na Usomaji wa Joto Kutumia BME280 na Photon Interfacing .: 6 Hatua

Video: Unyevu, Shinikizo na Usomaji wa Joto Kutumia BME280 na Photon Interfacing .: 6 Hatua

Video: Unyevu, Shinikizo na Usomaji wa Joto Kutumia BME280 na Photon Interfacing .: 6 Hatua
Video: Lesson 45: Measure temperature and Pressure with BME280 display on LCD1602 and LCD2004 with Arduino 2024, Julai
Anonim
Unyevu, Shinikizo na Usomaji wa Joto Kutumia BME280 na Photon Interfacing
Unyevu, Shinikizo na Usomaji wa Joto Kutumia BME280 na Photon Interfacing

Tunakutana na miradi anuwai ambayo inahitaji joto, shinikizo na ufuatiliaji wa unyevu. Kwa hivyo tunatambua kuwa vigezo hivi kweli vina jukumu muhimu katika kuwa na makadirio ya ufanisi wa kazi wa mfumo katika hali tofauti za anga. Wote katika kiwango cha viwanda na mifumo ya kibinafsi joto bora, unyevu na kiwango cha shinikizo la kibaometri inahitajika kwa utendaji wa kutosha wa mfumo.

Hii ndio sababu tunatoa mafunzo kamili kwenye sensa hii, katika mafunzo haya tutaelezea kazi ya BME280 ya unyevu, shinikizo na sensorer ya joto na chembe chembe.

Hatua ya 1: Utaftaji wa BME280

Uchunguzi wa BME280
Uchunguzi wa BME280

Sekta ya elektroniki imeongeza mchezo wao na sensorer ya BME280, sensorer ya mazingira na joto, shinikizo la kibaometri na unyevu! Sensor hii ni nzuri kwa kila hali ya hali ya hewa / mazingira na inaweza hata kutumika katika I2C.

Sura hii ya usahihi BME280 ni suluhisho bora ya kuhisi ya kupima unyevu na ± 3% usahihi, shinikizo la kijiometri na ± 1 hPa usahihi kamili, na joto na usahihi wa ± 1.0 ° C. Kwa sababu shinikizo hubadilika na urefu, na vipimo vya shinikizo ni nzuri sana, unaweza pia kuitumia kama altimeter yenye mita ± 1 au usahihi bora! Sura ya joto imeboreshwa kwa kelele ya chini kabisa na azimio kubwa zaidi na hutumiwa kwa fidia ya joto ya sensor ya shinikizo na pia inaweza kutumika kwa makadirio ya joto la kawaida. Vipimo na BME280 vinaweza kufanywa na mtumiaji au kufanywa mara kwa mara.

Hati ya data: Bonyeza kukagua au kupakua data ya sensorer ya BME280.

Hatua ya 2: Orodha ya Mahitaji ya Vifaa

Orodha ya Mahitaji ya Vifaa
Orodha ya Mahitaji ya Vifaa

Tulitumia Sehemu za Duka la Dcube kwa sababu ni rahisi kutumia, na kitu juu ya kila kitu kinachofaa vizuri kwenye gridi ya sentimita hutupatia. Unaweza kutumia chochote unachotaka, lakini mchoro wa wiring utafikiria unatumia sehemu hizi.

  • Sura ya BME280 I²C Mini
  • I²C Shield kwa Particle Photon
  • Chembe Photon
  • I²C Cable
  • Adapta ya umeme

Hatua ya 3: Kuingiliana

Kuingiliana
Kuingiliana

Sehemu ya kuingiliana kimsingi inaelezea uunganisho wa wiring unaohitajika kati ya sensa na chembe chembe. Kuhakikisha unganisho sahihi ni hitaji la msingi wakati unafanya kazi kwenye mfumo wowote wa pato unalotaka. Kwa hivyo, viunganisho vinavyohitajika ni kama ifuatavyo.

BME280 itafanya kazi juu ya I2C. Hapa kuna mfano wa mchoro wa wiring, unaonyesha jinsi ya kuweka waya kila kiunganishi cha sensa. Nje ya sanduku, bodi imesanidiwa kwa kiolesura cha I2C, kwa hivyo tunapendekeza kutumia mwingiliano huu ikiwa wewe ni agnostic. Unachohitaji ni waya nne! Viunganisho vinne tu vinahitajika Vcc, Gnd, SCL na SDA pini na hizi zimeunganishwa kwa msaada wa kebo ya I2C. Uunganisho huu umeonyeshwa kwenye picha hapo juu.

Hatua ya 4: Msimbo wa Ufuatiliaji wa Joto, Shinikizo na Unyevu

Msimbo wa Ufuatiliaji wa Joto, Shinikizo na Unyevu
Msimbo wa Ufuatiliaji wa Joto, Shinikizo na Unyevu
Msimbo wa Ufuatiliaji wa Joto, Shinikizo na Unyevu
Msimbo wa Ufuatiliaji wa Joto, Shinikizo na Unyevu

Toleo safi la nambari ambayo tutatumia kuendesha hii inapatikana HAPA.

Wakati tunatumia moduli ya sensorer na Arduino, tunajumuisha application.h na maktaba ya spark_wiring_i2c.h. "application.h" na maktaba ya spark_wiring_i2c.h ina kazi ambazo zinawezesha mawasiliano ya i2c kati ya sensa na chembe.

Bonyeza HAPA kufungua ukurasa wa wavuti kwa ufuatiliaji wa kifaa

Pakia nambari kwenye ubao wako na inapaswa kuanza kufanya kazi! Takwimu zote zinaweza kupatikana kwenye ukurasa wa wavuti kama inavyoonekana kwenye picha.

Nambari imetolewa hapa chini:

// Imesambazwa na leseni ya hiari.// Itumie njia yoyote unayotaka, faida au bure, mradi inalingana na leseni za kazi zake zinazohusiana. // BME280 // Nambari hii imeundwa kufanya kazi na BME280_I2CS I2C Mini Module inayopatikana kutoka ControlEverything.com. # pamoja na # pamoja na // BME280 Anwani ya I2C ni 0x76 (108) #fafanua Addr 0x76 mara mbili cTemp = 0, fTemp = 0, shinikizo = 0, unyevu = 0; usanidi batili () {// Weka chembe inayobadilika. inayobadilika ("i2cdevice", "BME280"); kifungu kinachoweza kubadilika ("cTemp", cTemp); Chembe. Hubadilika ("fTemp", fTemp); Chembe inaweza kubadilika ("shinikizo", shinikizo); Chembe inaweza kubadilika ("unyevu", unyevu); // Anzisha mawasiliano ya I2C kama MASTER Wire. Kuanza (); // Anzisha mawasiliano ya serial, weka kiwango cha baud = 9600 Serial.begin (9600); kuchelewesha (300); } kitanzi batili () {unsigned int b1 [24]; data isiyoingia [8]; int dig_H1 = 0; kwa (int i = 0; i <24; i ++) {// Anzisha waya wa Uhamisho wa I2C. anza Uwasilishaji (Addr); // Chagua rejista ya data Wire.write ((136 + i)); // Acha waya wa usambazaji wa I2C.endUsambazaji (); // Omba 1 byte ya data Wire.requestFrom (Addr, 1); // Soma ka 24 za data ikiwa (Wire.available () == 1) {b1 = Wire.read (); }} // Badilisha data // coefficents ya muda 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); // coefficents ya shinikizo 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); kwa (int i = 0; i <7; i ++) {// Anzisha waya wa Uhamisho wa I2C. anza Uwasilishaji (Addr); // Chagua rejista ya data Wire.write ((225 + i)); // Acha waya wa usambazaji wa I2C.endUsambazaji (); // Omba 1 byte ya data Wire.requestFrom (Addr, 1); // Soma kaiti 7 za data ikiwa (Wire.available () == 1) {b1 = Wire.read (); }} // Badilisha data // coefficents ya unyevu 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]; // Anzisha waya wa usambazaji wa I2C. Anza Uwasilishaji (Addr); // Chagua rejista ya data Wire.write (161); // Acha waya wa usambazaji wa I2C.endUsambazaji (); // Omba 1 byte ya data Wire.requestFrom (Addr, 1); // Soma kaiti 1 ya data ikiwa (Wire.available () == 1) {dig_H1 = Wire.read (); } // // Anzisha waya wa usambazaji wa I2C. Anza Uwasilishaji (Addr); // Chagua daftari la unyevu la kudhibiti Wire.write (0xF2); // Unyevu juu ya kiwango cha sampuli = 1 Waya. Andika (0x01); // Acha waya wa usambazaji wa I2C.endUsambazaji (); // Anzisha waya wa usambazaji wa I2C. Anza Uwasilishaji (Addr); // Chagua rejista ya kipimo cha kudhibiti Wire.write (0xF4); // Hali ya kawaida, temp na shinikizo juu ya kiwango cha sampuli = 1 Waya. Andika (0x27); // Acha waya wa usambazaji wa I2C.endUsambazaji (); // Anzisha waya wa usambazaji wa I2C. Anza Uwasilishaji (Addr); // Chagua sajili ya usanidi Wire.write (0xF5); // Wakati wa Kusimama = 1000ms Waya. Andika (0xA0); // Acha waya wa usambazaji wa I2C.endUsambazaji (); kwa (int i = 0; i <8; i ++) {// Anzisha I2C Transmission Wire. anzaUwasilishaji (Addr); // Chagua rejista ya data Wire.write ((247 + i)); // Acha waya wa usambazaji wa I2C.endUsambazaji (); // Omba 1 byte ya data Wire.requestFrom (Addr, 1); // Soma kaiti 8 za data ikiwa (Wire.available () == 1) {data = Wire.read (); }} // Badilisha data ya shinikizo na joto kuwa 19-bits ndefu adc_p = (((ndefu) (data [0] & 0xFF) * 65536) + ((ndefu) (data [1] & 0xFF) * 256) + (muda mrefu) (data [2] & 0xF0)) / 16; muda mrefu adc_t = (((mrefu) (data [3] & 0xFF) * 65536) + ((ndefu) (data [4] & 0xFF) * 256) + (ndefu) (data [5] & 0xF0)) / 16; // Badilisha data ya unyevu kwa muda mrefu adc_h = ((ndefu) (data [6] & 0xFF) * 256 + (ndefu) (data [7] & 0xFF)); // Mahesabu ya kukabiliana na joto mara mbili var1 = ((((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); var2 = mara mbili); mara mbili t_fine = (ndefu) (var1 + var2); mara mbili cTemp = (var1 + var2) / 5120.0; fTemp mara mbili = cTemp * 1.8 + 32; // Mahesabu ya kukabiliana na shinikizo var1 = ((mara mbili) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((mara mbili) dig_P6) / 32768.0; var2 = var2 + var1 * ((mara mbili) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((mara mbili) dig_P4) * 65536.0); var1 = (((mara mbili) dig_P3) * var1 * var1 / 524288.0 + ((mara mbili) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((mara mbili) dig_P1); mara mbili p = 1048576.0 - (mara mbili) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((mara mbili) dig_P9) * p * p / 2147483648.0; var2 = p * ((mara mbili) dig_P8) / 32768.0; shinikizo mara mbili = (p + (var1 + var2 + ((mara mbili) dig_P7)) / 16.0) / 100; // Mahesabu ya kukabiliana na unyevu mara mbili var_H = ((((mara mbili) 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))); unyevu mara mbili = var_H * (1.0 - dig_H1 * var_H / 524288.0); ikiwa (unyevu> 100.0) {unyevu = 100.0; } kingine ikiwa (unyevu <0.0) {unyevu = 0.0; } // Pato la data kwa dashibodi Particle.publish ("Joto katika Celsius:", String (cTemp)); Kuchapisha chembe ("Joto katika Fahrenheit:", Kamba (fTemp)); Kuchapisha chembe ("Shinikizo:", Kamba (shinikizo)); Chembe.chapisha ("Unyevu wa Jamaa:", Kamba (unyevu)); kuchelewesha (1000); }

Hatua ya 5: Maombi:

Maombi
Maombi

Joto la BME280, shinikizo na sensorer ya unyevu ina matumizi anuwai ya viwandani kama ufuatiliaji wa joto, kinga ya mafuta ya pembeni, ufuatiliaji wa shinikizo kwenye tasnia. Tumetumia pia sensor hii katika matumizi ya kituo cha hali ya hewa na pia mfumo wa ufuatiliaji wa chafu.

Programu zingine zinaweza kushawishi:

  1. Uelewa wa muktadha, k.m. kugundua ngozi, kugundua mabadiliko ya chumba.
  2. Ufuatiliaji wa ustawi / ustawi - Onyo kuhusu ukame au joto kali.
  3. Upimaji wa kiasi na mtiririko wa hewa.
  4. Udhibiti wa mitambo ya nyumbani.
  5. Dhibiti inapokanzwa, uingizaji hewa, kiyoyozi (HVAC).
  6. Mtandao wa vitu.
  7. Uboreshaji wa GPS (k.m uboreshaji wa kurekebisha-wakati-wa-kwanza, hesabu iliyokufa, kugundua mteremko).
  8. Urambazaji wa ndani (mabadiliko ya kugundua sakafu, kugundua lifti).
  9. Urambazaji wa nje, matumizi ya burudani na michezo.
  10. Utabiri wa hali ya hewa.
  11. Dalili ya kasi ya wima (kasi ya kupanda / kuzama)..

Hatua ya 6: Mafunzo ya Video

Tazama mafunzo yetu ya video kupitia hatua zote katika kuingiliana na kukamilisha mradi.

Endelea kufuatilia uingiliano wa sensa nyingine na blogi inayofanya kazi.

Ilipendekeza: