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 보드에 동일한 이름으로 미리 저장해 두었다.
여기에 해당 라이브러리 파일을 첨부해 둔다.
그리고, 다음과 같은 간단한 코드로, 이 센서의 측정값을 읽어 보았다.
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)이고, 각자 자신에게 익숙한 압력단위로 변환할 필요가 있는데, 주요 압력 단위의 환산식은 다음 부분을 참조하면 된다.
이 프로그램을 실행 시 화면 출력 모습은 다음과 같다.


