İçindekiler:

BME280 ve Foton Arabirimi Kullanarak Nem, Basınç ve Sıcaklık Hesaplaması: 6 Adım
BME280 ve Foton Arabirimi Kullanarak Nem, Basınç ve Sıcaklık Hesaplaması: 6 Adım

Video: BME280 ve Foton Arabirimi Kullanarak Nem, Basınç ve Sıcaklık Hesaplaması: 6 Adım

Video: BME280 ve Foton Arabirimi Kullanarak Nem, Basınç ve Sıcaklık Hesaplaması: 6 Adım
Video: Новые продукты 29.07.2015 2024, Kasım
Anonim
BME280 ve Foton Arabirimi Kullanılarak Nem, Basınç ve Sıcaklık Hesaplaması
BME280 ve Foton Arabirimi Kullanılarak Nem, Basınç ve Sıcaklık Hesaplaması

Sıcaklık, basınç ve nem takibi gerektiren çeşitli projelerle karşılaşmaktayız. Böylece, bu parametrelerin farklı atmosferik koşullarda bir sistemin çalışma verimliliğine ilişkin bir tahminde bulunmada gerçekten hayati bir rol oynadığını anlıyoruz. Hem endüstriyel düzeyde hem de kişisel sistemlerde, sistemin yeterli performansı için optimum sıcaklık, nem ve barometrik basınç seviyesi gereklidir.

Bu nedenle bu sensör hakkında eksiksiz bir eğitim sunuyoruz, bu eğitimde BME280 nem, basınç ve sıcaklık sensörünün parçacık fotonlu çalışmasını açıklayacağız.

1. Adım: BME280 Keşfi

BME280 Keşfi
BME280 Keşfi

Elektronik sektörü, sıcaklık, barometrik basınç ve neme sahip bir çevre sensörü olan BME280 sensörü ile oyunlarını hızlandırdı! Bu sensör, her türlü hava/çevre algılaması için mükemmeldir ve I2C'de bile kullanılabilir.

Bu hassas sensör BME280, ±%3 doğrulukla nemi, ±1 hPa mutlak doğrulukla barometrik basıncı ve ±1,0°C doğrulukla sıcaklığı ölçmek için en iyi algılama çözümüdür. Basınç yükseklikle değiştiğinden ve basınç ölçümleri çok iyi olduğundan, ±1 metre veya daha yüksek doğrulukta bir altimetre olarak da kullanabilirsiniz!Sıcaklık sensörü en düşük gürültü ve en yüksek çözünürlük için optimize edilmiştir ve sıcaklık kompanzasyonu için kullanılır. basınç sensörü ve ortam sıcaklığının tahmini için de kullanılabilir. BME280 ile ölçümler kullanıcı tarafından veya düzenli aralıklarla gerçekleştirilebilir.

Veri sayfası: BME280 sensörünün veri sayfasını önizlemek veya indirmek için tıklayın.

2. Adım: Donanım Gereksinim Listesi

Donanım Gereksinim Listesi
Donanım Gereksinim Listesi

Kullanımı kolay oldukları için tamamen Dcube Mağaza Parçalarını kullandık ve her şeyin bir santimetre ızgaraya güzel bir şekilde uyması bizi gerçekten harekete geçiriyor. İstediğinizi kullanabilirsiniz, ancak bağlantı şeması bu parçaları kullandığınızı varsayacaktır.

  • BME280 Sensör I²C Mini Modül
  • Parçacık Fotonu için I²C Kalkanı
  • parçacık fotonu
  • I²C Kablosu
  • Güç adaptörü

3. Adım: Arayüzleme

arayüz
arayüz

Arabirim bölümü, temel olarak sensör ve parçacık fotonu arasında gerekli olan kablo bağlantılarını açıklar. İstenilen çıktı için herhangi bir sistem üzerinde çalışırken doğru bağlantıların sağlanması temel zorunluluktur. Yani, gerekli bağlantılar aşağıdaki gibidir:

BME280, I2C üzerinde çalışacaktır. Sensörün her bir arayüzünün nasıl bağlanacağını gösteren örnek kablo şeması buradadır. Kutudan çıktığı gibi, kart bir I2C arayüzü için yapılandırılmıştır, bu nedenle, aksi takdirde agnostik iseniz bu arayüzü kullanmanızı öneririz. Tek ihtiyacınız olan dört tel! Vcc, Gnd, SCL ve SDA pinlerinden sadece dört bağlantı gereklidir ve bunlar I2C kablosu yardımıyla bağlanır. Bu bağlantılar yukarıdaki resimlerde gösterilmiştir.

Adım 4: Sıcaklık, Basınç ve Nem İzleme Kodu

Sıcaklık, Basınç ve Nem İzleme Kodu
Sıcaklık, Basınç ve Nem İzleme Kodu
Sıcaklık, Basınç ve Nem İzleme Kodu
Sıcaklık, Basınç ve Nem İzleme Kodu

Bunu çalıştırmak için kullanacağımız kodun temiz sürümüne BURADAN ulaşabilirsiniz.

Arduino ile sensör modülünü kullanırken application.h ve spark_wiring_i2c.h kütüphanesini dahil ediyoruz. "application.h" ve spark_wiring_i2c.h kitaplığı, sensör ve parçacık arasındaki i2c iletişimini kolaylaştıran işlevleri içerir.

Cihaz izleme web sayfasını açmak için BURAYA tıklayın

Kodu panonuza yükleyin ve çalışmaya başlasın! Tüm veriler resimde gösterildiği gibi web sayfasından elde edilebilir.

Kod aşağıda verilmiştir:

// Bir özgür irade lisansıyla dağıtılır.// İlişkili eserlerinin lisanslarına uyması koşuluyla, istediğiniz şekilde, kârlı veya ücretsiz olarak kullanın. // BME280 // Bu kod, ControlEverything.com'da bulunan BME280_I2CS I2C Mini Modülü ile çalışmak üzere tasarlanmıştır. #include #include // BME280 I2C adresi 0x76(108) #define Addr 0x76 double cTemp = 0, fTemp = 0, basınç = 0, nem = 0; void setup() { // Particle.variable değişkenini ayarla("i2cdevice", "BME280"); makale.değişken("cTemp", cTemp); Particle.variable("fTemp", fTemp); Particle.variable("basınç", basınç); Particle.variable("nem",nem); // I2C iletişimini MASTER Wire.begin() olarak başlat; // Seri iletişimi başlat, baud hızını ayarla = 9600 Serial.begin(9600); gecikme(300); } void loop() { unsigned int b1[24]; imzasız int veri[8]; int dig_H1 = 0; for(int i = 0; i < 24; i++) { // I2C Transmission Wire.beginTransmission(Addr); // Veri kaydını seçin Wire.write((136+i)); // I2C İletimini Durdur Wire.endTransmission(); // 1 bayt veri iste Wire.requestFrom(Addr, 1); // 24 bayt veri oku if(Wire.available() == 1) { b1 = Wire.read(); } } // Verileri dönüştürün // geçici katsayılar 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); // basınç katsayıları 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++) { // I2C Transmission Wire.beginTransmission(Addr); // Veri kaydını seçin Wire.write((225+i)); // I2C İletimini Durdur Wire.endTransmission(); // 1 bayt veri iste Wire.requestFrom(Addr, 1); // 7 bayt veri oku if(Wire.available() == 1) { b1 = Wire.read(); } } // Verileri dönüştürün // nem katsayıları 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 Transmission Wire'ı başlatın.beginTransmission(Adr); // Veri kaydını seçin Wire.write(161); // I2C İletimini Durdur Wire.endTransmission(); // 1 bayt veri iste Wire.requestFrom(Addr, 1); // 1 bayt veri oku if(Wire.available() == 1) { dig_H1 = Wire.read(); } // I2C Transmission Wire.beginTransmission(Addr); // Kontrol nem kaydını seçin Wire.write(0xF2); // Örnekleme oranı üzerinden nem = 1 Wire.write(0x01); // I2C İletimini Durdur Wire.endTransmission(); // I2C Transmission Wire'ı başlatın.beginTransmission(Addr); // Kontrol ölçüm kaydını seçin Wire.write(0xF4); // Normal mod, sıcaklık ve örnekleme oranı üzerinden basınç = 1 Wire.write(0x27); // I2C İletimini Durdur Wire.endTransmission(); // I2C Transmission Wire'ı başlatın.beginTransmission(Adr); // Yapılandırma kaydı seçin Wire.write(0xF5); // Bekleme süresi = 1000ms Wire.write(0xA0); // I2C İletimini Durdur Wire.endTransmission(); for(int i = 0; i <8; i++) { // I2C Transmission Wire.beginTransmission(Addr); // Veri kaydını seçin Wire.write((247+i)); // I2C İletimini Durdur Wire.endTransmission(); // 1 bayt veri iste Wire.requestFrom(Addr, 1); // 8 bayt veri oku if(Wire.available() == 1) { data = Wire.read(); } } // Basınç ve sıcaklık verilerini 19 bit uzunluğunda dönüştürün adc_p = (((long)(data[0] & 0xFF) * 65536) + ((long)(data[1] & 0xFF) * 256) + (uzun)(veri[2] & 0xF0)) / 16; uzun adc_t = (((uzun)(veri[3] ve 0xFF) * 65536) + ((uzun)(veri[4] ve 0xFF) * 256) + (uzun)(veri[5] ve 0xF0)) / 16; // Nem verilerini dönüştürün long adc_h = ((long)(data[6] & 0xFF) * 256 + (long)(data[7] & 0xFF)); // Sıcaklık ofset hesaplamaları 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 = (uzun)(var1 + var2); double cTemp = (var1 + var2) / 5120.0; çift fTemp = cTemp * 1.8 + 32; // Basınç ofset hesaplamaları var1 = ((double)t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((çift)dig_P6) / 32768.0; var2 = var2 + var1 * ((çift)dig_P5) * 2.0; var2 = (var2 / 4.0) + (((double)dig_P4) * 65536.0); var1 = (((çift) dig_P3) * var1 * var1 / 524288.0 + ((çift) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((çift)dig_P1); çift p = 1048576,0 - (çift)adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((çift) dig_P9) * p * p / 2147483648.0; var2 = p * ((çift) dig_P8) / 32768.0; çift basınç = (p + (var1 + var2 + ((double)dig_P7)) / 16.0) / 100; // Nem ofset hesaplamaları 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))); çift nem = var_H * (1.0 - dig_H1 * var_H / 524288.0); if(nem> 100.0) { nem = 100.0; } else if(nem < 0.0) { nem = 0.0; } // Verileri panoya çıkar Particle.publish("Santigrat cinsinden Sıcaklık: ", String(cTemp)); Particle.publish("Sıcaklık Fahrenhayt Olarak: ", String(fTemp)); Particle.publish("Basınç: ", String(basınç)); Particle.publish("Bağıl Nem: ", String(nem)); gecikme(1000); }

Adım 5: Uygulamalar:

Uygulamalar
Uygulamalar

BME280 sıcaklık, basınç ve bağıl nem sensörü, sıcaklık izleme, bilgisayar çevresel termal koruma, endüstride basınç izleme gibi çeşitli endüstriyel uygulamalara sahiptir. Bu sensörü ayrıca hava durumu istasyonu uygulamalarının yanı sıra sera izleme sisteminde de kullandık.

Diğer uygulamalar şunları içerebilir:

  1. Bağlam farkındalığı, ör. cilt algılama, oda değişikliği algılama.
  2. Fitness izleme / sağlık - Kuruluk veya yüksek sıcaklıklarla ilgili uyarı.
  3. Hacim ve hava akışı ölçümü.
  4. Ev otomasyon kontrolü.
  5. Kontrol ısıtma, havalandırma, klima (HVAC).
  6. Nesnelerin interneti.
  7. GPS geliştirmesi (örneğin, ilk düzeltmeye kadar geçen süre iyileştirmesi, ölü hesaplama, eğim algılama).
  8. İç mekan navigasyonu (kat değişimi algılama, asansör algılama).
  9. Açık navigasyon, eğlence ve spor uygulamaları.
  10. Hava Durumu tahmini.
  11. Dikey hız göstergesi (yükselme/alçalma hızı)..

6. Adım: Video Eğitimi

Arayüz oluşturma ve projeyi tamamlamanın tüm adımlarını gözden geçirmek için eğitim videomuzu izleyin.

Diğer sensörlerin arayüzleri ve çalışan blogları için bizi izlemeye devam edin.

Önerilen: