Isi kandungan:

Pengiraan Kelembapan, Tekanan dan Suhu Menggunakan BME280 dan Antarmuka Foton .: 6 Langkah
Pengiraan Kelembapan, Tekanan dan Suhu Menggunakan BME280 dan Antarmuka Foton .: 6 Langkah

Video: Pengiraan Kelembapan, Tekanan dan Suhu Menggunakan BME280 dan Antarmuka Foton .: 6 Langkah

Video: Pengiraan Kelembapan, Tekanan dan Suhu Menggunakan BME280 dan Antarmuka Foton .: 6 Langkah
Video: Штукатурка стен - самое полное видео! Переделка хрущевки от А до Я. #5 2024, Julai
Anonim
Pengiraan Kelembapan, Tekanan dan Suhu Menggunakan BME280 dan Antarmuka Foton
Pengiraan Kelembapan, Tekanan dan Suhu Menggunakan BME280 dan Antarmuka Foton

Kami menemui pelbagai projek yang memerlukan pemantauan suhu, tekanan dan kelembapan. Oleh itu, kami menyedari bahawa parameter ini sebenarnya memainkan peranan penting dalam membuat anggaran kecekapan kerja sistem pada keadaan atmosfera yang berbeza. Baik di peringkat industri dan sistem peribadi, suhu, kelembapan dan tekanan barometrik optimum diperlukan untuk prestasi sistem yang mencukupi.

Inilah sebabnya mengapa kami memberikan tutorial lengkap mengenai sensor ini, dalam tutorial ini kami akan menerangkan cara kerja sensor kelembapan, tekanan dan suhu BME280 dengan foton zarah.

Langkah 1: Penerokaan BME280

Penerokaan BME280
Penerokaan BME280

Sektor elektronik telah meningkatkan permainan mereka dengan sensor BME280, sensor persekitaran dengan suhu, tekanan barometrik dan kelembapan! Sensor ini sangat bagus untuk semua jenis cuaca / penderiaan persekitaran dan bahkan boleh digunakan di I2C.

Sensor ketepatan ini BME280 adalah penyelesaian penginderaan terbaik untuk mengukur kelembapan dengan ketepatan ± 3%, tekanan barometrik dengan ketepatan mutlak ± 1 hPa, dan suhu dengan ketepatan ± 1.0 ° C. Kerana tekanan berubah dengan ketinggian, dan pengukuran tekanan sangat baik, anda juga dapat menggunakannya sebagai altimeter dengan ± 1 meter atau ketepatan yang lebih baik! Sensor suhu telah dioptimumkan untuk kebisingan terendah dan resolusi tertinggi dan digunakan untuk pampasan suhu sensor tekanan dan juga dapat digunakan untuk perkiraan suhu persekitaran. Pengukuran dengan BME280 dapat dilakukan oleh pengguna atau dilakukan secara berkala.

Lembar Data: Klik untuk melihat atau memuat turun lembaran data sensor BME280.

Langkah 2: Senarai Keperluan Perkakasan

Senarai Keperluan Perkakasan
Senarai Keperluan Perkakasan

Kami menggunakan Bahagian Dcube Store sepenuhnya kerana ia mudah digunakan, dan sesuatu tentang semua yang sesuai dengan grid sentimeter benar-benar membuat kita berjalan. Anda boleh menggunakan apa sahaja yang anda mahukan, tetapi rajah pendawaian akan menganggap anda menggunakan bahagian-bahagian ini.

  • Modul Mini Sensor I2C BME280
  • Perisai I²C untuk Foton Zarah
  • Foton Zarah
  • Kabel I²C
  • Penyesuai kuasa

Langkah 3: Memintas

Antara muka
Antara muka

Bahagian antara muka pada dasarnya menerangkan sambungan pendawaian yang diperlukan antara sensor dan foton zarah. Memastikan sambungan yang betul adalah keperluan asas semasa mengerjakan sistem apa pun untuk output yang diinginkan. Jadi, sambungan yang diperlukan adalah seperti berikut:

BME280 akan berfungsi di atas I2C. Berikut adalah contoh rajah pendawaian, yang menunjukkan cara memasang setiap antara muka sensor. Di luar kotak, papan dikonfigurasi untuk antara muka I2C, oleh itu kami mengesyorkan untuk menggunakan antara muka ini jika anda tidak agnostik. Yang anda perlukan hanyalah empat wayar! Hanya diperlukan empat sambungan pin Vcc, Gnd, SCL dan SDA dan ini disambungkan dengan bantuan kabel I2C. Sambungan ini ditunjukkan dalam gambar di atas.

Langkah 4: Kod Pemantauan Suhu, Tekanan dan Kelembapan

Kod Pemantauan Suhu, Tekanan dan Kelembapan
Kod Pemantauan Suhu, Tekanan dan Kelembapan
Kod Pemantauan Suhu, Tekanan dan Kelembapan
Kod Pemantauan Suhu, Tekanan dan Kelembapan

Versi bersih dari kod yang akan kami gunakan untuk menjalankannya tersedia di SINI.

Semasa menggunakan modul sensor dengan Arduino, kami menyertakan library application.h dan spark_wiring_i2c.h. Perpustakaan "application.h" dan spark_wiring_i2c.h mengandungi fungsi yang memudahkan komunikasi i2c antara sensor dan zarah.

Klik DI SINI untuk membuka laman web untuk pemantauan peranti

Muat naik kod ke papan anda dan ia mesti mula berfungsi! Semua data dapat diperoleh di laman web seperti yang ditunjukkan dalam gambar.

Kod disediakan di bawah:

// Diagihkan dengan lesen kehendak bebas.// Gunakannya dengan cara yang anda mahukan, untung atau percuma, dengan syarat ia sesuai dengan lesen karya yang berkaitan. // BME280 // Kod ini direka untuk berfungsi dengan Modul Mini BME280_I2CS I2C yang tersedia dari ControlEverything.com. #include #include // Alamat BME280 I2C adalah 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, pressure = 0, kelembapan = 0; sia-sia persediaan () {// Tetapkan pemboleh ubah Particle.variable ("i2cdevice", "BME280"); artikel.berubah ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Particle.variable ("tekanan", tekanan); Particle.variable ("kelembapan", kelembapan); // Memulakan komunikasi I2C sebagai MASTER Wire.begin (); // Permulaan komunikasi Serial, tetapkan kadar baud = 9600 Serial.begin (9600); kelewatan (300); } gelung kosong () {int tidak bertanda b1 [24]; data int yang tidak ditandatangani [8]; int dig_H1 = 0; untuk (int i = 0; i <24; i ++) {// Mulakan Wire Transmission I2C.beginTransmission (Addr); // Pilih daftar data Wire.write ((136 + i)); // Hentikan I2C Transmission Wire.endTransmission (); // Minta 1 bait data Wire.requestFrom (Addr, 1); // Baca 24 bait data jika (Wire.available () == 1) {b1 = Wire.read (); }} // Tukar data // pekali 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); // pekali tekanan 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); untuk (int i = 0; i <7; i ++) {// Mula I2C Transmission Wire.beginTransmission (Addr); // Pilih daftar data Wire.write ((225 + i)); // Hentikan I2C Transmission Wire.endTransmission (); // Minta 1 bait data Wire.requestFrom (Addr, 1); // Baca 7 bait data jika (Wire.available () == 1) {b1 = Wire.read (); }} // Tukar data // pekali kelembapan 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]; // Mula I2C Transmission Wire.beginTransmission (Addr); // Pilih daftar data Wire.write (161); // Hentikan I2C Transmission Wire.endTransmission (); // Minta 1 bait data Wire.requestFrom (Addr, 1); // Baca 1 bait data jika (Wire.available () == 1) {dig_H1 = Wire.read (); } // Mulakan Wire Transmission I2C.beginTransmission (Addr); // Pilih daftar kelembapan kawalan Wire.write (0xF2); // Kelembapan melebihi kadar pensampelan = 1 Wire.write (0x01); // Hentikan I2C Transmission Wire.endTransmission (); // Mula I2C Transmission Wire.beginTransmission (Addr); // Pilih daftar pengukuran kawalan Wire.write (0xF4); // Mod, suhu dan tekanan normal atas kadar persampelan = 1 Wire.write (0x27); // Hentikan I2C Transmission Wire.endTransmission (); // Mula I2C Transmission Wire.beginTransmission (Addr); // Pilih konfigurasi register Wire.write (0xF5); // Masa standby = 1000ms Wire.write (0xA0); // Hentikan I2C Transmission Wire.endTransmission (); untuk (int i = 0; i <8; i ++) {// Mulakan Wire Transmission I2C.beginTransmission (Addr); // Pilih daftar data Wire.write ((247 + i)); // Hentikan I2C Transmission Wire.endTransmission (); // Minta 1 bait data Wire.requestFrom (Addr, 1); // Baca 8 bait data jika (Wire.available () == 1) {data = Wire.read (); }} // Tukar data tekanan dan suhu menjadi 19-bit panjang adc_p = (((panjang) (data [0] & 0xFF) * 65536) + ((panjang) (data [1] & 0xFF) * 256) + (panjang) (data [2] & 0xF0)) / 16; long adc_t = (((panjang) (data [3] & 0xFF) * 65536) + ((panjang) (data [4] & 0xFF) * 256) + (panjang) (data [5] & 0xF0)) / 16; // Tukar data kelembapan panjang adc_h = ((panjang) (data [6] & 0xFF) * 256 + (panjang) (data [7] & 0xFF)); // Pengiraan offset suhu 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); double t_fine = (panjang) (var1 + var2); double cTemp = (var1 + var2) / 5120.0; double fTemp = cTemp * 1.8 + 32; // Pengiraan offset tekanan var1 = ((double) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((double) dig_P6) / 32768.0; var2 = var2 + var1 * ((double) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((dua kali ganda) dig_P4) * 65536.0); var1 = (((double) dig_P3) * var1 * var1 / 524288.0 + ((double) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((dua kali ganda) dig_P1); berganda p = 1048576.0 - (dua kali ganda) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((dua kali ganda) dig_P9) * p * p / 2147483648.0; var2 = p * ((dua kali ganda) dig_P8) / 32768.0; tekanan berganda = (p + (var1 + var2 + ((double) dig_P7)) / 16.0) / 100; // Pengiraan offset kelembapan 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))); kelembapan berganda = var_H * (1.0 - dig_H1 * var_H / 524288.0); jika (kelembapan> 100.0) {kelembapan = 100.0; } lain jika (kelembapan <0.0) {kelembapan = 0.0; } // Keluarkan data ke dashboard Particle.publish ("Temperature in Celsius:", String (cTemp)); Particle.publish ("Suhu di Fahrenheit:", String (fTemp)); Particle.publish ("Tekanan:", Rentetan (tekanan)); Particle.publish ("Kelembapan Relatif:", Rentetan (kelembapan)); kelewatan (1000); }

Langkah 5: Aplikasi:

Permohonan
Permohonan

Sensor suhu, tekanan dan kelembapan relatif BME280 mempunyai berbagai aplikasi industri seperti pemantauan suhu, perlindungan termal periferal komputer, pemantauan tekanan di industri. Kami juga menggunakan sensor ini ke aplikasi stesen cuaca dan juga sistem pemantauan rumah hijau.

Aplikasi lain boleh merangkumi:

  1. Kesedaran konteks, mis. pengesanan kulit, pengesanan perubahan bilik.
  2. Pemantauan / kesejahteraan kecergasan - Amaran mengenai kekeringan atau suhu tinggi.
  3. Pengukuran isipadu dan aliran udara.
  4. Kawalan automasi rumah.
  5. Kawal pemanasan, pengudaraan, penyaman udara (HVAC).
  6. Internet perkara.
  7. Peningkatan GPS (mis. Penambahbaikan time-to-first-fix, perhitungan mati, pengesanan cerun).
  8. Navigasi dalaman (perubahan pengesanan lantai, pengesanan lif).
  9. Aplikasi navigasi, rekreasi dan sukan luar.
  10. Ramalan cuaca.
  11. Petunjuk halaju menegak (kelajuan naik / tenggelam)..

Langkah 6: Tutorial Video

Tonton tutorial video kami untuk menjalani semua langkah dalam menghubungkan dan menyelesaikan projek.

Nantikan blog antara muka dan kerja sensor lain.

Disyorkan: