산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

BMP280:온도, 기압 및 고도 측정

구성품 및 소모품

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

이 프로젝트 정보

안녕하세요. BMP280을 사용하여 Arduino UNO 보드와 OLED 디스플레이를 사용하여 온도, 압력 및 고도를 측정하는 이 튜토리얼에 오신 것을 환영합니다. 다음은 데이터시트의 BMP280 주요 매개변수 중 일부입니다.

그래서 이 프로젝트에서 모듈을 사용하여 평소와 같이 미터법 및 영국식 시스템 모두에서 이러한 모든 항목을 측정할 것입니다. 단위에 대해서는 잘 모르겠지만 항상 코드를 통해 변환할 수 있습니다. 다음은 우리가 할 구성 요소입니다. 사용:

테스트 및 문제 해결:

모듈을 배선한 후 아래 그림과 같이 모듈이 감지되지 않으면 이름이 "BMP280test"인 라이브러리 예제의 코드를 테스트하는 것이 좋습니다.

i²c 스캐너 코드를 실행할 수 있습니다(그러나 LCD 또는 OLED와 같은 다른 i²c 장치는 분리). 모듈이 손상되지 않았거나 납땜 문제가 없으면 스캐너에서 장치를 감지한 것을 볼 수 있습니다. :

이제 주소를 확인하고 라이브러리 C++ 파일로 이동합니다. 라이브러리는 일반적으로 "Documents/Arduino/Libraries"에 설치됩니다.

그리고 적절한 편집기로 엽니다. 저는 Dev C++를 사용하고 있습니다.

그런 다음 "41" 줄로 이동하고 _i2caddr에서 "a"를 직렬 모니터에서 찾은 주소로 변경합니다.

모두 저장하고 닫습니다. 라이브러리는 i²c 주소가 0x77이지만 내가 사용하는 모듈은 0x76인 모듈과 함께 작동하도록 되어 있습니다.

테스트 코드를 다시 실행하십시오.

테스트 사진:

도움이 되었기를 바라며 문제가 있으면 댓글로 남겨주세요.

<섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

코드

<울>
  • bmp280_Serial_metric.ino
  • bmp280_Serial_Imperial.ino
  • bmp280_OLED_m.ino
  • bmp280_OLED_US.ino
  • bmp280_Serial_metric.ino아두이노
    /* 이 코드는 Adafruit BMP280(Metric)과 함께 사용합니다. * 온도와 기압을 모두 측정하여 Serial 모니터에 고도와 함께 표시합니다. * Adafruit 예제 코드를 수정한 버전입니다. * www.surtrtech 참조 .com 또는 SurtrTech 유튜브 채널 */#include Adafruit_BMP280 bmp; // I2C Interfacevoid setup() { Serial.begin(9600); Serial.println(F("BMP280 테스트")); if (!bmp.begin()) { Serial.println(F("유효한 BMP280 센서를 찾을 수 없습니다. 배선을 확인하십시오!")); 동안 (1); } /* 데이터시트의 기본 설정. */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* 작동 모드. */ Adafruit_BMP280::SAMPLING_X2, /* 온도 오버샘플링 */ Adafruit_BMP280::SAMPLING_X16, /* 압력 오버샘플링 */ Adafruit:_BFIL */ Adafruit_BMP280::STANDBY_MS_500); /* 대기 시간. */} 무효 루프() { Serial.print(F("온도 =")); Serial.print(bmp.readTemperature()); Serial.println(" *C"); Serial.print(F("압력 =")); Serial.print(bmp.readPressure()/100); //압력을 hPa로 표시하면 단위를 변경할 수 있습니다. Serial.println(" hPa"); Serial.print(F("대략 고도 =")); Serial.print(bmp.readAltitude(1019.66)); // "1019.66"은 해당 지역의 하루 해수면 기압(hPa)입니다. Serial.println(" m"); //모르는 경우 현재 고도를 얻을 때까지 수정합니다. Serial.println(); 지연(2000);}
    bmp280_Serial_Imperial.ino아두이노
    /* 이 코드는 Adafruit BMP280(Imperial)과 함께 사용합니다. * 온도와 기압을 모두 측정하여 고도와 함께 직렬 모니터에 표시합니다. * Adafruit 예제 코드의 수정된 버전입니다. * www.surtrtech 참조 .com 또는 SurtrTech 유튜브 채널 */#include Adafruit_BMP280 bmp; // I2Cvoid setup() { Serial.begin(9600); Serial.println(F("BMP280 테스트")); if (!bmp.begin()) { Serial.println(F("유효한 BMP280 센서를 찾을 수 없습니다. 배선을 확인하십시오!")); 동안 (1); } /* 데이터시트의 기본 설정. */ bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* 작동 모드. */ Adafruit_BMP280::SAMPLING_X2, /* 온도 오버샘플링 */ Adafruit_BMP280::SAMPLING_X16, /* 압력 오버샘플링 */ Adafruit:_BFIL */ Adafruit_BMP280::STANDBY_MS_500); /* 대기 시간. */} 무효 루프() { float f =bmp.readTemperature()*9/5 + 32; //C에서 F로 변환 Serial.print(F("Temperature =")); Serial.print(f); Serial.println(" *F"); float P =bmp.readPressure()/3386.39; //압력을 수은 인치로 표시하면 단위를 변경할 수 있습니다. Serial.print(F("Pressure =")); Serial.print(P); Serial.println("inHg"); float A =bmp.readAltitude(1019.66)*3.28084; // "1019.66"은 해당 지역의 하루 해수면 기압(hPa)입니다. Serial.print(F("Approx 고도 =")); //모르면 현재 고도를 얻을 때까지 수정합니다. Serial.print(A); Serial.println("피트"); 직렬.println(); 지연(2000);}
    bmp280_OLED_m.ino아두이노
    /* 이 코드는 Adafruit BMP280 및 OLED 화면(Metric)과 함께 사용하는 코드입니다. * 온도와 압력을 모두 측정하여 고도와 함께 OLED 디스플레이에 표시합니다. * Adafruit 예제 코드의 수정된 버전입니다. * 참조 www.surtrtech.com 또는 SurtrTech Youtube 채널 */#include  //OLED 및 BMP280용 라이브러리#include #include #define SCREEN_WIDTH 128 // OLED 디스플레이 너비, 픽셀 단위#define SCREEN_HEIGHT 32 // OLED 디스플레이 높이, 픽셀 단위#define OLED_RESET -1 // 핀 번호 재설정(또는 Arduino 재설정 핀을 공유하는 경우 -1) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //표시명 선언(display)Adafruit_BMP280 bmp;void setup() { bmp.begin(); //bmp를 시작합니다. display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //OLED 디스플레이 시작 display.clearDisplay(); 디스플레이.디스플레이(); display.setTextColor(흰색); display.setTextSize(1); display.print("SurtrTech"); //이름을 표시합니다. 제거하거나 바꿀 수 있습니다. display.setCursor(32,12); display.setTextSize(2); display.println("BMP280"); 디스플레이.디스플레이(); 지연(2000);} 무효 루프() { display.clearDisplay(); float T =bmp.readTemperature(); //C에서 온도 읽기 float P =bmp.readPressure()/100; // 압력을 Pa 단위로 읽고 hPa로 변환 float A =bmp.readAltitude(1019.66); //고도를 계산할 때 "1019.66"은 해당 지역의 낮에 해수면 기압(hPa)입니다. //모르는 경우 해당 장소의 고도를 얻을 때까지 수정하면 됩니다. display.setCursor(0 ,0); //Oled 디스플레이, 원하는 디스플레이를 얻기 위해 텍스트 크기와 커서로 재생 display.setTextColor(WHITE); display.setTextSize(2); display.print("온도"); 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("프레스"); display.setCursor(65,10); display.print(P); display.setCursor(110,10); display.print("hPa"); display.setCursor(65,25); display.print("알트"); display.setCursor(90,25); display.print(A,0); display.setCursor(110,25); display.print("m"); 디스플레이.디스플레이(); 지연(2000);}
    bmp280_OLED_US.ino아두이노
    /* 이 코드는 Adafruit BMP280 및 OLED 화면(Imperial)과 함께 사용하기 위한 코드입니다. * 온도와 기압을 모두 측정하여 고도와 함께 OLED 디스플레이에 표시합니다. * Adafruit 예제 코드의 수정된 버전입니다. * 참조 www.surtrtech.com 또는 SurtrTech Youtube 채널 */ #include  //OLED 및 BMP280용 라이브러리#include #include #define SCREEN_WIDTH 128 // OLED 디스플레이 너비, 픽셀 단위#define SCREEN_HEIGHT 32 // OLED 디스플레이 높이, 픽셀 단위#define OLED_RESET -1 // 핀 번호 재설정(또는 Arduino 재설정 핀을 공유하는 경우 -1) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); //표시명 선언(display)Adafruit_BMP280 bmp;void setup() { bmp.begin(); //bmp를 시작합니다. display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //OLED 디스플레이 시작 display.clearDisplay(); 디스플레이.디스플레이(); display.setTextColor(흰색); display.setTextSize(1); display.print("SurtrTech"); //이름을 표시합니다. 제거하거나 바꿀 수 있습니다. display.setCursor(32,12); display.setTextSize(2); display.println("BMP280"); 디스플레이.디스플레이(); 지연(2000);} 무효 루프() { display.clearDisplay(); float T =bmp.readTemperature()*9/5 + 32; //C에서 온도를 읽고 F로 변환 float P =bmp.readPressure()/3386.39; // 압력을 Pa 단위로 읽고 수은 인치 단위로 변환 float A =bmp.readAltitude(1019.66)*3.28084; //고도를 계산할 때 "1019.66"은 해당 지역의 낮에 해수면에서 기압(hPa)입니다. //모르는 경우 해당 장소의 고도를 얻을 때까지 수정하면 됩니다. display.setCursor(0 ,0); //Oled 디스플레이, 원하는 디스플레이를 얻기 위해 텍스트 크기와 커서로 재생 display.setTextColor(WHITE); display.setTextSize(2); display.print("온도"); 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("누르세요"); display.setCursor(65,10); display.print(P); display.setCursor(100,10); display.print("inHg"); display.setCursor(65,25); display.print("알트"); display.setCursor(90,25); display.print(A,0); display.setCursor(110,25); display.print("피트"); 디스플레이.디스플레이(); 지연(2000);}
    BMP280_Adafruit_library
    튜토리얼https://github.com/adafruit/Adafruit_BMP280_Library에서와 같이 변경할 수 있습니다.
    Adafruit GFX 라이브러리
    https://github.com/adafruit/Adafruit-GFX-Library
    아다프루트 SSD1306
    https://github.com/adafruit/Adafruit_SSD1306

    회로도

    두 모듈 모두 i²c 인터페이스, A4 및 A5가 있는 SDA/SCL을 사용하고 BMP280은 5v로 전원을 공급받는 반면 OLED는 3.3v를 사용합니다.

    제조공정

    1. QR, RFID 및 온도 확인을 통한 출입 통제
    2. 1선 DS18B20 센서와 Raspberry Pi로 온도 측정
    3. Python 및 Raspberry Pi 온도 센서
    4. Raspberry Pi의 간편한 온도 및 습도
    5. DIY:HomeBrew의 온도 모니터링 및 규정
    6. BMP085 온도 및 압력을 읽는 라즈베리 파이
    7. 실험실 및 과학 프로젝트를 위한 온도 측정
    8. Raspberry Pi 온도 및 광 센서
    9. 아날로그 센서가 있는 기압 측정 장치
    10. 온도 및 습도 데이터 로거