Агуулгын хүснэгт:

Чийгшил, даралт ба температурыг BME280 ба фотоны интерфэйсийг ашиглан тооцоолох: 6 алхам
Чийгшил, даралт ба температурыг BME280 ба фотоны интерфэйсийг ашиглан тооцоолох: 6 алхам

Видео: Чийгшил, даралт ба температурыг BME280 ба фотоны интерфэйсийг ашиглан тооцоолох: 6 алхам

Видео: Чийгшил, даралт ба температурыг BME280 ба фотоны интерфэйсийг ашиглан тооцоолох: 6 алхам
Видео: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Долдугаар сарын
Anonim
Чийгшил, даралт ба температурын тооцоо BME280 ба фотоны интерфэйсийг ашиглана
Чийгшил, даралт ба температурын тооцоо BME280 ба фотоны интерфэйсийг ашиглана

Бид температур, даралт, чийгшлийн хяналтыг шаарддаг янз бүрийн төслүүдтэй тулгардаг. Эдгээр параметрүүд нь янз бүрийн агаар мандлын нөхцөлд системийн ажиллах үр ашгийг үнэлэхэд чухал үүрэг гүйцэтгэдэг гэдгийг бид ойлгож байна. Үйлдвэрлэлийн түвшинд болон хувийн системийн аль алинд нь температур, чийгшил, барометрийн даралтын хамгийн оновчтой түвшин нь системийн зохистой ажиллагааг хангахад шаардлагатай байдаг.

Ийм учраас бид энэ мэдрэгчийн талаархи бүрэн хичээлийг өгч байгаа бөгөөд энэ хичээлээр бид BME280 -ийн чийг, даралт, температур мэдрэгчийн бөөмийн фотонтой хэрхэн ажиллахыг тайлбарлах болно.

Алхам 1: BME280 хайгуул

BME280 хайгуул
BME280 хайгуул

Цахим салбар нь температур, барометрийн даралт, чийгшил бүхий хүрээлэн буй орчны мэдрэгч BME280 мэдрэгч ашиглан тоглоомоо эрчимжүүлэв. Энэхүү мэдрэгч нь бүх төрлийн цаг агаар/хүрээлэн буй орчны мэдрэгчийн хувьд маш сайн бөгөөд I2C -д ч ашиглаж болно.

Энэхүү нарийвчлалтай BME280 мэдрэгч нь чийгийг ± 3% нарийвчлалтай, барометрийн даралтыг ± 1 гПа үнэмлэхүй нарийвчлалтай, температурыг ± 1.0 ° C нарийвчлалтай хэмжих хамгийн сайн мэдрэгч юм. Даралт нь өндрөөс хамааран өөрчлөгдөж, даралтын хэмжилт нь маш сайн байдаг тул та үүнийг ± 1 метр ба түүнээс дээш нарийвчлалтай өндөр хэмжигч болгон ашиглаж болно! даралт мэдрэгч ба орчны температурыг тооцоолоход ашиглаж болно. BME280 -ийн хэмжилтийг хэрэглэгч өөрөө хийх эсвэл тогтмол хугацаанд хийж болно.

Мэдээллийн хуудас: BME280 мэдрэгчийн мэдээллийн хуудсыг үзэх эсвэл татаж авахын тулд дарна уу.

Алхам 2: Тоног төхөөрөмжийн шаардлага жагсаалт

Тоног төхөөрөмжийн шаардлага жагсаалт
Тоног төхөөрөмжийн шаардлага жагсаалт

Бид Dcube дэлгүүрийн эд ангиудыг бүхэлд нь ашигласан, учир нь тэдгээр нь ашиглахад хялбар бөгөөд сантиметр сүлжээнд сайн таарсан бүх зүйл биднийг үнэхээр урагшлуулдаг. Та хүссэн зүйлээ ашиглаж болно, гэхдээ утас диаграм нь эдгээр хэсгүүдийг ашиглаж байна гэж үзэх болно.

  • BME280 мэдрэгч I²C мини модуль
  • Бөөмийн фотоны I²C бамбай
  • Бөөмийн фотон
  • I²C кабель
  • Цахилгаан адаптер

Алхам 3: Интерфейс хийх

Харилцаа холбоо
Харилцаа холбоо

Холболтын хэсэг нь үндсэндээ мэдрэгч ба фотон бөөмийн хооронд шаардлагатай утас холболтыг тайлбарладаг. Аливаа систем дээр ажиллахад шаардлагатай гаралтын хувьд зөв холболтыг хангах нь хамгийн чухал зүйл юм. Тиймээс шаардлагатай холболтууд дараах байдалтай байна.

BME280 нь I2C дээр ажиллах болно. Мэдрэгчийн интерфэйс бүрийг хэрхэн яаж холбохыг харуулсан утасны диаграмын жишээ энд байна. Хайрцагнаас гадуурх самбар нь I2C интерфэйс дээр тохируулагдсан тул хэрэв та өөр ойлголтгүй бол энэ интерфэйсийг ашиглахыг зөвлөж байна. Танд ердөө дөрвөн утас л хангалттай! Vcc, Gnd, SCL, SDA зүүг зөвхөн дөрвөн холболт шаарддаг бөгөөд эдгээр нь I2C кабелийн тусламжтайгаар холбогддог. Эдгээр холболтыг дээрх зурган дээр харуулав.

Алхам 4: Температур, даралт, чийгшлийн хяналтын код

Температур, даралт, чийгшлийн хяналтын код
Температур, даралт, чийгшлийн хяналтын код
Температур, даралт, чийгшлийн хяналтын код
Температур, даралт, чийгшлийн хяналтын код

Үүнийг ажиллуулахын тулд бидний ашиглах кодын цэвэр хувилбар ЭНД байна.

Arduino -той мэдрэгчийн модулийг ашиглахдаа application.h болон spark_wiring_i2c.h номын санг агуулдаг. "application.h" болон spark_wiring_i2c.h номын сан нь мэдрэгч ба бөөмийн хооронд i2c холболтыг хөнгөвчлөх функцуудыг агуулдаг.

Төхөөрөмжийг хянах вэб хуудсыг ЭНД дарж нээнэ үү

Кодыг самбартаа оруулаарай, энэ нь ажиллаж эхлэх ёстой! Зурагт үзүүлсэн шиг бүх өгөгдлийг вэб хуудаснаас авах боломжтой.

Кодыг доор үзүүлэв.

// Хүсэл зоригийн лицензээр тараагдсан болно. // BME280 // Энэхүү код нь ControlEverything.com дээрээс авах боломжтой BME280_I2CS I2C Mini модультай ажиллахад зориулагдсан болно. #include #include // BME280 I2C хаяг нь 0x76 (108) #Addr 0x76 давхар cTemp = 0, fTemp = 0, даралт = 0, чийгшил = 0; void setup () {// Particle.variable хувьсагчийг тохируулах ("i2cdevice", "BME280"); article.variable ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Бөөм.хувьсагч ("даралт", даралт); Бөөм.хувьсагч ("чийгшил", чийгшил); // I2C холболтыг MASTER Wire.begin () болгон эхлүүлэх; // Цуваа холболтыг эхлүүлэх, дамжуулах хурд = 9600 Serial.begin (9600); саатал (300); } void loop () {unsigned int b1 [24]; гарын үсэг зураагүй int өгөгдөл [8]; int dig_H1 = 0; for (int i = 0; i <24; i ++) {// I2C Transmission Wire -ийг эхлүүлэх.beginTransmission (Addr); // Wire.write мэдээллийн бүртгэлийг сонгох ((136+i)); // I2C Transmission Wire.endTransmission () -ийг зогсоох; // Wire.requestFrom -аас 1 байт өгөгдөл хүсэх (Addr, 1); // 24 байтын өгөгдлийг унших бол (Wire.available () == 1) {b1 = Wire.read (); }} // Өгөгдлийг хөрвүүлэх // 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); // даралтын коэффициент 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 ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Wire.write мэдээллийн бүртгэлийг сонгох ((225+i)); // I2C Transmission Wire.endTransmission () -ийг зогсоох; // Wire.requestFrom -аас 1 байт өгөгдөл хүсэх (Addr, 1); // 7 байтын өгөгдлийг унших бол (Wire.available () == 1) {b1 = Wire.read (); }} // Өгөгдлийг хөрвүүлэх // чийгшлийн коэффициент 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 дамжуулах утсыг эхлүүлэх.beginTransmission (Addr); // Wire.write мэдээллийн бүртгэлийг сонгох (161); // I2C Transmission Wire.endTransmission () -ийг зогсоох; // Wire.requestFrom -аас 1 байт өгөгдөл хүсэх (Addr, 1); // 1 байтын өгөгдлийг унших бол (Wire.available () == 1) {dig_H1 = Wire.read (); } // I2C Transmission Wire -ийг эхлүүлэх.beginTransmission (Addr); // Хяналтын чийгшлийн бүртгэлийг сонгох Wire.write (0xF2); // Дээж авах түвшнээс дээш чийгшил = 1 Wire.write (0x01); // I2C Transmission Wire.endTransmission () -ийг зогсоох; // I2C дамжуулах утсыг эхлүүлэх.beginTransmission (Addr); // Wire.write (0xF4) хяналтын хэмжилтийн бүртгэлийг сонгох; // Хэвийн горим, түүвэрлэлтийн хурд дээрх температур ба даралт = 1 Wire.write (0x27); // I2C Transmission Wire.endTransmission () -ийг зогсоох; // I2C дамжуулах утсыг эхлүүлэх.beginTransmission (Addr); // Wire.write (0xF5) тохиргооны бүртгэлийг сонгоно уу; // Stand_by time = 1000ms Wire.write (0xA0); // I2C Transmission Wire.endTransmission () -ийг зогсоох; for (int i = 0; i <8; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Wire.write мэдээллийн бүртгэлийг сонгох ((247+i)); // I2C Transmission Wire.endTransmission () -ийг зогсоох; // Wire.requestFrom -аас 1 байт өгөгдөл хүсэх (Addr, 1); // 8 байтын өгөгдлийг унших бол (Wire.available () == 1) {data = Wire.read (); }} // Даралт ба температурын өгөгдлийг 19 бит урт болгон хөрвүүлэх adc_p = (((урт) (өгөгдөл [0] & 0xFF) * 65536) + ((урт) (өгөгдөл [1] & 0xFF) * 256) + (урт) (өгөгдөл [2] & 0xF0)) / 16; урт adc_t = (((урт) (өгөгдөл [3] & 0xFF) * 65536) + ((урт) (өгөгдөл [4] & 0xFF) * 256) + (урт) (өгөгдөл [5] & 0xF0)) / 16; // Чийгийн өгөгдлийг урт болгон хөрвүүлэх adc_h = ((урт) (өгөгдөл [6] & 0xFF) * 256 + (урт) (өгөгдөл [7] & 0xFF)); // Температурын офсет тооцоо давхар var1 = (((давхар) adc_t) / 16384.0 - ((давхар) dig_T1) / 1024.0) * ((давхар) dig_T2); давхар var2 = ((((давхар) adc_t) / 131072.0 - ((давхар) dig_T1) / 8192.0) * (((давхар) adc_t) /131072.0 - ((давхар) dig_T1) /8192.0)) * ((давхар) dig_T3); давхар t_fine = (урт) (var1 + var2); давхар cTemp = (var1 + var2) / 5120.0; давхар fTemp = cTemp * 1.8 + 32; // Даралтын офсет тооцоо var1 = ((давхар) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((давхар) dig_P6) / 32768.0; var2 = var2 + var1 * ((давхар) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((давхар) dig_P4) * 65536.0); var1 = (((давхар) dig_P3) * var1 * var1 / 524288.0 + ((давхар) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((давхар) dig_P1); давхар p = 1048576.0 - (давхар) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((давхар) dig_P9) * p * p / 2147483648.0; var2 = p * ((давхар) dig_P8) / 32768.0; давхар даралт = (p + (var1 + var2 + ((давхар) dig_P7)) / 16.0) / 100; // Агаарын чийгшлийн тооцоо давхар var_H = (((давхар) 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))); давхар чийгшил = var_H * (1.0 - dig_H1 * var_H / 524288.0); if (чийгшил> 100.0) {чийгшил = 100.0; } if if (чийгшил <0.0) {чийгшил = 0.0; } // Мэдээллийн самбарт Particle.publish руу өгөгдөл гаргана ("Цельсийн температур:", String (cTemp)); Particle.publish ("Фаренгейт дэх температур:", String (fTemp)); Particle.publish ("Даралт:", Мөр (даралт)); Particle.publish ("Харьцангуй чийгшил:", Мөр (чийгшил)); саатал (1000); }

Алхам 5: Өргөдөл:

Хэрэглээ
Хэрэглээ

BME280 температур, даралт, харьцангуй чийгшил мэдрэгч нь температурын хяналт, компьютерийн захын дулааны хамгаалалт, үйлдвэрлэлийн даралтын хяналт гэх мэт үйлдвэрлэлийн янз бүрийн хэрэглээтэй. Бид мөн энэ мэдрэгчийг цаг уурын станцын хэрэглээ, хүлэмжийн хяналтын системд ашигласан.

Бусад аппликешнд дараахь зүйлийг багтааж болно.

  1. Контекстийн мэдлэг, жишээ нь. арьс илрүүлэх, өрөөний өөрчлөлтийг илрүүлэх.
  2. Чийрэгжүүлэх хяналт / сайн сайхан байдал - Хуурайшилт эсвэл өндөр температуртай холбоотой анхааруулга.
  3. Эзлэхүүн ба агаарын урсгалыг хэмжих.
  4. Гэрийн автоматжуулалтын хяналт.
  5. Халаалт, агааржуулалт, агааржуулагч (HVAC) -ийг хянах.
  6. Эд зүйлсийн интернет.
  7. GPS-ийн сайжруулалт (жишээлбэл, засварыг цаг тухайд нь хийх, үхлийн тооцоо, налууг илрүүлэх гэх мэт).
  8. Дотоод навигаци (шалны илрүүлэлтийг өөрчлөх, цахилгаан шатны илрүүлэлт).
  9. Гадна навигаци, чөлөөт цаг, спортын хэрэглээ.
  10. Цаг агаарын урьдчилсан мэдээ.
  11. Босоо хурдны үзүүлэлт (өсөлт/живэх хурд)..

Алхам 6: Видео заавар

Төслийг холбох, дуусгах бүх үе шатыг даван туулахын тулд манай видео хичээлийг үзээрэй.

Бусад мэдрэгчийн интерфэйс болон ажиллаж буй блогуудыг анхааралтай ажиглаарай.

Зөвлөмж болгож буй: