Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Komponen dan Perlengkapan

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO
Arduino UNO
×1
Adafruit BMP280
×1
Adafruit OLED 128x32 i2c
×1

Tentang Proyek Ini

Halo, dan selamat datang dalam tutorial ini di mana saya menggunakan BMP280 untuk mengukur suhu, tekanan, dan juga ketinggian, dengan bantuan papan Arduino UNO dan layar OLED. Berikut adalah beberapa parameter kunci BMP280 dari datasheet-nya:

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Untuk proyek ini, kita akan menggunakan modul untuk mengukur semua hal ini baik dalam sistem metrik maupun imperial. Saya tidak yakin tentang satuan yang digunakan, tetapi Anda selalu dapat mengonversinya melalui kode, dan berikut adalah komponen yang akan kita gunakan:

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO
Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO
Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Pengujian dan Pemecahan Masalah:

Setelah merangkai modul Anda, lebih baik untuk menguji kode dari contoh perpustakaan yang bernama “BMP280test”. Jika modul Anda tidak terdeteksi seperti dalam gambar di bawah ini:

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Anda dapat menjalankan kode i²c scanner (tetapi lepaskan perangkat i²c lain seperti LCD atau OLED). Jika modul Anda tidak rusak atau tidak ada masalah solder, Anda akan melihat bahwa perangkat terdeteksi oleh scanner:

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Catat alamat tersebut dan buka file C++ perpustakaan Anda. Perpustakaan biasanya terinstal di “Documents/Arduino/Libraries”:

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Bukalah dengan editor yang tepat, saya menggunakan Dev C++.

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Lalu pergi ke baris “41” dan ubah _i2caddr, ganti “a” dengan alamat yang Anda temukan di serial monitor:

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Simpan semua dan tutup. Perpustakaan dimaksudkan untuk bekerja dengan modul yang memiliki alamat i²c 0x77, tetapi yang saya gunakan memiliki 0x76.

Jalankan kembali kode pengujian:

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Gambar Hasil Pengujian:

Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO
Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Saya harap ini bermanfaat bagi Anda, dan jika Anda memiliki masalah, silakan tulis di komentar.

Kode

  • bmp280_Serial_metric.ino
  • bmp280_Serial_Imperial.ino
  • bmp280_OLED_m.ino
  • bmp280_OLED_US.ino
bmp280_Serial_metric.inoArduino
/* This code is to use with Adafruit BMP280 (Metric) * It measures both temperature and pressure and it displays them on the Serial monitor with the altitude * It's a modified version of the Adafruit example code * Refer to www.surtrtech.com or SurtrTech Youtube channel */ #include <Adafruit_BMP280.h> Adafruit_BMP280 bmp; // I2C Interface void setup() { Serial.begin(9600); Serial.println(F("BMP280 test")); if (!bmp.begin()) { Serial.println(F("Could not find a valid BMP280 sensor, check wiring!")); while (1); } /* Default settings from datasheet. */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */ Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */ Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */ Adafruit_BMP280::FILTER_X16, /* Filtering. */ Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */ } void loop() { Serial.print(F("Temperature = ")); Serial.print(bmp.readTemperature()); Serial.println(" *C"); Serial.print(F("Pressure = ")); Serial.print(bmp.readPressure()/100); //displaying the Pressure in hPa, you can change the unit Serial.println(" hPa"); Serial.print(F("Approx altitude = ")); Serial.print(bmp.readAltitude(1019.66)); //The "1019.66" is the pressure(hPa) at sea level in day in your region Serial.println(" m"); //If you don't know it, modify it until you get your current altitude Serial.println(); delay(2000); } 
bmp280_Serial_Imperial.inoArduino
/* This code is to use with Adafruit BMP280 (Imperial) * It measures both temperature and pressure and it displays them on the Serial monitor with the altitude * It's a modified version of the Adafruit example code * Refer to www.surtrtech.com or SurtrTech Youtube channel */ #include <Adafruit_BMP280.h> Adafruit_BMP280 bmp; // I2C void setup() { Serial.begin(9600); Serial.println(F("BMP280 test")); if (!bmp.begin()) { Serial.println(F("Could not find a valid BMP280 sensor, check wiring!")); while (1); } /* Default settings from datasheet. */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */ Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */ Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */ Adafruit_BMP280::FILTER_X16, /* Filtering. */ Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */ } void loop() { float f = bmp.readTemperature()*9/5 + 32 ; //Conversion from C to F Serial.print(F("Temperature = ")); Serial.print(f); Serial.println(" *F"); float P = bmp.readPressure()/3386.39; //displaying the Pressure in inches of mercury, you can change the unit Serial.print(F("Pressure = ")); Serial.print(P); Serial.println(" inHg"); float A = bmp.readAltitude(1019.66)*3.28084; //The "1019.66" is the pressure(hPa) at sea level in day in your region Serial.print(F("Approx altitude = ")); //If you don't know it, modify it until you get your current altitude Serial.print(A); Serial.println(" ft"); Serial.println(); delay(2000); } 
bmp280_OLED_m.inoArduino
/* This code is to use with Adafruit BMP280 and OLED screen (Metric) * It measures both temperature and pressure and it displays them on the OLED display with the altitude * It's a modified version of the Adafruit example code * Refer to www.surtrtech.com or SurtrTech Youtube channel */ #include <Adafruit_GFX.h> //Libraries for the OLED and BMP280 #include <Adafruit_SSD1306.h> #include <Adafruit_BMP280.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 32 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //Declaring the display name (display) Adafruit_BMP280 bmp; void setup() { bmp.begin(); //Start the bmp display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Start the OLED display display.clearDisplay(); display.display(); display.setTextColor(WHITE); display.setTextSize(1); display.print("SurtrTech"); //Show the name, you can remove it or replace it display.setCursor(32,12); display.setTextSize(2); display.println("BMP280"); display.display(); delay(2000); } void loop() { display.clearDisplay(); float T = bmp.readTemperature(); //Read temperature in C float P = bmp.readPressure()/100; //Read Pressure in Pa and conversion to hPa float A = bmp.readAltitude(1019.66); //Calculating the Altitude, the "1019.66" is the pressure in (hPa) at sea level at day in your region //If you don't know it just modify it until you get the altitude of your place display.setCursor(0,0); //Oled display, just playing with text size and cursor to get the display you want display.setTextColor(WHITE); display.setTextSize(2); display.print("Temp"); display.setCursor(0,18); display.print(T,1); display.setCursor(50,17); display.setTextSize(1); display.print("C"); display.setTextSize(1); display.setCursor(65,0); display.print("Pres"); display.setCursor(65,10); display.print(P); display.setCursor(110,10); display.print("hPa"); display.setCursor(65,25); display.print("Alt"); display.setCursor(90,25); display.print(A,0); display.setCursor(110,25); display.print("m"); display.display(); delay(2000); } 
bmp280_OLED_US.inoArduino
/* This code is to use with Adafruit BMP280 and OLED screen (Imperial) * It measures both temperature and pressure and it displays them on the OLED display with the altitude * It's a modified version of the Adafruit example code * Refer to www.surtrtech.com or SurtrTech Youtube channel */ #include <Adafruit_GFX.h> //Libraries for the OLED and BMP280 #include <Adafruit_SSD1306.h> #include <Adafruit_BMP280.h> #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 32 // OLED display height, in pixels #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //Declaring the display name (display) Adafruit_BMP280 bmp; void setup() { bmp.begin(); //Start the bmp display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Start the OLED display display.clearDisplay(); display.display(); display.setTextColor(WHITE); display.setTextSize(1); display.print("SurtrTech"); //Show the name, you can remove it or replace it display.setCursor(32,12); display.setTextSize(2); display.println("BMP280"); display.display(); delay(2000); } void loop() { display.clearDisplay(); float T = bmp.readTemperature()*9/5 + 32; //Read temperature in C and conversion to F float P = bmp.readPressure()/3386.39; //Read Pressure in Pa and conversion to inches of mercury float A = bmp.readAltitude(1019.66)*3.28084; //Calculating the Altitude, the "1019.66" is the pressure in(hPa) at sea level at day in your region //If you don't know it just modify it until you get the altitude of your place display.setCursor(0,0); //Oled display, just playing with text size and cursor to get the display you want display.setTextColor(WHITE); display.setTextSize(2); display.print("Temp"); display.setCursor(0,18); display.print(T,1); display.setCursor(50,17); display.setTextSize(1); display.print("F"); display.setTextSize(1); display.setCursor(65,0); display.print("Pres"); display.setCursor(65,10); display.print(P); display.setCursor(100,10); display.print("inHg"); display.setCursor(65,25); display.print("Alt"); display.setCursor(90,25); display.print(A,0); display.setCursor(110,25); display.print("ft"); display.display(); delay(2000); } 
BMP280_Adafruit_library
Anda mungkin ingin mengubah hal-hal seperti dalam tutorialhttps://github.com/adafruit/Adafruit_BMP280_Library
Adafruit GFX library
https://github.com/adafruit/Adafruit-GFX-Library
Adafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306

Skematis

Kedua modul menggunakan antarmuka i²c, SDA/SCL dengan A4 dan A5, BMP280 dipancarkan oleh 5v sementara OLED menggunakan 3.3v.Pengukuran Suhu, Tekanan, dan Ketinggian yang Akurat dengan BMP280 dan Arduino UNO

Proses manufaktur

  1. Sistem Kontrol Akses Terintegrasi QR, RFID, dan Verifikasi Suhu
  2. Menghubungkan Beberapa Sensor DS18B20 1-Wire ke Raspberry Pi untuk Pemantauan Suhu yang Akurat
  3. Membuat Sensor Suhu Jarak Jauh dengan Raspberry Pi dan Python – Panduan Langkah demi Langkah
  4. Pemantauan Suhu & Kelembaban Mulus di Raspberry Pi dengan EzTemp
  5. Kontrol Suhu Homebrew DIY: Pantau & Atur dengan Arduino
  6. Raspberry Pi BMP085: Pembacaan Suhu & Tekanan Akurat melalui I2C
  7. Pengukuran dan Pencatatan Termokopel Presisi untuk Eksperimen Laboratorium dan Sains
  8. Bangun Sistem Pemantauan Suhu & Cahaya Multi-Sensor dengan Raspberry Pi & DS18B20
  9. Alat Pengukur Tekanan & Aliran Udara Presisi dengan Sensor Analog
  10. Pencatat Suhu & Kelembaban Arduino dengan DHT11 dan Ethernet Shield