Daftar Isi:

Perhitungan Kelembaban, Tekanan dan Suhu Menggunakan BME280 dan Antarmuka Foton.: 6 Langkah
Perhitungan Kelembaban, Tekanan dan Suhu Menggunakan BME280 dan Antarmuka Foton.: 6 Langkah

Video: Perhitungan Kelembaban, Tekanan dan Suhu Menggunakan BME280 dan Antarmuka Foton.: 6 Langkah

Video: Perhitungan Kelembaban, Tekanan dan Suhu Menggunakan BME280 dan Antarmuka Foton.: 6 Langkah
Video: Seri Arduino – 048: Modul Sensor Suhu, Kelembaban, Tekanan dan Gas BME680 2024, Juli
Anonim
Perhitungan Kelembaban, Tekanan dan Suhu Menggunakan BME280 dan Photon Interfacing
Perhitungan Kelembaban, Tekanan dan Suhu Menggunakan BME280 dan Photon Interfacing

Kami menemukan berbagai proyek yang membutuhkan pemantauan suhu, tekanan dan kelembaban. Dengan demikian kami menyadari bahwa parameter ini sebenarnya memainkan peran penting dalam memperkirakan efisiensi kerja suatu sistem pada kondisi atmosfer yang berbeda. Baik di tingkat industri maupun sistem pribadi, suhu, kelembaban, dan tingkat tekanan udara yang optimal diperlukan untuk kinerja sistem yang memadai.

Untuk itulah kami memberikan tutorial lengkap tentang sensor ini, dalam tutorial ini kami akan menjelaskan cara kerja sensor kelembaban, tekanan dan suhu BME280 dengan partikel foton.

Langkah 1: Eksplorasi BME280

Eksplorasi BME280
Eksplorasi BME280

Sektor elektronik telah meningkatkan permainan mereka dengan sensor BME280, sensor lingkungan dengan suhu, tekanan udara, dan kelembapan! Sensor ini sangat bagus untuk semua jenis penginderaan cuaca/lingkungan dan bahkan dapat digunakan di I2C.

Sensor presisi BME280 ini adalah solusi penginderaan terbaik untuk mengukur kelembaban dengan akurasi ±3%, tekanan barometrik dengan akurasi absolut ±1 hPa, dan suhu dengan akurasi ±1,0°C. Karena tekanan berubah dengan ketinggian, dan pengukuran tekanan sangat baik, Anda juga dapat menggunakannya sebagai altimeter dengan akurasi ±1 meter atau lebih baik! Sensor suhu telah dioptimalkan untuk kebisingan terendah dan resolusi tertinggi dan digunakan untuk kompensasi suhu sensor tekanan dan juga dapat digunakan untuk estimasi suhu lingkungan. Pengukuran dengan BME280 dapat dilakukan oleh pengguna atau dilakukan secara berkala.

Datasheet: Klik untuk melihat atau mengunduh datasheet sensor BME280.

Langkah 2: Daftar Kebutuhan Perangkat Keras

Daftar Kebutuhan Perangkat Keras
Daftar Kebutuhan Perangkat Keras

Kami menggunakan sepenuhnya Dcube Store Parts karena mudah digunakan, dan sesuatu tentang segala sesuatu yang cocok dengan baik pada kotak sentimeter benar-benar membuat kami maju. Anda dapat menggunakan apa pun yang Anda inginkan, tetapi diagram pengkabelan akan menganggap Anda menggunakan bagian-bagian ini.

  • Modul Mini I²C Sensor BME280
  • Perisai I²C untuk Foton Partikel
  • Foton Partikel
  • Kabel I²C
  • Adaptor daya

Langkah 3: Antarmuka

Antarmuka
Antarmuka

Bagian antarmuka pada dasarnya menjelaskan koneksi kabel yang diperlukan antara sensor dan foton partikel. Memastikan koneksi yang benar adalah kebutuhan dasar saat bekerja pada sistem apa pun untuk output yang diinginkan. Jadi, koneksi yang diperlukan adalah sebagai berikut:

BME280 akan bekerja melalui I2C. Berikut adalah contoh diagram pengkabelan, yang menunjukkan cara memasang setiap antarmuka sensor. Out-of-the-box, papan dikonfigurasi untuk antarmuka I2C, karena itu kami menyarankan untuk menggunakan antarmuka ini jika Anda agnostik. Yang Anda butuhkan hanyalah empat kabel! Hanya empat koneksi yang diperlukan pin Vcc, Gnd, SCL dan SDA dan ini terhubung dengan bantuan kabel I2C. Koneksi ini ditunjukkan pada gambar di atas.

Langkah 4: Kode Pemantauan Suhu, Tekanan, dan Kelembaban

Kode Pemantauan Suhu, Tekanan dan Kelembaban
Kode Pemantauan Suhu, Tekanan dan Kelembaban
Kode Pemantauan Suhu, Tekanan, dan Kelembaban
Kode Pemantauan Suhu, Tekanan, dan Kelembaban

Versi bersih dari kode yang akan kita gunakan untuk menjalankan ini tersedia DI SINI.

Saat menggunakan modul sensor dengan Arduino, kami menyertakan library application.h dan spark_wiring_i2c.h. Pustaka "application.h" dan spark_wiring_i2c.h berisi fungsi-fungsi yang memfasilitasi komunikasi i2c antara sensor dan partikel.

Klik DI SINI untuk membuka halaman web untuk pemantauan perangkat

Unggah kode ke papan Anda dan itu akan mulai berfungsi! Semua data dapat diperoleh di halaman web seperti yang ditunjukkan pada gambar.

Kode disediakan di bawah ini:

// Didistribusikan dengan lisensi kehendak bebas.// Gunakan sesuka Anda, untung atau gratis, asalkan sesuai dengan lisensi karya terkait. // BME280 // Kode ini dirancang untuk bekerja dengan Modul Mini BME280_I2CS I2C yang tersedia dari ControlEverything.com. #include #include // Alamat I2C BME280 adalah 0x76(108) #define Addr 0x76 double cTemp = 0, fTemp = 0, pressure = 0, moisture = 0; void setup() { // Setel variabel Particle.variable("i2cdevice", "BME280"); article.variable("cTemp", cTemp); Particle.variable("fTemp", fTemp); Particle.variable("tekanan", tekanan); Particle.variable("kelembaban", kelembaban); // Inisialisasi komunikasi I2C sebagai MASTER Wire.begin(); // Inisialisasi komunikasi Serial, setel baud rate = 9600 Serial.begin(9600); penundaan (300); } void loop() { unsigned int b1[24]; data int yang tidak ditandatangani[8]; int gali_H1 = 0; for(int i = 0; i < 24; i++) { // Mulai Kabel Transmisi I2C.beginTransmission(Addr); // Pilih register data Wire.write((136+i)); // Hentikan Kabel Transmisi I2C.endTransmission(); // Meminta 1 byte data Wire.requestFrom(Addr, 1); // Membaca 24 byte data if(Wire.available() == 1) { b1 = Wire.read(); } } // Konversi data // koefisien suhu 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); // koefisien 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); for(int i = 0; i < 7; i++) { // Mulai Kabel Transmisi I2C.beginTransmission(Addr); // Pilih register data Wire.write((225+i)); // Hentikan Kabel Transmisi I2C.endTransmission(); // Meminta 1 byte data Wire.requestFrom(Addr, 1); // Baca 7 byte data if(Wire.available() == 1) { b1 = Wire.read(); } } // Mengonversi data // koefisien kelembaban 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]; // Mulai Kabel Transmisi I2C.beginTransmission(Addr); // Pilih register data Wire.write(161); // Hentikan Kabel Transmisi I2C.endTransmission(); // Meminta 1 byte data Wire.requestFrom(Addr, 1); // Baca 1 byte data if(Wire.available() == 1) { dig_H1 = Wire.read(); } // Mulai Kabel Transmisi I2C.beginTransmission(Addr); // Pilih kontrol kelembaban register Wire.write(0xF2); // Kelembaban di atas laju pengambilan sampel = 1 Wire.write(0x01); // Hentikan Kabel Transmisi I2C.endTransmission(); // Mulai Kabel Transmisi I2C.beginTransmission(Addr); // Pilih register pengukuran kontrol Wire.write(0xF4); // Mode normal, suhu dan tekanan pada laju pengambilan sampel = 1 Wire.write(0x27); // Hentikan Kabel Transmisi I2C.endTransmission(); // Mulai Kabel Transmisi I2C.beginTransmission(Addr); // Pilih config register Wire.write(0xF5); // Waktu siaga = 1000ms Wire.write(0xA0); // Hentikan Kabel Transmisi I2C.endTransmission(); for(int i = 0; i <8; i++) { // Mulai Kabel Transmisi I2C.beginTransmission(Addr); // Pilih register data Wire.write((247+i)); // Hentikan Kabel Transmisi I2C.endTransmission(); // Meminta 1 byte data Wire.requestFrom(Addr, 1); // Baca 8 byte data if(Wire.available() == 1) { data = Wire.read(); } } // Mengonversi data tekanan dan suhu ke panjang 19-bit adc_p = (((panjang)(data[0] & 0xFF) * 65536) + ((panjang)(data[1] & 0xFF) * 256) + (panjang)(data[2] & 0xF0)) / 16; panjang adc_t = (((panjang)(data[3] & 0xFF) * 65536) + ((panjang)(data[4] & 0xFF) * 256) + (panjang)(data[5] & 0xF0)) / 16; // Konversi data kelembaban long adc_h = ((panjang)(data[6] & 0xFF) * 256 + (panjang)(data[7] & 0xFF)); // Perhitungan 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); cTemp ganda = (var1 + var2) / 5120.0; fTemp ganda = cTemp * 1,8 + 32; // Perhitungan offset tekanan var1 = ((double)t_fine / 2.0) - 640000.0; var2 = var1 * var1 * ((ganda)dig_P6) / 32768.0; var2 = var2 + var1 * ((ganda)dig_P5) * 2.0; var2 = (var2 / 4.0) + (((ganda)dig_P4) * 65536.0); var1 = (((ganda) dig_P3) * var1 * var1 / 524288.0 + ((ganda) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((ganda)dig_P1); ganda p = 1048576.0 - (ganda)adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((ganda) dig_P9) * p * p / 2147483648.0; var2 = p * ((ganda) dig_P8) / 32768.0; tekanan ganda = (p + (var1 + var2 + ((double)dig_P7)) / 16.0) / 100; // Perhitungan offset kelembaban 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))); kelembaban ganda = var_H * (1.0 - dig_H1 * var_H / 524288.0); if(kelembaban> 100,0) { kelembaban = 100,0; } else if(kelembaban < 0.0) { kelembaban = 0.0; } // Keluarkan data ke dashboard Particle.publish("Suhu dalam Celcius: ", String(cTemp)); Particle.publish("Suhu dalam Fahrenheit: ", String(fTemp)); Particle.publish("Tekanan: ", String(tekanan)); Particle.publish("Kelembaban Relatif: ", String(kelembaban)); penundaan (1000); }

Langkah 5: Aplikasi:

Aplikasi
Aplikasi

Sensor suhu, tekanan dan kelembaban relatif BME280 memiliki berbagai aplikasi industri seperti pemantauan suhu, perlindungan termal periferal komputer, pemantauan tekanan di industri. Kami juga telah menggunakan sensor ini ke dalam aplikasi stasiun cuaca serta sistem pemantauan rumah kaca.

Aplikasi lain mungkin termasuk:

  1. Kesadaran konteks, mis. deteksi kulit, deteksi perubahan ruangan.
  2. Pemantauan kebugaran / kesejahteraan - Peringatan tentang kekeringan atau suhu tinggi.
  3. Pengukuran volume dan aliran udara.
  4. Kontrol otomatisasi rumah.
  5. Kontrol pemanas, ventilasi, AC (HVAC).
  6. Internet untuk segala.
  7. Penyempurnaan GPS (misalnya peningkatan waktu ke perbaikan pertama, perhitungan mati, deteksi kemiringan).
  8. Navigasi dalam ruangan (perubahan deteksi lantai, deteksi lift).
  9. Navigasi luar ruangan, aplikasi rekreasi dan olahraga.
  10. Prakiraan Cuaca.
  11. Indikasi kecepatan vertikal (kecepatan naik/turun)..

Langkah 6: Video Tutorial

Tonton tutorial video kami untuk melalui semua langkah dalam berinteraksi dan menyelesaikan proyek.

Menantikan untuk antarmuka sensor lain dan blog kerja.

Direkomendasikan: