ESP32 개발보드에서 온도 및 기압 센서 BMP280 사용하기

ESP32 개발보드에서 온도 및 기압 센서 BMP280 사용하기

1. BMP 280 대기압 센서

BMP280은 디지털 방식으로 대기압과, 온도 정보를 함께 측정 가능한 센서 칩으로, 크기가 다음과 같이 2×2.5mm의 작은 크기를 갖는다.

크기는 작으나 성능은 아주 우수해서, 압력의 경우 사용 방식에 따라 대략 0.16Pa의 해상도를 가지며(참고 = 대기압은 약 101325 Pa에 해당), 온도의 경우 섭씨 0.01도의 측정 해상도를 가진다고 한다.

그러나 실제로는 이렇게 칩단위로 사용하기보다는 다음과 같이 크기가 11mm x 13mm 정도의 소형 모듈로 판매되는데, 가격도 2-3천 원 정도로 저렴하고, 통신 방식도 I2C 방식으로 사용에 편리하다.

이러한 BMP280 모듈은 다음과 같은 수준의 정밀도를 가진다고 한다. (0.12~1hPa = 0.12~1 mbar의 정확도) ​

​​

2. ESP32 개발 보드에 적용

납땜이 된 센서의 핀들을 ESP 개발 보드에 다음과 같이 연결하여 회로를 구성했다.

ESP32개발 보드의 핀맵을 참조하여, ​ I2C의 SDA(흰색 선)를 GP21에, I2C의 SCL(노란색 선)을 GP21에 연결했고, 3.3V(보라색 선)와 GND 배선(회색 선)을 연결했다.

그리고, Github에서 “BMP280″과, “python” 키워드로 검색하여 관련 라이브러리를 찾아 이중 다음 라이브러리 파일을 선택했다. ​

​​

선택한 항목으로 들어가 BMP280 라이브러리를 찾아 Thonny IDE로 내용을 복사한 후, ESP32 보드에 동일한 이름으로 미리 저장해 두었다. ​

여기에 해당 라이브러리 파일을 첨부해 둔다.

첨부파일

bmp280.py

파일 다운로드

그리고, 다음과 같은 간단한 코드로, 이 센서의 측정값을 읽어 보았다.

from machine import Pin,I2C
import utime
from bmp280 import *

sda = Pin(21)
scl = Pin(22)

i2c = I2C(0,scl=scl,sda=sda,freq=200000)
bmp = BMP280(i2c)
bmp.use_case(BMP280_CASE_INDOOR)
while True:  
    temp=bmp.temperature
    p_Pa=bmp.pressure          #압력 기본 측정 단위는 Pascal
    
    p_bar=p_Pa/100000          
    p_atm=p_bar/1.013         
    p_mmHg=p_atm*760           
    p_psi=p_atm*14.7
print("Temperature Celcius : " , round(temp, 2))
print("Pressure            : " , round(p_Pa,2), "Pa  (" , round(p_bar,2),"bar", round(p_atm,2),"atm",round(p_psi,2),"psi )" )
print("")
    utime.sleep(2)

​여기서 좀 설명할 부분은 이 BMP280 센서 모듈은 측정하는 압력의 기본 단위가 Pascal(Pa)이고, 각자 자신에게 익숙한 압력단위로 변환할 필요가 있는데, 주요 압력 단위의 환산식은 다음 부분을 참조하면 된다.

이 프로그램을 실행 시 화면 출력 모습은 다음과 같다.