Talaan ng mga Nilalaman:

Humidity, Pressure at Temperature Computation Paggamit ng BME280 at Photon Interfacing .: 6 Mga Hakbang
Humidity, Pressure at Temperature Computation Paggamit ng BME280 at Photon Interfacing .: 6 Mga Hakbang

Video: Humidity, Pressure at Temperature Computation Paggamit ng BME280 at Photon Interfacing .: 6 Mga Hakbang

Video: Humidity, Pressure at Temperature Computation Paggamit ng BME280 at Photon Interfacing .: 6 Mga Hakbang
Video: Mas Pinahihirapan Lang Ang Makina Dahil Sa Maling Setting Ng Aircon | Temp Control And Blend Door 2024, Hulyo
Anonim
Humidity, Pressure at Temperature Computation Gamit ang BME280 at Photon Interfacing
Humidity, Pressure at Temperature Computation Gamit ang BME280 at Photon Interfacing

Natagpuan namin ang iba't ibang mga proyekto na nangangailangan ng pagsubaybay sa temperatura, presyon at kahalumigmigan. Sa gayon napagtanto natin na ang mga parameter na ito ay talagang may mahalagang papel sa pagkakaroon ng isang pagtatantya ng kahusayan ng pagtatrabaho ng isang system sa iba't ibang mga kondisyon sa atmospera. Parehong sa pang-industriya na antas at personal na mga sistema ng isang pinakamabuting kalagayan temperatura, kahalumigmigan at antas ng presyon ng barometric ay kinakailangan para sa sapat na pagganap ng system.

Ito ang dahilan kung bakit nagbibigay kami ng isang kumpletong tutorial sa sensor na ito, sa tutorial na ito ipaliwanag namin ang pagtatrabaho ng BME280 halumigmig, presyon at sensor ng temperatura na may maliit na poton.

Hakbang 1: Pagtuklas sa BME280

Pagtuklas sa BME280
Pagtuklas sa BME280

Ang sektor ng elektronikong ay tumindi ang kanilang laro sa sensor ng BME280, isang sensor ng kapaligiran na may temperatura, presyon ng barometric at halumigmig! Ang sensor na ito ay mahusay para sa lahat ng uri ng pag-sensing ng panahon / pangkapaligiran at maaari pa ring magamit sa I2C.

Ang eksaktong sensor sensor na BME280 na ito ay ang pinakamahusay na solusyon sa sensing para sa pagsukat ng halumigmig na may katumpakan na ± 3%, presyon ng barometric na may ± 1 hPa ganap na katumpakan, at temperatura na may katumpakan na ± 1.0 ° C. Dahil ang presyon ay nagbabago sa taas, at ang mga sukat ng presyon ay napakahusay, maaari mo ring gamitin ito bilang isang altimeter na may ± 1 metro o mas mahusay na kawastuhan! Ang sensor ng temperatura ay na-optimize para sa pinakamababang ingay at pinakamataas na resolusyon at ginagamit para sa temperatura na kabayaran ng ang sensor ng presyon at maaari ding magamit para sa pagtantya ng temperatura sa paligid. Ang mga pagsukat sa BME280 ay maaaring isagawa ng gumagamit o gumanap sa mga regular na agwat.

Datasheet: Mag-click upang i-preview o i-download ang datasheet ng BME280 sensor.

Hakbang 2: Listahan ng Kinakailangan ng Hardware

Listahan ng Kinakailangan sa Hardware
Listahan ng Kinakailangan sa Hardware

Ginamit namin ang buong Mga Bahagi ng Tindahan ng Dcube sapagkat madaling gamitin, at isang bagay tungkol sa lahat ng bagay na umaangkop nang maayos sa isang centimeter grid na talagang papunta sa amin. Maaari mong gamitin ang nais mo, ngunit ang diagram ng mga kable ay ipagpapalagay na ginagamit mo ang mga bahaging ito.

  • BME280 Sensor I²C Mini Module
  • I²C Shield para sa Particle Photon
  • Particle Photon
  • I²C Cable
  • Power adapter

Hakbang 3: Interfacing

Interfacing
Interfacing

Karaniwang ipinapaliwanag ng seksyon ng interfacing ang mga koneksyon sa mga kable na kinakailangan sa pagitan ng sensor at ng particle photon. Ang pagtiyak sa tamang mga koneksyon ay ang pangunahing pangangailangan habang nagtatrabaho sa anumang system para sa nais na output. Kaya, ang mga kinakailangang koneksyon ay ang mga sumusunod:

Gagana ang BME280 sa paglipas ng I2C. Narito ang halimbawa ng diagram ng mga kable, na nagpapakita kung paano i-wire ang bawat interface ng sensor. Sa labas ng kahon, naka-configure ang board para sa isang interface ng I2C, dahil inirerekumenda namin na gamitin ang interfacing na ito kung hindi ka agnostiko. Ang kailangan mo lang ay apat na wires! Apat na koneksyon lamang ang kinakailangan ng Vcc, Gnd, SCL at SDA pin at ang mga ito ay konektado sa tulong ng I2C cable. Ang mga koneksyon na ito ay ipinakita sa mga larawan sa itaas.

Hakbang 4: Code ng Pagsubaybay sa Temperatura, Presyon at Humidity

Temperatura, Presyon at Humidity Monitoring Code
Temperatura, Presyon at Humidity Monitoring Code
Temperatura, presyon at Humidity Monitoring Code
Temperatura, presyon at Humidity Monitoring Code

Ang malinis na bersyon ng code na gagamitin namin upang patakbuhin ito ay magagamit DITO.

Habang ginagamit ang module ng sensor sa Arduino, nagsasama kami ng application.h at spark_wiring_i2c.h library. Ang "application.h" at spark_wiring_i2c.h library ay naglalaman ng mga pagpapaandar na nagpapadali sa komunikasyon ng i2c sa pagitan ng sensor at ng maliit na butil.

Mag-click DITO upang buksan ang webpage para sa pagsubaybay sa aparato

I-upload ang code sa iyong board at dapat itong magsimulang gumana! Ang lahat ng data ay maaaring makuha sa webpage tulad ng ipinakita sa larawan.

Ang code ay ibinigay sa ibaba:

// Ipinamamahagi ng isang lisensyang malaya ang kalooban. // BME280 // Ang code na ito ay dinisenyo upang gumana sa BME280_I2CS I2C Mini Module na magagamit mula sa ControlEverything.com. #include #include // BME280 I2C address ay 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, pressure = 0, halumigmig = 0; void setup () {// Set variable Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Particle. Iba-iba ("pressure", pressure); Particle. Iba-iba ("halumigmig", halumigmig); // Initialise I2C na komunikasyon bilang MASTER Wire.begin (); // Initialise Serial komunikasyon, itakda ang baud rate = 9600 Serial.begin (9600); pagkaantala (300); } void loop () {unsigned int b1 [24]; unsigned int data [8]; int dig_H1 = 0; para sa (int i = 0; i <24; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Select data register Wire.write ((136 + i)); // Stop I2C Transmission Wire.endTransmission (); // Humiling ng 1 byte ng data Wire.requestFrom (Addr, 1); // Basahin ang 24 bytes ng data kung (Wire.available () == 1) {b1 = Wire.read (); }} // I-convert ang data // temp coefficents 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); // pressure coefficents 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); para sa (int i = 0; i <7; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Select data register Wire.write ((225 + i)); // Stop I2C Transmission Wire.endTransmission (); // Humiling ng 1 byte ng data Wire.requestFrom (Addr, 1); // Basahin ang 7 bytes ng data kung (Wire.available () == 1) {b1 = Wire.read (); }} // I-convert ang data // coefficents ng halumigmig 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); // Select data register Wire.write (161); // Stop I2C Transmission Wire.endTransmission (); // Humiling ng 1 byte ng data Wire.requestFrom (Addr, 1); // Basahin ang 1 byte ng data kung (Wire.available () == 1) {dig_H1 = Wire.read (); } // Start I2C Transmission Wire.beginTransmission (Addr); // Piliin ang control register ng halumigmig Wire.write (0xF2); // Humidity over sampling rate = 1 Wire.write (0x01); // Stop I2C Transmission Wire.endTransmission (); // Start I2C Transmission Wire.beginTransmission (Addr); // Piliin ang rehistro sa pagsukat ng pagsukat ng control Wire.write (0xF4); // Normal mode, temp and pressure over sampling rate = 1 Wire.write (0x27); // Stop I2C Transmission Wire.endTransmission (); // Start I2C Transmission Wire.beginTransmission (Addr); // Piliin ang config register Wire.write (0xF5); // Stand_by time = 1000ms Wire.write (0xA0); // Stop I2C Transmission Wire.endTransmission (); para sa (int i = 0; i <8; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Select data register Wire.write ((247 + i)); // Stop I2C Transmission Wire.endTransmission (); // Humiling ng 1 byte ng data Wire.requestFrom (Addr, 1); // Basahin ang 8 bytes ng data kung (Wire.available () == 1) {data = Wire.read (); }} // I-convert ang data ng presyon at temperatura sa 19-bit na haba adc_p = ((((haba) (data [0] & 0xFF) * 65536) + ((haba) (data [1] & 0xFF) * 256) + (mahaba) (data [2] & 0xF0)) / 16; mahabang adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (haba) (data [5] & 0xF0)) / 16; // I-convert ang data ng kahalumigmigan mahabang adc_h = ((haba) (data [6] & 0xFF) * 256 + (haba) (data [7] & 0xFF)); // Temperature offset calculations double var1 = (((double) adc_t) / 16384.0 - ((double) dig_T1) / 1024.0) * ((double) dig_T2); dobleng var2 = (((((doble) adc_t) / 131072.0 - ((doble) dig_T1) / 8192.0) * (((doble) adc_t) /131072.0 - ((doble) dig_T1) /8192.0)) * ((doble) dig_T3); dobleng t_fine = (haba) (var1 + var2); doble cTemp = (var1 + var2) / 5120.0; doble fTemp = cTemp * 1.8 + 32; // Mga kalkulasyon ng offset ng presyon var1 = ((doble) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((doble) dig_P6) / 32768.0; var2 = var2 + var1 * ((doble) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((doble) dig_P4) * 65536.0); var1 = ((((doble) dig_P3) * var1 * var1 / 524288.0 + ((doble) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((doble) dig_P1); doble p = 1048576.0 - (doble) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = (((doble) dig_P9) * p * p / 2147483648.0; var2 = p * ((doble) dig_P8) / 32768.0; dobleng presyon = (p + (var1 + var2 + ((doble) dig_P7)) / 16.0) / 100; // Humidity offset calculations dobleng var_H = ((((doble) 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))); dobleng kahalumigmigan = var_H * (1.0 - dig_H1 * var_H / 524288.0); kung (halumigmig> 100.0) {halumigmig = 100.0; } iba pa kung (halumigmig <0.0) {halumigmig = 0.0; } // Data ng output sa dashboard Particle.publish ("Temperatura sa Celsius:", String (cTemp)); Particle.publish ("Temperatura sa Fahrenheit:", String (fTemp)); Particle.publish ("Pressure:", String (pressure)); Particle.publish ("Kamag-anak na Humidity:", String (halumigmig)); pagkaantala (1000); }

Hakbang 5: Mga Aplikasyon:

Mga Aplikasyon
Mga Aplikasyon

Ang temperatura ng BME280, presyon at kamag-anak na kahalumigmigan sensor ay may iba't ibang mga pang-industriya na application tulad ng pagsubaybay sa temperatura, proteksyon ng thermal paligid ng computer, pagsubaybay sa presyon sa industriya. Ginamit din namin ang sensor na ito sa mga application ng istasyon ng panahon pati na rin system ng pagsubaybay sa greenhouse.

Ang iba pang mga application ay maaaring makapasok:

  1. Kamalayan sa konteksto, hal. pagtuklas ng balat, pagtuklas ng pagbabago ng silid.
  2. Fitness monitoring / well-being - Babala tungkol sa pagkatuyo o mataas na temperatura.
  3. Pagsukat ng dami at daloy ng hangin.
  4. Pagkontrol sa automation ng bahay.
  5. Kontrolin ang pagpainit, bentilasyon, aircon (HVAC).
  6. Internet ng mga bagay.
  7. Pagpapahusay ng GPS (hal. Pagpapabuti ng time-to-first-fix, dead reckoning, slope detection).
  8. Panloob na nabigasyon (pagbabago ng pagtuklas ng sahig, pagtuklas ng elevator).
  9. Mga aplikasyon sa labas ng nabigasyon, paglilibang at palakasan.
  10. Ulat panahon.
  11. Indikasyon ng bilis ng tulin (bilis ng pagtaas / paglubog)..

Hakbang 6: Video Tutorial

Panoorin ang aming tutorial sa video upang dumaan sa lahat ng mga hakbang sa pag-interfaces at pagkumpleto ng proyekto.

Abangan ang pakikipag-ugnay ng ibang sensor at pagtatrabaho ng blog.

Inirerekumendang: