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

BMP280:Mengukur Suhu, Tekanan, dan Ketinggian

Komponen dan persediaan

Arduino UNO
× 1
Adafruit BMP280
× 1
Adafruit OLED 128x32 i2c
× 1

Tentang proyek ini

Halo, dan selamat datang di 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 lembar datanya:

Jadi untuk proyek ini, kita akan menggunakan modul untuk mengukur semua hal ini dalam sistem metrik dan imperial seperti biasa, saya tidak begitu yakin tentang unitnya tetapi Anda selalu dapat mengonversinya melalui kode, dan berikut adalah komponen yang akan kita gunakan:

Pengujian dan Pemecahan Masalah:

Setelah memasang modul Anda, lebih baik untuk menguji kode dari perpustakaan contoh namanya "BMP280test", jika modul Anda tidak terdeteksi seperti pada gambar di bawah ini:

Anda dapat menjalankan kode pemindai i²c (Tetapi lepaskan perangkat i²c lainnya seperti LCD atau OLED), dan jika modul Anda tidak rusak, atau tidak ada masalah solder, Anda akan melihat bahwa perangkat tersebut terdeteksi oleh pemindai :

Sekarang perhatikan alamat itu dan buka file c++ perpustakaan Anda, perpustakaan biasanya diinstal di "Documents/Arduino/Libraries":

Dan buka dengan editor yang tepat, saya menggunakan Dev c++

Kemudian masuk ke baris “41” dan _i2caddr ubah “a” dengan alamat yang Anda temukan di monitor serial:

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

Jalankan kode tes lagi:

Gambar percobaan:

Saya harap ini berhasil untuk Anda, dan jika Anda memiliki masalah, tinggalkan di komentar.

Kode

  • bmp280_Serial_metric.ino
  • bmp280_Serial_Imperial.ino
  • bmp280_OLED_m.ino
  • bmp280_OLED_US.ino
bmp280_Serial_metric.inoArduino
/* Kode ini digunakan dengan Adafruit BMP280 (Metrik) * Ini mengukur suhu dan tekanan dan menampilkannya di monitor Serial dengan ketinggian * Ini adalah versi modifikasi dari kode contoh Adafruit * Lihat www.surtrtech .com atau saluran Youtube SurtrTech */#include Adafruit_BMP280 bmp; // I2C Interfacevoid setup() { Serial.begin(9600); Serial.println(F("Uji BMP280")); if (!bmp.begin()) { Serial.println(F("Could not find a valid BMP280 sensor, check wiring!")); sementara (1); } /* Pengaturan default dari lembar data. */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Mode Operasi. */ Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */ Adafruit_BMP280::SAMPLING_X16, /* Tekanan oversampling */ Adafruit_BMP280::FILTER_X16, /*FILTER_X16 */ Adafruit_BMP280::STANDBY_MS_500); /* Waktu siaga. */}void loop() { Serial.print(F("Suhu =")); Serial.print(bmp.readTemperature()); Serial.println("*C"); Serial.print(F("Tekanan =")); Serial.print(bmp.readPressure()/100); //menampilkan Tekanan dalam hPa, Anda dapat mengubah unit Serial.println(" hPa"); Serial.print(F("Perkiraan ketinggian =")); Serial.print(bmp.readAltitude(1019.66)); //"1019.66" adalah tekanan(hPa) di permukaan laut dalam sehari di wilayah Anda Serial.println(" m"); //Jika Anda tidak mengetahuinya, ubah sampai Anda mendapatkan ketinggian Anda saat ini Serial.println(); delay(2000);}
bmp280_Serial_Imperial.inoArduino
/* Kode ini digunakan dengan Adafruit BMP280 (Imperial) * Ini mengukur suhu dan tekanan dan menampilkannya di monitor Serial dengan ketinggian * Ini adalah versi modifikasi dari kode contoh Adafruit * Lihat www.surtrtech .com atau saluran Youtube SurtrTech */#include Adafruit_BMP280 bmp; // setup I2Cvoid() { Serial.begin(9600); Serial.println(F("Uji BMP280")); if (!bmp.begin()) { Serial.println(F("Could not find a valid BMP280 sensor, check wiring!")); sementara (1); } /* Pengaturan default dari lembar data. */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Mode Operasi. */ Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */ Adafruit_BMP280::SAMPLING_X16, /* Tekanan oversampling */ Adafruit_BMP280::FILTER_X16, /*FILTER_X16 */ Adafruit_BMP280::STANDBY_MS_500); /* Waktu siaga. */}void loop() { float f =bmp.readTemperature()*9/5 + 32; //Konversi dari C ke F Serial.print(F("Suhu =")); Serial.print(f); Serial.println("*F"); float P =bmp.readPressure()/3386.39; //menampilkan Tekanan dalam inci air raksa, Anda dapat mengubah satuan Serial.print(F("Pressure =")); Serial.print(P); Serial.println("inHg"); float A =bmp.readAltitude(1019.66)*3.28084; //"1019.66" adalah tekanan(hPa) di permukaan laut dalam sehari di wilayah Anda Serial.print(F("Perkiraan ketinggian =")); //Jika Anda tidak mengetahuinya, ubahlah sampai Anda mendapatkan ketinggian Anda saat ini Serial.print(A); Serial.println("kaki"); Serial.println(); delay(2000);}
bmp280_OLED_m.inoArduino
/* Kode ini digunakan dengan Adafruit BMP280 dan layar OLED (Metrik) * Ini mengukur suhu dan tekanan dan menampilkannya pada layar OLED dengan ketinggian * Ini adalah versi modifikasi dari kode contoh Adafruit * Lihat www.surtrtech.com atau saluran Youtube SurtrTech */#include  //Libraries untuk OLED dan BMP280#include #include #define SCREEN_WIDTH 128 // lebar layar OLED, dalam piksel#tentukan SCREEN_HEIGHT 32 // tinggi tampilan OLED, dalam piksel#tentukan OLED_RESET -1 // Setel ulang pin # (atau -1 jika berbagi pin reset Arduino)Tampilan Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Kawat, OLED_RESET); //Mendeklarasikan nama tampilan (display)Adafruit_BMP280 bmp;void setup() { bmp.begin(); //Mulai tampilan bmp.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Mulai tampilan tampilan OLED.clearDisplay(); tampilan.display(); display.setTextColor(PUTIH); tampilan.setTextSize(1); display.print("SurtrTech"); //Tampilkan namanya, Anda dapat menghapusnya atau menggantinya display.setCursor(32,12); display.setTextSize(2); display.println("BMP280"); tampilan.display(); delay(2000);}void loop() { display.clearDisplay(); float T =bmp.readTemperature(); //Membaca suhu dalam C float P =bmp.readPressure()/100; //Baca Tekanan dalam Pa dan konversi ke hPa float A =bmp.readAltitude(1019.66); //Menghitung Ketinggian, "1019,66" adalah tekanan dalam (hPa) di permukaan laut pada siang hari di wilayah Anda //Jika Anda tidak tahu, ubah saja sampai Anda mendapatkan ketinggian tempat Anda display.setCursor(0 ,0); // Tampilan Oled, cukup mainkan dengan ukuran teks dan kursor untuk mendapatkan tampilan yang Anda inginkan display.setTextColor(WHITE); display.setTextSize(2); display.print("Suhu"); display.setCursor(0,18); display.print(T,1); display.setCursor(50,17); tampilan.setTextSize(1); tampilan.print("C"); tampilan.setTextSize(1); display.setCursor(65,0); display.print("Tekan"); display.setCursor(65,10); tampilan.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"); tampilan.display(); delay(2000);}
bmp280_OLED_US.inoArduino
/* Kode ini digunakan dengan Adafruit BMP280 dan layar OLED (Imperial) * Ini mengukur suhu dan tekanan dan menampilkannya pada layar OLED dengan ketinggian * Ini adalah versi modifikasi dari kode contoh Adafruit * Lihat www.surtrtech.com atau saluran Youtube SurtrTech */ #include  //Libraries untuk OLED dan BMP280#include #include #define SCREEN_WIDTH 128 // lebar layar OLED, dalam piksel#tentukan SCREEN_HEIGHT 32 // tinggi tampilan OLED, dalam piksel#tentukan OLED_RESET -1 // Setel ulang pin # (atau -1 jika berbagi pin reset Arduino)Tampilan Adafruit_SSD1306(SCREEN_WIDTH, SCREEN_HEIGHT, &Kawat, OLED_RESET); //Mendeklarasikan nama tampilan (display)Adafruit_BMP280 bmp;void setup() { bmp.begin(); //Mulai tampilan bmp.begin(SSD1306_SWITCHCAPVCC, 0x3C); //Mulai tampilan tampilan OLED.clearDisplay(); tampilan.display(); display.setTextColor(PUTIH); tampilan.setTextSize(1); display.print("SurtrTech"); //Tampilkan namanya, Anda dapat menghapusnya atau menggantinya display.setCursor(32,12); display.setTextSize(2); display.println("BMP280"); tampilan.display(); delay(2000);}void loop() { display.clearDisplay(); float T =bmp.readTemperature()*9/5 + 32; //Baca suhu dalam C dan konversi ke F float P =bmp.readPressure()/3386.39; //Baca Tekanan dalam Pa dan konversi ke inci pelampung merkuri A =bmp.readAltitude(1019.66)*3.28084; //Menghitung Ketinggian, "1019,66" adalah tekanan dalam(hPa) di permukaan laut pada siang hari di wilayah Anda //Jika Anda tidak tahu, ubah saja sampai Anda mendapatkan ketinggian tempat Anda display.setCursor(0 ,0); // Tampilan Oled, cukup mainkan dengan ukuran teks dan kursor untuk mendapatkan tampilan yang Anda inginkan display.setTextColor(WHITE); display.setTextSize(2); display.print("Suhu"); display.setCursor(0,18); display.print(T,1); display.setCursor(50,17); tampilan.setTextSize(1); display.print("F"); tampilan.setTextSize(1); display.setCursor(65,0); display.print("Tekan"); display.setCursor(65,10); tampilan.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("kaki"); tampilan.display(); delay(2000);}
BMP280_Adafruit_library
Anda mungkin ingin mengubah hal-hal seperti di tutorialhttps://github.com/adafruit/Adafruit_BMP280_Library
Perpustakaan Adafruit GFX
https://github.com/adafruit/Adafruit-GFX-Library
Adafruit SSD1306
https://github.com/adafruit/Adafruit_SSD1306

Skema

Kedua modul menggunakan antarmuka i²c, SDA/SCL dengan A4 dan A5, BMP280 ditenagai oleh 5v sedangkan OLED menggunakan 3.3v.

Proses manufaktur

  1. Kontrol akses dengan QR, RFID, dan verifikasi suhu
  2. Ukur suhu dengan sensor DS18B20 1-kawat dan Raspberry Pi
  3. Sensor Suhu Python dan Raspberry Pi
  4. Suhu dan Kelembaban yang Mudah di Raspberry Pi
  5. DIY:Pemantauan dan Pengaturan Suhu untuk HomeBrew
  6. Raspberry Pi membaca BMP085 Suhu &Tekanan
  7. Pengukuran Suhu untuk Proyek Lab dan Sains
  8. Sensor Suhu dan Cahaya Raspberry Pi
  9. Perangkat Pengukur Aliran Udara Tekanan dengan Sensor Analog
  10. Pencatat Data Suhu dan Kelembaban