Mục lục:

Tính toán độ ẩm, áp suất và nhiệt độ sử dụng BME280 và giao diện photon.: 6 bước
Tính toán độ ẩm, áp suất và nhiệt độ sử dụng BME280 và giao diện photon.: 6 bước

Video: Tính toán độ ẩm, áp suất và nhiệt độ sử dụng BME280 và giao diện photon.: 6 bước

Video: Tính toán độ ẩm, áp suất và nhiệt độ sử dụng BME280 và giao diện photon.: 6 bước
Video: Đo nhiệt độ, độ ẩm và áp suất sử dụng cảm BME280 ADAFRUIT 2024, Tháng bảy
Anonim
Tính toán độ ẩm, áp suất và nhiệt độ sử dụng BME280 và Photon Interfacing
Tính toán độ ẩm, áp suất và nhiệt độ sử dụng BME280 và Photon Interfacing

Chúng tôi đã thực hiện các dự án khác nhau yêu cầu giám sát nhiệt độ, áp suất và độ ẩm. Do đó, chúng tôi nhận thấy rằng những thông số này thực sự đóng một vai trò quan trọng trong việc ước tính hiệu quả làm việc của một hệ thống ở các điều kiện khí quyển khác nhau. Cả ở cấp độ công nghiệp và hệ thống cá nhân, mức nhiệt độ, độ ẩm và áp suất khí quyển tối ưu là điều kiện cần thiết để hệ thống hoạt động hiệu quả.

Đây là lý do tại sao chúng tôi cung cấp một hướng dẫn đầy đủ về cảm biến này, trong hướng dẫn này, chúng tôi sẽ giải thích hoạt động của cảm biến độ ẩm, áp suất và nhiệt độ BME280 với hạt photon.

Bước 1: Khám phá BME280

Khám phá BME280
Khám phá BME280

Lĩnh vực điện tử đã đẩy mạnh cuộc chơi của họ với cảm biến BME280, một cảm biến môi trường với nhiệt độ, áp suất khí quyển và độ ẩm! Cảm biến này rất tốt cho tất cả các loại cảm biến thời tiết / môi trường và thậm chí có thể được sử dụng trong I2C.

Cảm biến chính xác BME280 này là giải pháp cảm biến tốt nhất để đo độ ẩm với độ chính xác ± 3%, áp suất khí quyển với độ chính xác tuyệt đối ± 1 hPa và nhiệt độ với độ chính xác ± 1.0 ° C. Bởi vì áp suất thay đổi theo độ cao và các phép đo áp suất rất tốt, bạn cũng có thể sử dụng nó như một máy đo độ cao với độ chính xác ± 1 mét hoặc tốt hơn! Cảm biến nhiệt độ đã được tối ưu hóa cho độ ồn thấp nhất và độ phân giải cao nhất và được sử dụng để bù nhiệt độ cảm biến áp suất và cũng có thể được sử dụng để ước tính nhiệt độ môi trường xung quanh. Người dùng có thể thực hiện các phép đo với BME280 hoặc thực hiện trong các khoảng thời gian đều đặn.

Biểu dữ liệu: Nhấp để xem trước hoặc tải xuống biểu dữ liệu của cảm biến BME280.

Bước 2: Danh sách yêu cầu phần cứng

Danh sách yêu cầu phần cứng
Danh sách yêu cầu phần cứng

Chúng tôi đã sử dụng hoàn toàn các Bộ phận trong Cửa hàng Dcube vì chúng dễ sử dụng và điều gì đó về mọi thứ đều phù hợp đẹp mắt trên lưới centimet thực sự giúp chúng tôi thực hiện. Bạn có thể sử dụng bất cứ thứ gì bạn muốn, nhưng sơ đồ nối dây sẽ cho rằng bạn đang sử dụng các bộ phận này.

  • Bộ cảm biến BME280 Mô-đun nhỏ I²C
  • I²C Shield cho Photon hạt
  • Photon hạt
  • Cáp I²C
  • Bộ chuyển đổi điện

Bước 3: Giao diện

Giao diện
Giao diện

Phần giao diện về cơ bản giải thích các kết nối dây cần thiết giữa cảm biến và hạt photon. Đảm bảo các kết nối chính xác là điều cần thiết cơ bản trong khi làm việc trên bất kỳ hệ thống nào để có kết quả đầu ra mong muốn. Vì vậy, các kết nối cần thiết như sau:

BME280 sẽ hoạt động trên I2C. Đây là sơ đồ đấu dây ví dụ, minh họa cách đấu dây cho từng giao diện của cảm biến. Ngoài ra, bo mạch được định cấu hình cho giao diện I2C, vì vậy, chúng tôi khuyên bạn nên sử dụng giao diện này nếu bạn không có khả năng. Tất cả những gì bạn cần là bốn dây! Chỉ cần bốn kết nối là chân Vcc, Gnd, SCL và SDA và chúng được kết nối với sự trợ giúp của cáp I2C. Các kết nối này được thể hiện trong các hình trên.

Bước 4: Mã giám sát nhiệt độ, áp suất và độ ẩm

Mã giám sát nhiệt độ, áp suất và độ ẩm
Mã giám sát nhiệt độ, áp suất và độ ẩm
Mã giám sát nhiệt độ, áp suất và độ ẩm
Mã giám sát nhiệt độ, áp suất và độ ẩm

Phiên bản mã sạch mà chúng tôi sẽ sử dụng để chạy mã này có sẵn TẠI ĐÂY.

Trong khi sử dụng mô-đun cảm biến với Arduino, chúng tôi bao gồm thư viện application.h và spark_wiring_i2c.h. "application.h" và thư viện spark_wiring_i2c.h chứa các chức năng hỗ trợ giao tiếp i2c giữa cảm biến và hạt.

Nhấp vào ĐÂY để mở trang web giám sát thiết bị

Tải mã lên bảng của bạn và nó sẽ bắt đầu hoạt động! Tất cả dữ liệu có thể được lấy trên trang web như trong hình.

Mã được cung cấp bên dưới:

// Được phân phối với giấy phép tự do.// Sử dụng nó theo bất kỳ cách nào bạn muốn, lợi nhuận hoặc miễn phí, miễn là nó phù hợp với giấy phép của các tác phẩm liên quan. // BME280 // Mã này được thiết kế để hoạt động với Mô-đun Mini BME280_I2CS I2C có sẵn trên ControlEverything.com. #include #include // BME280 Địa chỉ I2C là 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, áp suất = 0, độ ẩm = 0; void setup () {// Đặt biến Particle.variable ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Particle.variable ("áp suất", áp suất); Particle.variable ("độ ẩm", độ ẩm); // Khởi tạo giao tiếp I2C dưới dạng MASTER Wire.begin (); // Khởi tạo Giao tiếp nối tiếp, đặt tốc độ truyền = 9600 Serial.begin (9600); chậm trễ (300); } void loop () {unsigned int b1 [24]; dữ liệu int không dấu [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// Khởi động I2C Transmission Wire.beginTransmission (Addr); // Chọn thanh ghi dữ liệu Wire.write ((136 + i)); // Dừng I2C Transmission Wire.endTransmission (); // Yêu cầu 1 byte dữ liệu Wire.requestFrom (Addr, 1); // Đọc 24 byte dữ liệu if (Wire.available () == 1) {b1 = Wire.read (); }} // Chuyển đổi dữ liệu // hệ số tạm thời 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); // hệ số áp suất 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 ++) {// Khởi động I2C Transmission Wire.beginTransmission (Addr); // Chọn thanh ghi dữ liệu Wire.write ((225 + i)); // Dừng I2C Transmission Wire.endTransmission (); // Yêu cầu 1 byte dữ liệu Wire.requestFrom (Addr, 1); // Đọc 7 byte dữ liệu if (Wire.available () == 1) {b1 = Wire.read (); }} // Chuyển đổi dữ liệu // hệ số độ ẩm 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]; // Khởi động I2C Transmission Wire.beginTransmission (Addr); // Chọn thanh ghi dữ liệu Wire.write (161); // Dừng I2C Transmission Wire.endTransmission (); // Yêu cầu 1 byte dữ liệu Wire.requestFrom (Addr, 1); // Đọc 1 byte dữ liệu if (Wire.available () == 1) {dig_H1 = Wire.read (); } // Khởi động I2C Transmission Wire.beginTransmission (Addr); // Chọn thanh ghi độ ẩm điều khiển Wire.write (0xF2); // Độ ẩm trên tỷ lệ lấy mẫu = 1 Wire.write (0x01); // Dừng I2C Transmission Wire.endTransmission (); // Khởi động I2C Transmission Wire.beginTransmission (Addr); // Chọn thanh ghi đo điều khiển Wire.write (0xF4); // Chế độ bình thường, nhiệt độ và áp suất trên tốc độ lấy mẫu = 1 Wire.write (0x27); // Dừng I2C Transmission Wire.endTransmission (); // Khởi động I2C Transmission Wire.beginTransmission (Addr); // Chọn thanh ghi config Wire.write (0xF5); // Thời gian chờ = 1000ms Wire.write (0xA0); // Dừng I2C Transmission Wire.endTransmission (); for (int i = 0; i <8; i ++) {// Khởi động I2C Transmission Wire.beginTransmission (Addr); // Chọn thanh ghi dữ liệu Wire.write ((247 + i)); // Dừng I2C Transmission Wire.endTransmission (); // Yêu cầu 1 byte dữ liệu Wire.requestFrom (Addr, 1); // Đọc 8 byte dữ liệu if (Wire.available () == 1) {data = Wire.read (); }} // Chuyển đổi dữ liệu áp suất và nhiệt độ thành dữ liệu dài 19 bit adc_p = (((dài) (dữ liệu [0] & 0xFF) * 65536) + ((dài) (dữ liệu [1] & 0xFF) * 256) + (long) (dữ liệu [2] & 0xF0)) / 16; long adc_t = (((long) (data [3] & 0xFF) * 65536) + ((long) (data [4] & 0xFF) * 256) + (long) (data [5] & 0xF0)) / 16; // Chuyển đổi dữ liệu độ ẩm long adc_h = ((long) (data [6] & 0xFF) * 256 + (long) (data [7] & 0xFF)); // Tính toán bù nhiệt độ 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 = (long) (var1 + var2); double cTemp = (var1 + var2) / 5120.0; double fTemp = cTemp * 1.8 + 32; // Tính toán bù áp 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) + (((kép) dig_P4) * 65536.0); var1 = (((double) dig_P3) * var1 * var1 / 524288.0 + ((double) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((kép) dig_P1); double p = 1048576.0 - (double) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((double) dig_P9) * p * p / 2147483648.0; var2 = p * ((double) dig_P8) / 32768.0; áp suất kép = (p + (var1 + var2 + ((double) dig_P7)) / 16.0) / 100; // Tính toán bù ẩm 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))); độ ẩm kép = var_H * (1.0 - dig_H1 * var_H / 524288.0); if (độ ẩm> 100.0) {độ ẩm = 100.0; } else if (độ ẩm <0,0) {độ ẩm = 0,0; } // Xuất dữ liệu ra dashboard Particle.publish ("Nhiệt độ tính bằng độ C:", String (cTemp)); Particle.publish ("Nhiệt độ tính bằng F:", String (fTemp)); Particle.publish ("Áp suất:", String (áp suất)); Particle.publish ("Độ ẩm Tương đối:", String (độ ẩm)); chậm trễ (1000); }

Bước 5: Ứng dụng:

Các ứng dụng
Các ứng dụng

Cảm biến nhiệt độ, áp suất và độ ẩm tương đối BME280 có các ứng dụng công nghiệp khác nhau như giám sát nhiệt độ, bảo vệ nhiệt ngoại vi máy tính, giám sát áp suất trong công nghiệp. Chúng tôi cũng đã sử dụng cảm biến này vào các ứng dụng trạm thời tiết cũng như hệ thống giám sát nhà kính.

Các ứng dụng khác có thể bao gồm:

  1. Nhận thức về ngữ cảnh, ví dụ: phát hiện da, phát hiện thay đổi phòng.
  2. Theo dõi thể chất / sức khỏe - Cảnh báo về tình trạng khô hoặc nhiệt độ cao.
  3. Đo thể tích và lưu lượng không khí.
  4. Điều khiển tự động hóa nhà.
  5. Kiểm soát hệ thống sưởi, thông gió, điều hòa không khí (HVAC).
  6. Internet vạn vật.
  7. Tăng cường GPS (ví dụ: cải thiện thời gian đến lần sửa đầu tiên, tính toán điểm chết, phát hiện độ dốc).
  8. Điều hướng trong nhà (thay đổi phát hiện tầng, phát hiện thang máy).
  9. Các ứng dụng điều hướng, giải trí và thể thao ngoài trời.
  10. Dự báo thời tiết.
  11. Chỉ báo vận tốc dọc (tốc độ tăng / chìm)..

Bước 6: Hướng dẫn bằng video

Xem video hướng dẫn của chúng tôi để thực hiện tất cả các bước trong giao diện và hoàn thành dự án.

Hãy theo dõi blog hoạt động và giao diện của cảm biến khác.

Đề xuất: