Përmbajtje:

Lagështia, Presioni dhe Llogaritja e Temperaturës duke Përdorur BME280 dhe Ndërfaqja me Foton .: 6 Hapa
Lagështia, Presioni dhe Llogaritja e Temperaturës duke Përdorur BME280 dhe Ndërfaqja me Foton .: 6 Hapa

Video: Lagështia, Presioni dhe Llogaritja e Temperaturës duke Përdorur BME280 dhe Ndërfaqja me Foton .: 6 Hapa

Video: Lagështia, Presioni dhe Llogaritja e Temperaturës duke Përdorur BME280 dhe Ndërfaqja me Foton .: 6 Hapa
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Nëntor
Anonim
Lagështia, Presioni dhe Llogaritja e Temperaturës duke Përdorur BME280 dhe Ndërfaqja e Fotonit
Lagështia, Presioni dhe Llogaritja e Temperaturës duke Përdorur BME280 dhe Ndërfaqja e Fotonit

Ne hasim në projekte të ndryshme të cilat kërkojnë monitorimin e temperaturës, presionit dhe lagështisë. Kështu ne kuptojmë se këta parametra në fakt luajnë një rol jetësor për të pasur një vlerësim të efikasitetit të punës të një sistemi në kushte të ndryshme atmosferike. Si në nivelin industrial ashtu edhe në sistemet personale, një temperaturë, lagështi dhe nivel presioni barometrik është i nevojshëm për performancën e duhur të sistemit.

Kjo është arsyeja pse ne ofrojmë një mësim të plotë mbi këtë sensor, në këtë tutorial ne do të shpjegojmë funksionimin e sensorit të lagështisë, presionit dhe temperaturës BME280 me foton grimcë.

Hapi 1: Eksplorimi BME280

BME280 Eksplorimi
BME280 Eksplorimi

Sektori elektronik ka rritur lojën e tyre me sensorin BME280, një sensor mjedisor me temperaturë, presion barometrik dhe lagështi! Ky sensor është i shkëlqyeshëm për të gjitha llojet e motit/mjedisit dhe madje mund të përdoret në I2C.

Ky sensor i saktësisë BME280 është zgjidhja më e mirë ndijuese për matjen e lagështisë me saktësi ± 3%, presion barometrik me saktësi ± 1 hPa absolute dhe temperaturë me saktësi ± 1.0 ° C. Për shkak se presioni ndryshon me lartësinë dhe matjet e presionit janë aq të mira, ju gjithashtu mund ta përdorni atë si një lartësimatës me meter 1 metër ose saktësi më të mirë! Sensori i temperaturës është optimizuar për zhurmën më të ulët dhe rezolucionin më të lartë dhe përdoret për kompensimin e temperaturës së sensori i presionit dhe gjithashtu mund të përdoret për vlerësimin e temperaturës së ambientit. Matjet me BME280 mund të kryhen nga përdoruesi ose të kryhen në intervale të rregullta.

Fleta e të dhënave: Klikoni për të parë ose shkarkuar fletën e të dhënave të sensorit BME280.

Hapi 2: Lista e Kërkesave të Harduerit

Lista e Kërkesave të Harduerit
Lista e Kërkesave të Harduerit

Ne përdorëm plotësisht Pjesët e Dyqaneve Dcube sepse ato janë të lehta për t'u përdorur, dhe diçka për gjithçka që përshtatet bukur në një rrjet centimetri vërtet na bën të ecim përpara. Ju mund të përdorni gjithçka që dëshironi, por diagrami i instalimeve elektrike do të supozojë se po përdorni këto pjesë.

  • BME280 Sensor I²C Mini Moduli
  • Mburoja I²C për fotonin e grimcave
  • Fotoni i grimcave
  • Kabllo I²C
  • Përshtatës energjie

Hapi 3: Ndërfaqja

Ndërlidhja
Ndërlidhja

Seksioni i ndërfaqes në thelb shpjegon lidhjet e telave të kërkuara midis sensorit dhe fotonit të grimcave. Sigurimi i lidhjeve të sakta është nevoja themelore gjatë punës në çdo sistem për daljen e dëshiruar. Pra, lidhjet e nevojshme janë si më poshtë:

BME280 do të funksionojë mbi I2C. Këtu është shembulli i diagramit të instalimeve elektrike, duke demonstruar se si të lidhni secilën ndërfaqe të sensorit. Jashtë kutisë, bordi është i konfiguruar për një ndërfaqe I2C, kështu që ne rekomandojmë që ta përdorni këtë ndërfaqe nëse jeni ndryshe agnostik. Gjithçka që ju nevojitet janë katër tela! Vetëm katër lidhje kërkohen kunjat Vcc, Gnd, SCL dhe SDA dhe këto janë të lidhura me ndihmën e kabllit I2C. Këto lidhje demonstrohen në fotot e mësipërme.

Hapi 4: Kodi i Monitorimit të Temperaturës, Presionit dhe Lagështisë

Kodi i Monitorimit të Temperaturës, Presionit dhe Lagështisë
Kodi i Monitorimit të Temperaturës, Presionit dhe Lagështisë
Kodi i Monitorimit të Temperaturës, Presionit dhe Lagështisë
Kodi i Monitorimit të Temperaturës, Presionit dhe Lagështisë

Versioni i pastër i kodit që do të përdorim për ta ekzekutuar këtë është në dispozicion KETU.

Ndërsa përdorim modulin e sensorit me Arduino, ne përfshijmë bibliotekën application.h dhe spark_wiring_i2c.h. Biblioteka "application.h" dhe spark_wiring_i2c.h përmban funksione të cilat lehtësojnë komunikimin i2c midis sensorit dhe grimcës.

Klikoni KERTU për të hapur faqen në internet për monitorimin e pajisjes

Ngarko kodin në tabelën tënde dhe ai duhet të fillojë të punojë! Të gjitha të dhënat mund të merren në faqen në internet siç tregohet në foto.

Kodi jepet më poshtë:

// Shpërndarë me një licencë me vullnet të lirë.// Përdoreni atë në çdo mënyrë që dëshironi, fitimprurëse ose falas, me kusht që të përshtatet në licencat e veprave të tij shoqëruese. // BME280 // Ky kod është krijuar për të punuar me Mini Modulin BME280_I2CS I2C i disponueshëm nga ControlEverything.com. #include #include // BME280 I2C adresa është 0x76 (108) #define Addr 0x76 double cTemp = 0, fTemp = 0, presion = 0, lagështi = 0; void setup () {// Cakto ndryshoren Particle.variable ("i2cdevice", "BME280"); artikull.i ndryshueshëm ("cTemp", cTemp); Particle.variable ("fTemp", fTemp); Grimca. E ndryshueshme ("presion", presion); Grimca. E ndryshueshme ("lagështia", lagështia); // Filloni komunikimin I2C si MASTER Wire.filloni (); // Initialize Komunikimi Serial, i vendosur norma baud = 9600 Serial.fill (9600); vonesë (300); } void loop () {pa shenjë int b1 [24]; të dhëna int të panënshkruara [8]; int dig_H1 = 0; për (int i = 0; i <24; i ++) {// Fillo Telin e Transmetimit I2C.beginTransmission (Addr); // Zgjidh regjistrin e të dhënave Wire.write ((136+i)); // Ndalo I2C Transmetimi Wire.endTransmission (); // Kërkoni 1 bajt të dhënash Wire.requestFrom (Addr, 1); // Lexoni 24 bajt të dhëna nëse (Wire.available () == 1) {b1 = Wire.read (); }} // Shndërroni të dhënat // koeficientët 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); // koeficientët e presionit 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); për (int i = 0; i <7; i ++) {// Start I2C Transmission Wire.beginTransmission (Addr); // Zgjidh regjistrin e të dhënave Wire.write ((225+i)); // Ndalo I2C Transmetimi Wire.endTransmission (); // Kërko 1 bajt të dhënash Wire.requestFrom (Addr, 1); // Lexoni 7 bajt të dhëna nëse (Wire.available () == 1) {b1 = Wire.read (); }} // Shndërroni të dhënat // koeficientët e lagështisë 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]; // Fillo I2C Transmetimi Wire.beginTransmission (Addr); // Zgjidh regjistrin e të dhënave Wire.write (161); // Ndalo I2C Transmetimi Wire.endTransmission (); // Kërkoni 1 bajt të dhënash Wire.requestFrom (Addr, 1); // Lexoni 1 bajt të dhëna nëse (Wire.available () == 1) {dig_H1 = Wire.read (); } // Fillo I2C Transmetimi Wire.beginTransmission (Addr); // Zgjidhni regjistrin e kontrollit të lagështisë Wire.write (0xF2); // Lagështia mbi normën e marrjes së mostrave = 1 Wire.write (0x01); // Ndalo I2C Transmetimi Wire.endTransmission (); // Fillo I2C Transmetimi Wire.beginTransmission (Addr); // Zgjidh regjistrin e matjes së kontrollit Wire.write (0xF4); // Mënyra normale, temperatura dhe presioni mbi normën e marrjes së mostrave = 1 Wire.write (0x27); // Ndalo I2C Transmetimi Wire.endTransmission (); // Fillo I2C Transmetimi Wire.beginTransmission (Addr); // Zgjidh regjistrin e konfigurimit Wire.write (0xF5); // Koha e gatishmërisë = 1000ms Wire.write (0xA0); // Ndalo I2C Transmetimi Wire.endTransmission (); për (int i = 0; i <8; i ++) {// Fillo Telin e Transmetimit I2C.filloTransmetimin (Addr); // Zgjidh regjistrin e të dhënave Wire.write ((247+i)); // Ndalo I2C Transmetimi Wire.endTransmission (); // Kërkoni 1 bajt të dhënash Wire.requestFrom (Addr, 1); // Lexoni 8 bajt të dhëna nëse (Wire.available () == 1) {data = Wire.read (); }} // Shndërroni të dhënat e presionit dhe temperaturës në 19-bit të gjata adc_p = (((e gjatë) (të dhëna [0] & 0xFF) * 65536) + ((e gjatë) (të dhëna [1] & 0xFF) * 256) + (gjatë) (të dhëna [2] & 0xF0)) / 16; e gjatë adc_t = (((e gjatë) (të dhëna [3] & 0xFF) * 65536) + ((e gjatë) (të dhëna [4] & 0xFF) * 256) + (e gjatë) (të dhëna [5] & 0xF0)) / 16; // Shndërroni të dhënat e lagështisë gjatë adc_h = ((e gjatë) (të dhëna [6] & 0xFF) * 256 + (e gjatë) (të dhëna [7] & 0xFF)); // Llogaritjet e kompensimit të temperaturës dyfish var1 = (((dyfish) adc_t) / 16384.0 - ((dyfish) dig_T1) / 1024.0) * ((dyfish) dig_T2); dyfish var2 = ((((dyfish) adc_t) / 131072.0 - ((dyfish) dig_T1) / 8192.0) * (((dyfish) adc_t) /131072.0 - ((dyfish) dig_T1) /8192.0)) * ((dyfish) dig_T3); dyfish t_fine = (e gjatë) (var1 + var2); cTemp dyfishtë = (var1 + var2) / 5120.0; dyshe fTemp = cTemp * 1.8 + 32; // Llogaritjet e kompensimit të presionit var1 = ((dyfish) t_fine / 2.0) - 64000.0; var2 = var1 * var1 * ((dyfish) dig_P6) / 32768.0; var2 = var2 + var1 * ((dyfish) dig_P5) * 2.0; var2 = (var2 / 4.0) + (((dyfish) dig_P4) * 65536.0); var1 = (((dyfish) dig_P3) * var1 * var1 / 524288.0 + ((dyfish) dig_P2) * var1) / 524288.0; var1 = (1.0 + var1 / 32768.0) * ((dyfish) dig_P1); dyshe p = 1048576.0 - (dyfish) adc_p; p = (p - (var2 / 4096.0)) * 6250.0 / var1; var1 = ((dyfish) dig_P9) * p * p / 2147483648.0; var2 = p * ((dyfish) dig_P8) / 32768.0; presion i dyfishtë = (p + (var1 + var2 + ((dyfish) dig_P7)) / 16.0) / 100; // Llogaritjet e kompensimit të lagështisë dyfish var_H = (((dyfish) 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))); lagështi e dyfishtë = var_H * (1.0 - dig_H1 * var_H / 524288.0); nëse (lagështia> 100.0) {lagështia = 100.0; } tjetër nëse (lagështia <0.0) {lagështia = 0.0; } // Dalja e të dhënave në pultin Particle.publish ("Temperatura në Celsius:", String (cTemp)); Particle.publish ("Temperatura në Fahrenheit:", String (fTemp)); Particle.publish ("Presioni:", String (presion)); Particle.publish ("Lagështia relative:", String (lagështia)); vonesa (1000); }

Hapi 5: Aplikimet:

Aplikimet
Aplikimet

Sensori i temperaturës, presionit dhe lagështisë relative BME280 ka aplikime të ndryshme industriale si monitorimi i temperaturës, mbrojtja termike kompjuterike, monitorimi i presionit në industri. Ne gjithashtu e kemi përdorur këtë sensor në aplikimet e stacioneve të motit, si dhe sistemin e monitorimit të serrës.

Aplikime të tjera mund të përfshijnë:

  1. Vetëdija për kontekstin, p.sh. zbulimi i lëkurës, zbulimi i ndryshimit të dhomës.
  2. Monitorimi / mirëqenia e fitnesit - Paralajmërim në lidhje me thatësinë ose temperaturat e larta.
  3. Matja e vëllimit dhe rrjedhës së ajrit.
  4. Kontrolli i automatizimit të shtëpisë.
  5. Kontrolloni ngrohjen, ventilimin, ajrin e kondicionuar (HVAC).
  6. Interneti i gjërave.
  7. Përmirësimi i GPS (p.sh. përmirësimi i rregullimit të kohës së parë, llogaritja e vdekjeve, zbulimi i pjerrësisë).
  8. Navigimi i brendshëm (ndryshimi i zbulimit të dyshemesë, zbulimi i ashensorit).
  9. Lundrim në natyrë, aplikacione të kohës së lirë dhe sportive.
  10. Parashikimi i Motit.
  11. Treguesi vertikal i shpejtësisë (shpejtësia e ngritjes/zhytjes)..

Hapi 6: Video Tutorial

Shikoni mësimin tonë video për të kaluar nëpër të gjitha hapat në ndërlidhjen dhe përfundimin e projektit.

Qëndroni të sintonizuar për bloget e ndërlidhjes dhe funksionimit të sensorëve të tjerë.

Recommended: